Java应用程序更新到jdk 1.7.25,遇到运行时异常,你有什么看法?

时间:2013-10-15 12:31:18

标签: java corba

我们有一个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专业知识建议。

非常感谢先进!

2 个答案:

答案 0 :(得分:1)

似乎与OpenORB相关的不兼容错误有很长的历史记录(请参阅hereherehere)。

这次罪魁祸首可能是JRE 7u22中引入的security fix

由于您使用旧版技术的遗留库(最后一次更新是在2005年),我会降级生产JDK(作为一种解决方法)并进一步调查哪些内容已被破坏......

一旦找到它,也许有一个简单的解决方法,没有库更改...如果没有,你有两个选择:

  • 完全放弃CORBA(如果可以的话,这可能是最好的道路......虽然我明白这将是一项艰巨的任务,如果他们想要这个软件,你的公司可能不愿意花钱买这个生存到这个十年结束,现在是时候做点什么了)
  • 查看更活跃的CORBA库,例如JacORB(它可能会让您以最少的开发工作量运行,但在能够发布生产版本之前需要进行大量测试)

答案 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

这只是猜测,但我希望它能帮助你解决问题。