java - org.omg.CORBA.TRANSIENT : initial and forwarded IOR inaccessible vmcid: IBM minor code: E07 from stand-alone app

标签 java websphere rmi corba websphere-8

我正在从独立的 Java 应用程序连接到 WebSphere 实例,这非常简单:

InitialContext initCtx = new InitialContext();

该代码在 WebSphere 7 中运行良好,但更新到 WebSphere 8.5 后出现以下异常:

Caused by: org.omg.CORBA.TRANSIENT: initial and forwarded IOR inaccessible  vmcid: IBM  minor code: E07  completed: No
    at com.ibm.rmi.corba.ClientDelegate.createRequest(ClientDelegate.java:1276)
    at com.ibm.CORBA.iiop.ClientDelegate.createRequest(ClientDelegate.java:1457)
    at com.ibm.rmi.corba.ClientDelegate.createRequest(ClientDelegate.java:1164)
    at com.ibm.CORBA.iiop.ClientDelegate.createRequest(ClientDelegate.java:1423)
    at com.ibm.rmi.corba.ClientDelegate.request(ClientDelegate.java:1886)
    at com.ibm.CORBA.iiop.ClientDelegate.request(ClientDelegate.java:1379)
    at org.omg.CORBA.portable.ObjectImpl._request(ObjectImpl.java:458)
    at com.ibm.WsnBootstrap._WsnNameServiceStub.getProperties(_WsnNameServiceStub.java:38)
    at com.ibm.ws.naming.util.WsnInitCtxFactory.mergeWsnNSProperties(WsnInitCtxFactory.java:1441)
    ... 43 more

经过研究,我发现IBM support page ,它说要转到 CSIv2 入站和出站设置(由我管理控制台 -> 安全 -> 全局安全 -> RMI/IIOP 安全)并将传输设置为 SSL 支持。

但是,这并没有改变任何事情。我尝试将 CSIv2 入站和出站的“Cleint 证书身份验证”更改为“从不”,并将传输更改为 TCP/IP,但仍然没有成功。该错误一直存在,直到我关闭“启用管理安全性”,这不是一个选项,因为我需要启用“应用程序安全性”(应用程序逻辑取决于此)。

如何让我的代码再次运行? WebSphere 7 上一切正常。

最佳答案

我对此问题的研究可能对其他人有用;

WebSphere 8 将 RMI/IIOP SSL 安全性的默认设置从 从“支持”变为“必需”。如果您想要安全连接,您需要 从服务器获取证书并将 Java 系统属性设置为指定证书位置的文件;

com.ibm.CORBA.ConfigURL=file:/opt/IBM/JazzSM/profile/properties/sas.client.props
com.ibm.SSL.ConfigURL=file:/opt/IBM/JazzSM/profile/properties/ssl.client.props

如果这不起作用,您需要通过设置以下系统属性来开始调试;

com.ibm.CORBA.Debug=true
com.ibm.CORBA.CommTrace=true
com.ibm.CORBA.Debug.Output=/tmp/corba.log

通过研究工作目录中的此日志和 orb 跟踪日志,我发现客户端无法在“port=0”处与服务器建立临时 TCP 连接。日志中没有提及 SSL!我编写了一个小应用程序来测试我的代码作为 java 控制台应用程序运行,发现 SSL 连接成功并且工作正常。通过比较日志,我发现只有在好的情况下,JVM 才能找到本地文件“orb.properties”。然后我发现在我的问题案例中,我的测试应用程序使用不同的 JVM,而我的实际应用程序使用没有“orb.properties”的 JVM。我可以通过多种方式解决这个问题......例如通过在我的应用程序中包含 orb.properties 并将内容作为系统属性注入(inject)。

关于java - org.omg.CORBA.TRANSIENT : initial and forwarded IOR inaccessible vmcid: IBM minor code: E07 from stand-alone app,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23062079/

相关文章:

java - 级联持久化会创建重复行吗?

ssl - 如何在 IBM Websphere 6 中禁用 SSL 及其影响?

java - GAE 消息服务

java - JVM如何处理RMI远程方法中的运行时异常?

java - Eclipse:内联断点

Java BufferedWriter 不工作

java - 两种远程调试方式

WebSphere 9 启动时间过长

java - 需要帮助实现在 WAS7 上运行的 Java/JEE 应用程序的单点登录

java - Java RMI 服务器在哪里监听?