在这里,我尝试在部署在两个单独的虚拟机中的两个 JavaEE 应用程序之间启动远程 ejb 调用,当我从主 JavaEE 应用程序启动远程 ejb 查找时,辅助服务器的控制台日志中将出现以下错误跟踪。
[err] Exception in thread "Yoko:ThreadPerRequest:Dispatcher"
[err] java.lang.NoClassDefFoundError: Could not initialize class org.apache.yoko.orb.OB.SendingContextRuntimes
[err] at org.apache.yoko.orb.OB.CollocatedServer.send(CollocatedServer.java:231)
[err] at org.apache.yoko.orb.OB.CollocatedServer.sendReceive(CollocatedServer.java:295)
[err] at org.apache.yoko.orb.OB.CollocatedClient.sendReceive(CollocatedClient.java:144)
[err] at org.apache.yoko.orb.OB.Downcall.request(Downcall.java:300)
[err] at org.apache.yoko.orb.OB.DowncallStub.invoke(DowncallStub.java:615)
[err] at org.apache.yoko.orb.CORBA.Delegate.invoke(Delegate.java:403)
[err] at org.apache.yoko.orb.CORBA.Delegate.is_a(Delegate.java:252)
[err] at org.omg.CORBA.portable.ObjectImpl._is_a(ObjectImpl.java:54)
[err] at org.omg.CosNaming.NamingContextHelper.narrow(NamingContextHelper.java:68)
[err] at org.apache.yoko.orb.CosNaming.tnaming2.NamingContextImpl$POAServant.resolveObject(NamingContextImpl.java:291)
[err] at org.apache.yoko.orb.CosNaming.tnaming2.NamingContextBase.resolveContext(NamingContextBase.java:567)
[err] at org.apache.yoko.orb.CosNaming.tnaming2.NamingContextBase.resolve(NamingContextBase.java:266)
[err] at org.omg.CosNaming.NamingContextExtPOA._invoke(NamingContextExtPOA.java:366)
[err] at org.apache.yoko.orb.OBPortableServer.ServantDispatcher.dispatch(ServantDispatcher.java:189)
[err] at org.apache.yoko.orb.OBPortableServer.POA_impl._OB_dispatch(POA_impl.java:1245)
[err] at org.apache.yoko.orb.OB.DispatchRequest_impl.invoke(DispatchRequest_impl.java:56)
[err] at org.apache.yoko.orb.OB.DispatchThreadPerRequest_impl$Dispatcher.run(DispatchStrategyFactory_impl.java:70)
[err] Caused by: java.lang.ExceptionInInitializerError: Exception java.lang.ExceptionInInitializerError [in thread "Default Executor-thread-19"]
[err] at org.apache.yoko.rmi.impl.TypeRepository.get(TypeRepository.java:260)
[err] at org.apache.yoko.rmi.impl.ValueHandlerImpl.<init>(ValueHandlerImpl.java:62)
[err] at org.apache.yoko.rmi.impl.ValueHandlerImpl.<init>(ValueHandlerImpl.java:52)
[err] at org.apache.yoko.rmi.impl.ValueHandlerImpl$HandlerHolder.<clinit>(ValueHandlerImpl.java:67)
[err] at org.apache.yoko.rmi.impl.ValueHandlerImpl.get(ValueHandlerImpl.java:73)
[err] at org.apache.yoko.rmi.impl.UtilImpl.createValueHandler(UtilImpl.java:460)
[err] at javax.rmi.CORBA.Util.createValueHandler(Util.java:63)
[err] at org.apache.yoko.orb.OB.SendingContextRuntimes.<clinit>(SendingContextRuntimes.java:30)
[err] at org.apache.yoko.orb.OB.CollocatedServer.send(CollocatedServer.java:231)
[err] at org.apache.yoko.orb.OB.CollocatedServer.sendReceive(CollocatedServer.java:295)
[err] at org.apache.yoko.orb.OB.CollocatedClient.sendReceive(CollocatedClient.java:144)
[err] at org.apache.yoko.orb.OB.Downcall.request(Downcall.java:300)
[err] at org.apache.yoko.orb.OB.DowncallStub.invoke(DowncallStub.java:615)
[err] at org.apache.yoko.orb.CORBA.Delegate.invoke(Delegate.java:403)
[err] at org.omg.CORBA.portable.ObjectImpl._invoke(ObjectImpl.java:81)
[err] at com.ibm.ws.threading.internal.PolicyTaskFutureImpl.run(PolicyTaskFutureImpl.java:762)
[err] at com.ibm.ws.threading.internal.PolicyExecutorImpl.runTask(PolicyExecutorImpl.java:1172)
[err] at com.ibm.ws.threading.internal.PolicyExecutorImpl$GlobalPoolTask.run(PolicyExecutorImpl.java:198)
[err] at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
[err] at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
[err] at java.base/java.lang.Thread.run(Thread.java:833)
请注意,两个 JavaEE 应用程序都部署在 JDK 17 运行时中,远程 ejb 查找将按如下方式执行,
Context ctx = new InitialContext(jndiProps);
Object remoteObj = ctx.lookup("corbaname:iiop:10.0.0.127:2809/NameService#ejb/global/app_server_2/RMS.jar/OMSCoreServicesBean#com.dfn.oms.newgen.core.tx.service.OMSCoreServicesWrapperRemote");
return (OMSCoreServicesWrapperRemote) PortableRemoteObject.narrow(remoteObj, OMSCoreServicesWrapperRemote.class);
有人可以建议解决这个问题的方法吗?
这可能是 Java 17 中模块访问的问题。
logs/ffdc
文件夹?如果我们可以找出一些缺失的模块访问权限,我们可以将其添加到您的服务器本地。