访问远程 bean 时 CORBA 内部的异常

Posted

技术标签:

【中文标题】访问远程 bean 时 CORBA 内部的异常【英文标题】:Exception inside CORBA when accessing a remote bean 【发布时间】:2014-04-25 11:16:53 【问题描述】:

在带有 Glassfish 4.0 和 JDK 1.7_55 的 Windows Server 上,我得到 NoClassDefFoundError 和 ClassNotFoundException 然后调用远程 bean 方法。

StandardWrapperValve[action]: Servlet.service() for servlet action threw exception
java.lang.ClassNotFoundException: com.sun.corba.ee.impl.orb.ORBSingleton
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    ...
    at com.sun.corba.ee.impl.presentation.rmi.codegen.CodegenStubBase.invoke(CodegenStubBase.java:226)
    at dudge.ifaces.__SolutionRemote_Remote_DynamicStub.getSolutionEager(dudge/ifaces/__SolutionRemote_Remote_DynamicStub.java)
    at dudge.ifaces._SolutionRemote_Wrapper.getSolutionEager(dudge/ifaces/_SolutionRemote_Wrapper.java)
    at dudge.DudgeBean.submitSolution(DudgeBean.java:119)
    ...

DudgeBean 和 SolutionRemote 是我的类。

还有

StandardWrapperValve[action]: Servlet.service() for servlet action threw exception
java.lang.NoClassDefFoundError: Could not initialize class com.sun.corba.ee.impl.io.IIOPInputStream
    at com.sun.corba.ee.impl.io.ValueHandlerImpl.createInputStream(ValueHandlerImpl.java:820)
    ...
    at com.sun.corba.ee.impl.presentation.rmi.codegen.CodegenStubBase.invoke(CodegenStubBase.java:226)
    at dudge.__PermissionCheckerRemote_Remote_DynamicStub.canGetUser(dudge/__PermissionCheckerRemote_Remote_DynamicStub.java)
    at dudge._PermissionCheckerRemote_Wrapper.canGetUser(dudge/_PermissionCheckerRemote_Wrapper.java)
    at dudge.web.actions.UsersAction.view(UsersAction.java:95)
    ...

UsersActionand 和 PermissionCheckerRemote 是我的类。

在开发系统上一切正常,我找不到区别。 这可能是什么原因造成的?

【问题讨论】:

【参考方案1】:

这似乎是一个与 JDK 1.7_55 相关的错误。 降级到JDK 1.7_51后问题解决了。

Glassfish 错误跟踪器中有一个关于此错误的条目。 https://java.net/jira/browse/GLASSFISH-21047

【讨论】:

【参考方案2】:

正如@Aleksandr 所说,这是 7u55 的错误。

您可以尝试使用

运行 glassfish
JAVA_HOME=/usr/lib/jvm/java-6-oracle ~/glassfish-3/glassfish/bin/asadmin start-domain domain1

这将临时更改 JAVA_HOME 路径。稍后您必须检查 localhost:4848 > srever > JVM 报告 java root 是否已更改。如果没有,那么您可能需要修改 asadmin.conf 脚本或 domain.xml。

【讨论】:

【参考方案3】:

是的,这是一个错误。我通过将 JDK 升级到 1.8.0_25 解决了同样的问题

【讨论】:

以上是关于访问远程 bean 时 CORBA 内部的异常的主要内容,如果未能解决你的问题,请参考以下文章

无法从其他主机进行远程 ejb 访问

如何使用拦截器在 CORBA 中操作发送到远程对象的参数

CORBA 代理/代理通过 HTTP 还是通过套接字访问(对于 PHP)?

EJB 2.1在集群中抛出包装的远程异常

在 CORBA 程序中调用 createEntityManager 会导致异常:org.omg.CORBA.OBJECT_NOT_EXIST

WMI - 在远程域机器中读取 IIS 应用程序时引发“拒绝访问”异常