Java JacORB 3.x中本地对象的便携式拦截器使用不当?
JacORB 3中如何将便携式拦截器用于本地对象的实现发生了变化,如下所示: 发行说明中指出:“为本地对象正确实现了可移植拦截器。” 这一新的实施似乎带来了一些问题;重现问题的最简单方法 是从sas演示(jacorb附带的演示)修改GssUpServer.java: GssUpClient.bat之后的堆栈跟踪:Java JacORB 3.x中本地对象的便携式拦截器使用不当?,java,interceptor,corba,jacorb,Java,Interceptor,Corba,Jacorb,JacORB 3中如何将便携式拦截器用于本地对象的实现发生了变化,如下所示: 发行说明中指出:“为本地对象正确实现了可移植拦截器。” 这一新的实施似乎带来了一些问题;重现问题的最简单方法 是从sas演示(jacorb附带的演示)修改GssUpServer.java: GssUpClient.bat之后的堆栈跟踪: 2013-04-11 11:01:24.968 SEVERE unexpected exception during servant_preinvoke or
2013-04-11 11:01:24.968 SEVERE unexpected exception during servant_preinvoke org.jacorb.security.sas.SASClientInterceptor.send_request(SASClientInterceptor.java:194)
org.jacorb.orb.portableInterceptor.ClientInterceptorIterator.invoke(ClientInterceptorIterator.java:129)
org.jacorb.orb.portableInterceptor.AbstractInterceptorIterator.iterate(AbstractInterceptorIterator.java:66)
org.jacorb.orb.portableInterceptor.ClientInterceptorIterator.iterate(ClientInterceptorIterator.java:87)
org.jacorb.orb.DefaultClientInterceptorHandler.invokeInterceptors(DefaultClientInterceptorHandler.java:328)
org.jacorb.orb.DefaultClientInterceptorHandler.handle_send_request(DefaultClientInterceptorHandler.java:132)
org.jacorb.orb.Delegate.servant_preinvoke(Delegate.java:2505)
org.omg.CORBA.portable.ObjectImpl._servant_preinvoke(ObjectImpl.java:135)
org.jacorb.demo.sas._SASDemoStub.printSAS(_SASDemoStub.java:73)
org.jacorb.demo.sas.GssUpServer.printSAS(GssUpServer.java:46)
org.jacorb.demo.sas.SASDemoPOA._invoke(SASDemoPOA.java:47)
org.jacorb.poa.RequestProcessor.invokeOperation(RequestProcessor.java:348)
org.jacorb.poa.RequestProcessor.process(RequestProcessor.java:670)
org.jacorb.poa.RequestProcessor.run(RequestProcessor.java:820)
java.lang.NullPointerException
at org.jacorb.security.sas.SASClientInterceptor.send_request(SASClientInterceptor.java:194)
at org.jacorb.orb.portableInterceptor.ClientInterceptorIterator.invoke(ClientInterceptorIterator.java:129)
at org.jacorb.orb.portableInterceptor.AbstractInterceptorIterator.iterate(AbstractInterceptorIterator.java:66)
at org.jacorb.orb.portableInterceptor.ClientInterceptorIterator.iterate(ClientInterceptorIterator.java:87)
at org.jacorb.orb.DefaultClientInterceptorHandler.invokeInterceptors(DefaultClientInterceptorHandler.java:328)
at org.jacorb.orb.DefaultClientInterceptorHandler.handle_send_request(DefaultClientInterceptorHandler.java:132)
at org.jacorb.orb.Delegate.servant_preinvoke(Delegate.java:2505)
at org.omg.CORBA.portable.ObjectImpl._servant_preinvoke(ObjectImpl.java:135)
at org.jacorb.demo.sas._SASDemoStub.printSAS(_SASDemoStub.java:73)
at org.jacorb.demo.sas.GssUpServer.printSAS(GssUpServer.java:46)
at org.jacorb.demo.sas.SASDemoPOA._invoke(SASDemoPOA.java:47)
at org.jacorb.poa.RequestProcessor.invokeOperation(RequestProcessor.java:348)
at org.jacorb.poa.RequestProcessor.process(RequestProcessor.java:670)
at org.jacorb.poa.RequestProcessor.run(RequestProcessor.java:820)
上述代码在JacORB 2.3.1中运行良好。解决此问题的简单方法是将属性jacorb.isLocalHistoricalInterceptors
设置为true;
但是,某些“内置”方法(例如\u is\u a()
)不遵守此标志(因为这些方法直接使用is\u really\u local()
检查对象的局部性)。看来
这些“内置”方法调用以前从未在本地调用时使用过拦截器
因此,我的观察结果是:
\u is\u a()
,\u不存在()
,\u接口()
,\u get\u组件()进行本地调用的JacORB
有没有其他人注意到这种行为,并且能够证实我的怀疑,这确实是JacORB 3.x中的一个缺陷,或者我遗漏了什么 带有本地调用的内置便携式拦截器应能正常工作;这听起来像个虫子。事实上,听起来像。我也输入了恐怕我没有看到这一点,因此回复很晚;请注意这里有官方的JacORB邮件列表:bugzilla谢谢!我们在软件中对此做了一个快速补丁,之后我有点忘记了这个问题。我可能应该马上用你的bugzilla:)
2013-04-11 11:01:24.968 SEVERE unexpected exception during servant_preinvoke org.jacorb.security.sas.SASClientInterceptor.send_request(SASClientInterceptor.java:194)
org.jacorb.orb.portableInterceptor.ClientInterceptorIterator.invoke(ClientInterceptorIterator.java:129)
org.jacorb.orb.portableInterceptor.AbstractInterceptorIterator.iterate(AbstractInterceptorIterator.java:66)
org.jacorb.orb.portableInterceptor.ClientInterceptorIterator.iterate(ClientInterceptorIterator.java:87)
org.jacorb.orb.DefaultClientInterceptorHandler.invokeInterceptors(DefaultClientInterceptorHandler.java:328)
org.jacorb.orb.DefaultClientInterceptorHandler.handle_send_request(DefaultClientInterceptorHandler.java:132)
org.jacorb.orb.Delegate.servant_preinvoke(Delegate.java:2505)
org.omg.CORBA.portable.ObjectImpl._servant_preinvoke(ObjectImpl.java:135)
org.jacorb.demo.sas._SASDemoStub.printSAS(_SASDemoStub.java:73)
org.jacorb.demo.sas.GssUpServer.printSAS(GssUpServer.java:46)
org.jacorb.demo.sas.SASDemoPOA._invoke(SASDemoPOA.java:47)
org.jacorb.poa.RequestProcessor.invokeOperation(RequestProcessor.java:348)
org.jacorb.poa.RequestProcessor.process(RequestProcessor.java:670)
org.jacorb.poa.RequestProcessor.run(RequestProcessor.java:820)
java.lang.NullPointerException
at org.jacorb.security.sas.SASClientInterceptor.send_request(SASClientInterceptor.java:194)
at org.jacorb.orb.portableInterceptor.ClientInterceptorIterator.invoke(ClientInterceptorIterator.java:129)
at org.jacorb.orb.portableInterceptor.AbstractInterceptorIterator.iterate(AbstractInterceptorIterator.java:66)
at org.jacorb.orb.portableInterceptor.ClientInterceptorIterator.iterate(ClientInterceptorIterator.java:87)
at org.jacorb.orb.DefaultClientInterceptorHandler.invokeInterceptors(DefaultClientInterceptorHandler.java:328)
at org.jacorb.orb.DefaultClientInterceptorHandler.handle_send_request(DefaultClientInterceptorHandler.java:132)
at org.jacorb.orb.Delegate.servant_preinvoke(Delegate.java:2505)
at org.omg.CORBA.portable.ObjectImpl._servant_preinvoke(ObjectImpl.java:135)
at org.jacorb.demo.sas._SASDemoStub.printSAS(_SASDemoStub.java:73)
at org.jacorb.demo.sas.GssUpServer.printSAS(GssUpServer.java:46)
at org.jacorb.demo.sas.SASDemoPOA._invoke(SASDemoPOA.java:47)
at org.jacorb.poa.RequestProcessor.invokeOperation(RequestProcessor.java:348)
at org.jacorb.poa.RequestProcessor.process(RequestProcessor.java:670)
at org.jacorb.poa.RequestProcessor.run(RequestProcessor.java:820)