目标是:
以上是我无法取代的限制。
当前有效的 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。
有关如何继续解决此问题的任何建议。
Oracle 要求第三方介入,但没有人介入(据我所知)。