org.omg.CORBA.TRANSIENT:初始和转发的IOR无法访问的vmcid:IBM次要代码:来自独立应用程序的E07

时间:2014-04-14 13:56:58

标签: 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支持。

然而,它并没有改变任何东西。我试图将'Cleint证书身份验证'更改为Never,并将CSIv2入站和出站传输到TCP / IP,但仍然没有成功。错误一直存在,直到我关闭了“启用管理安全性”,这不是一个选项,因为我需要启用“应用程序安全性”(应用程序逻辑依赖于此)。

如何让我的代码再次运行?在WebSphere 7上一切都很好。

3 个答案:

答案 0 :(得分:0)

错误说明

  
    

org.omg.CORBA.TRANSIENT:初始和转发的IOR无法访问的vmcid:IBM次要代码:E07

  

非常模糊,在许多情况下发生,而不是直接关联的情况。

在我的情况下,它与RMI / IIOP安全设置无关,但它是类路径问题。我还在使用旧版com.ibm.ws.webservices.thinclient

切换到瘦客户端8.5.0,以及将启动JRE设置为标准(Oracle)JVM解决了这个问题。

答案 1 :(得分:0)

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

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并将内容作为系统属性注入。

答案 2 :(得分:0)

在我的情况下,将CSIV入站切换为SSL支持从SSL所需重新启动服务器帮助。