我们有一个java应用程序最近从jdk 1.7.21更新到jdk 1.7.25,没有任何源更改,但在Windows Server 2003上遇到运行时异常。我们使用OpenORB 1.2(不再支持)提供了10几年前作为第三方图书馆。这是跟踪打印:
org.omg.CORBA.INITIALIZE: Unable to create CDROutputStream class vmcid: 0x0 minor code: 0 completed: No
at org.openorb.iiop.CDRCodec.encode_value(CDRCodec.java:147)
at org.openorb.iiop.IIOPServerProtocol.create_profile(IIOPServerProtocol.java:258)
at org.openorb.net.ServerManagerImpl.construct_ior(ServerManagerImpl.java:697)
at org.openorb.adapter.poa.POA.create_reference(POA.java:1602)
at org.openorb.adapter.poa.RootPOA$DomainManagerPOA.create_reference(RootPOA.java:162)
at org.openorb.adapter.poa.POA.create_reference_with_id(POA.java:1397)
at org.openorb.adapter.poa.RootPOA.create_poa_domain_manager(RootPOA.java:135)
at org.openorb.adapter.poa.POA.get_domain_managers(POA.java:848)
at org.openorb.adapter.poa.POA.create_reference(POA.java:1593)
at org.openorb.adapter.poa.POA.create_reference_with_id(POA.java:1397)
at org.openorb.adapter.poa.DelegateImpl.this_object(DelegateImpl.java:121)
at org.omg.PortableServer.Servant._this_object(Servant.java:79)
at org.omg.PortableServer.Servant._this_object(Servant.java:98)
at DPEM.src.presentation.adaptation.adaptationIfc.SessionAdapterPOA._this(SessionAdapterPOA.java:18)
at DPEM.src.presentation.adaptation.SessionAdapterImpl.<init>(SessionAdapterImpl.java:91)
at DPEM.src.presentation.adaptation.SessionAdapterImpl.instance(SessionAdapterImpl.java:164)
at DPEM.src.presentation.adaptation.AdapterFactory.getAdapter(AdapterFactory.java:166)
at DPEM.src.presentation.adaptation.AdapterFactory.getAdapter(AdapterFactory.java:121)
at DPEM.src.presentation.dialogControl.DialogController.createAdapterReferences(DialogController.java:320)
at DPEM.src.presentation.dialogControl.DialogController.<init>(DialogController.java:112)
at DPEM.src.presentation.dialogControl.PresentationFactory.getDialogController(PresentationFactory.java:470)
at DPEM.src.presentation.dialogControl.ThreadedClient.run(ThreadedClient.java:136)
我无法进一步研究,我正在寻求java / CORBA专业知识建议。
非常感谢先进!
答案 0 :(得分:1)
似乎与OpenORB相关的不兼容错误有很长的历史记录(请参阅here,here和here)。
这次罪魁祸首可能是JRE 7u22中引入的security fix。
由于您使用旧版技术的遗留库(最后一次更新是在2005年),我会降级生产JDK(作为一种解决方法)并进一步调查哪些内容已被破坏......
一旦找到它,也许有一个简单的解决方法,没有库更改...如果没有,你有两个选择:
答案 1 :(得分:0)
我不知道为什么只在查看你提供的堆栈跟踪时这不适用于1.7.25。但是我看了1.7.25的更改日志,可能出现问题的一个问题是Windows平台上Runtime.exec行为的更改。
可能的解决方法:
在JDK 7u25中,系统属性jdk.lang.Process.allowAmbigousCommands可用于放宽检查过程,并有助于解决某些无法更改的应用程序。解决方法仅对没有SecurityManager的应用程序有效。
另请看一下:
https://blogs.oracle.com/thejavatutorials/entry/changes_to_runtime_exec_problems http://www.oracle.com/technetwork/java/javase/7u25-relnotes-1955741.html
这只是猜测,但我希望它能帮助你解决问题。