我从独立的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上一切都很好。
答案 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所需和重新启动服务器帮助。