从 Java 1.8 迁移到 Java 11,使用 IIOP Corba 给出“Corba 没有权限”

问题描述 投票:0回答:1

目标是:

  • 将客户端(portlet)代码从 Java 1.8 移动到 Java 11 - 请参阅下面的测试用例。
  • Server Payara 5 在 java 11 上运行,但会话 Beans 在 Java 1.8 中编译。
  • 通过 IIOP:Corba 进行通信。

以上是我无法取代的限制。

当前有效的 Java 1.8 代码(针对在 Java 11 上运行的 Payara 5):

Context ctx = new InitialContext();
String jndiName = "corbaname:iiop:127.0.0.1:3700#java:global/Portal/Portalejb/PortalService!se.services.portal.PortalServiceHome";
PortalServiceHome home = (PortalServiceHome)ctx.lookup(jndiName);
PortalService ps = home.create();

使用 Java 11 测试失败的代码(针对在 Java 11 上运行的 Payara):

Properties props = new Properties();
props.setProperty("java.naming.factory.initial", "com.sun.enterprise.naming.SerialInitContextFactory");
props.setProperty("java.naming.factory.url.pkgs", "com.sun.enterprise.naming");
props.setProperty("java.naming.factory.state", "com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl");
props.setProperty("org.omg.CORBA.ORBInitialHost", "localhost");
props.setProperty("org.omg.CORBA.ORBInitialPort", "3700");
props.setProperty("org.omg.CORBA.ORBClass", "com.sun.corba.ee.impl.orb.ORBImpl");
Context ctx = new InitialContext(props);
String jndiName = "java:global/Portal/Portalejb/PortalService!se.services.portal.PortalServiceHome";
PortalServiceHome home = (PortalServiceHome)ctx.lookup(jndiName);
PortalService ps = home.create();

查找 Home 接口有效,但在创建时失败:

java.rmi.AccessException: CORBA NO_PERMISSION 0 No; nested exception is: 
org.omg.CORBA.NO_PERMISSION: ----------BEGIN server-side stack trace----------
org.omg.CORBA.NO_PERMISSION:   vmcid: 0x0  minor code: 0  completed: No
at com.sun.enterprise.iiop.security.SecServerRequestInterceptor.handle_null_service_context(SecServerRequestInterceptor.java:441)
at com.sun.enterprise.iiop.security.SecServerRequestInterceptor.receive_request(SecServerRequestInterceptor.java:460)

两种情况下使用相同的会话 bean 和相同的 Payara 5。 由于 Java 11 中已经消失了几个 javax 函数,因此客户端中引入了新的库。新工件:glassfish-corba-omgapi、javaee-api 和 gf-client。

有关如何继续解决此问题的任何建议。

java portlet corba payara iiop
1个回答
1
投票

CORBA 已从 Java 11 中删除

Oracle 要求第三方介入,但没有人介入(据我所知)。

© www.soinside.com 2019 - 2024. All rights reserved.