You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomee.apache.org by Quintin Beukes <qu...@last.za.net> on 2009/11/02 19:44:28 UTC
InitialContext / Comms protocol recovery from a SystemException
Hey,
When I get a SystemException from the container during remote EJB
invocation, all future requests for the InitialContext are "broken". My
exact situation (reason for causing the SystemException) is on my fault, but
if there is another reason I think it's good to recover from it so to be
able to continue serving requests. I got the following by invoking on a
method which isn't in the remote EJB class/Remote interface.
This is what I got:
------- SNIP -------
02 Nov 2009 20:28:33,649 ERROR -- Exception: Error deleting employee: XXXXXX
(javax.ejb.EJBException)
javax.ejb.EJBException: Container has suffered a SystemException
org.apache.openejb.client.EJBObjectHandler._invoke(EJBObjectHandler.java:178)
org.apache.openejb.client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:117)
org.apache.openejb.client.proxy.Jdk13InvocationHandler.invoke(Jdk13InvocationHandler.java:52)
$Proxy7.deletePerson(Unknown Source)
net.kunye.personnel.client.employees.delete.DeleteEmployeeWizardAction.performAction(DeleteEmployeeWizardAction.java:87)
net.kunye.personnel.client.employees.delete.DeleteEmployeeWizardAction.performAction(DeleteEmployeeWizardAction.java:55)
org.openide.util.actions.NodeAction$DelegateAction$1.run(NodeAction.java:589)
org.netbeans.modules.openide.util.ActionsBridge.doPerformAction(ActionsBridge.java:77)
org.openide.util.actions.NodeAction$DelegateAction.actionPerformed(NodeAction.java:585)
javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
javax.swing.AbstractButton.doClick(AbstractButton.java:357)
javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1220)
javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1261)
java.awt.Component.processMouseEvent(Component.java:6041)
javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
java.awt.Component.processEvent(Component.java:5806)
java.awt.Container.processEvent(Container.java:2058)
java.awt.Component.dispatchEventImpl(Component.java:4413)
java.awt.Container.dispatchEventImpl(Container.java:2116)
java.awt.Component.dispatchEvent(Component.java:4243)
java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
java.awt.Container.dispatchEventImpl(Container.java:2102)
java.awt.Window.dispatchEventImpl(Window.java:2440)
java.awt.Component.dispatchEvent(Component.java:4243)
java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:104)
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
java.rmi.RemoteException: The server has encountered a fatal error: Unknown
error in container java.lang.NullPointerException; nested exception is:
java.lang.NullPointerException
org.apache.openejb.server.ejbd.EjbRequestHandler.replyWithFatalError(EjbRequestHandler.java:425)
org.apache.openejb.server.ejbd.EjbRequestHandler.processRequest(EjbRequestHandler.java:205)
org.apache.openejb.server.ejbd.EjbDaemon.processEjbRequest(EjbDaemon.java:196)
org.apache.openejb.server.ejbd.EjbDaemon.service(EjbDaemon.java:149)
org.apache.openejb.server.ejbd.EjbServer.service(EjbServer.java:71)
org.apache.openejb.server.ejbd.KeepAliveServer$Session.service(KeepAliveServer.java:213)
org.apache.openejb.server.ejbd.KeepAliveServer.service(KeepAliveServer.java:233)
org.apache.openejb.server.ejbd.EjbServer.service(EjbServer.java:66)
org.apache.openejb.server.ServicePool$2.run(ServicePool.java:91)
org.apache.openejb.server.ServicePool$3.run(ServicePool.java:120)
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
java.lang.Thread.run(Thread.java:619)
java.lang.NullPointerException: null
org.apache.geronimo.openejb.GeronimoSecurityService.isCallerAuthorized(GeronimoSecurityService.java:96)
org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:151)
org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:136)
org.apache.openejb.server.ejbd.EjbRequestHandler.doEjbObject_BUSINESS_METHOD(EjbRequestHandler.java:238)
org.apache.openejb.server.ejbd.EjbRequestHandler.processRequest(EjbRequestHandler.java:129)
org.apache.openejb.server.ejbd.EjbDaemon.processEjbRequest(EjbDaemon.java:196)
org.apache.openejb.server.ejbd.EjbDaemon.service(EjbDaemon.java:149)
org.apache.openejb.server.ejbd.EjbServer.service(EjbServer.java:71)
org.apache.openejb.server.ejbd.KeepAliveServer$Session.service(KeepAliveServer.java:213)
org.apache.openejb.server.ejbd.KeepAliveServer.service(KeepAliveServer.java:233)
org.apache.openejb.server.ejbd.EjbServer.service(EjbServer.java:66)
org.apache.openejb.server.ServicePool$2.run(ServicePool.java:91)
org.apache.openejb.server.ServicePool$3.run(ServicePool.java:120)
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
java.lang.Thread.run(Thread.java:619)
------- SNIP -------
There after, when I try to invoke OTHER methods, I get this:
02 Nov 2009 20:29:45,990 ERROR -- Exception: Error creating new employee:
XXXXXX (javax.ejb.EJBException)
javax.ejb.EJBException: Unknown Container Exception:
java.rmi.RemoteException: Received invalid response code from server: -1
org.apache.openejb.client.EJBObjectHandler._invoke(EJBObjectHandler.java:184)
org.apache.openejb.client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:117)
org.apache.openejb.client.proxy.Jdk13InvocationHandler.invoke(Jdk13InvocationHandler.java:52)
$Proxy7.registerPerson(Unknown Source)
net.kunye.personnel.client.employees.add.AddEmployeeWizardAction.performAction(AddEmployeeWizardAction.java:69)
net.kunye.personnel.client.employees.add.AddEmployeeWizardAction.openWizard(AddEmployeeWizardAction.java:47)
net.kunye.personnel.client.navigation.NavigationRootTopComponent.btnAddEmployeeActionPerformed(NavigationRootTopComponent.java:107)
net.kunye.personnel.client.navigation.NavigationRootTopComponent.access$000(NavigationRootTopComponent.java:36)
net.kunye.personnel.client.navigation.NavigationRootTopComponent$1.actionPerformed(NavigationRootTopComponent.java:67)
javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
java.awt.Component.processMouseEvent(Component.java:6041)
javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
java.awt.Component.processEvent(Component.java:5806)
java.awt.Container.processEvent(Container.java:2058)
java.awt.Component.dispatchEventImpl(Component.java:4413)
java.awt.Container.dispatchEventImpl(Container.java:2116)
java.awt.Component.dispatchEvent(Component.java:4243)
java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
java.awt.Container.dispatchEventImpl(Container.java:2102)
java.awt.Window.dispatchEventImpl(Window.java:2440)
java.awt.Component.dispatchEvent(Component.java:4243)
java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:104)
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
java.rmi.RemoteException: Received invalid response code from server: -1
org.apache.openejb.client.EJBObjectHandler.businessMethod(EJBObjectHandler.java:239)
org.apache.openejb.client.EJBObjectHandler._invoke(EJBObjectHandler.java:157)
org.apache.openejb.client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:117)
org.apache.openejb.client.proxy.Jdk13InvocationHandler.invoke(Jdk13InvocationHandler.java:52)
$Proxy7.registerPerson(Unknown Source)
net.kunye.personnel.client.employees.add.AddEmployeeWizardAction.performAction(AddEmployeeWizardAction.java:69)
net.kunye.personnel.client.employees.add.AddEmployeeWizardAction.openWizard(AddEmployeeWizardAction.java:47)
net.kunye.personnel.client.navigation.NavigationRootTopComponent.btnAddEmployeeActionPerformed(NavigationRootTopComponent.java:107)
net.kunye.personnel.client.navigation.NavigationRootTopComponent.access$000(NavigationRootTopComponent.java:36)
net.kunye.personnel.client.navigation.NavigationRootTopComponent$1.actionPerformed(NavigationRootTopComponent.java:67)
javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
java.awt.Component.processMouseEvent(Component.java:6041)
javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
java.awt.Component.processEvent(Component.java:5806)
java.awt.Container.processEvent(Container.java:2058)
java.awt.Component.dispatchEventImpl(Component.java:4413)
java.awt.Container.dispatchEventImpl(Container.java:2116)
java.awt.Component.dispatchEvent(Component.java:4243)
java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
java.awt.Container.dispatchEventImpl(Container.java:2102)
java.awt.Window.dispatchEventImpl(Window.java:2440)
java.awt.Component.dispatchEvent(Component.java:4243)
java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:104)
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
Quintin Beukes
Re: InitialContext / Comms protocol recovery from a SystemException
Posted by David Blevins <da...@visi.com>.
Missed this followup.
On Nov 4, 2009, at 4:00 AM, Quintin Beukes wrote:
> Though, isn't there a way if a 3rd party SecurityService fails for
> some
> reason for OpenEJB to recover from it?
I'm not sure of the nature of the failure. If the SecurityService
throws an exception each time we call isCallerAuthorized() then there
is no way for let the call through. Do you know if that is the case
or are subsequent calls to the SecurityService succeeding but failures
still occurring downstream?
And just for good measure, what is the "your fault" part? If there's
something we can do to check for bad input or user error, we should do
it.
-David
> On Tue, Nov 3, 2009 at 11:12 PM, David Blevins
> <da...@visi.com>wrote:
>
>> Haven't seen this before, looks like the null is coming from the
>> GeronimoSecurityService.
>>
>> We test system and application exceptions in the itests for each
>> bean type
>> on both the remote and local servers as well as on Tomcat. We
>> don't run
>> those on Geronimo though, which we really should. There was some
>> code in
>> Geronimo to do that at one point, but it got axed as being too hard
>> to
>> maintain quite a while ago. I think we should bring it back.
>>
>> I'm not sure what it might take Geronimo plan-wise, but here's the
>> app:
>>
>>
>> http://repo2.maven.org/maven2/org/apache/openejb/openejb-itests-beans/3.1.2/openejb-itests-beans-3.1.2.jar
>>
>> And the client which includes all deps and is an executable jar:
>>
>>
>> http://repo2.maven.org/maven2/org/apache/openejb/openejb-itests-standalone-client/3.1.2/openejb-itests-standalone-client-3.1.2.jar
>>
>> -David
>>
>>
>> On Nov 2, 2009, at 10:44 AM, Quintin Beukes wrote:
>>
>> Hey,
>>>
>>> When I get a SystemException from the container during remote EJB
>>> invocation, all future requests for the InitialContext are
>>> "broken". My
>>> exact situation (reason for causing the SystemException) is on my
>>> fault,
>>> but
>>> if there is another reason I think it's good to recover from it so
>>> to be
>>> able to continue serving requests. I got the following by invoking
>>> on a
>>> method which isn't in the remote EJB class/Remote interface.
>>>
>>> This is what I got:
>>> ------- SNIP -------
>>> 02 Nov 2009 20:28:33,649 ERROR -- Exception: Error deleting
>>> employee:
>>> XXXXXX
>>> (javax.ejb.EJBException)
>>> javax.ejb.EJBException: Container has suffered a SystemException
>>>
>>>
>>> org
>>> .apache
>>> .openejb.client.EJBObjectHandler._invoke(EJBObjectHandler.java:178)
>>>
>>>
>>> org
>>> .apache
>>> .openejb
>>> .client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:117)
>>>
>>>
>>> org
>>> .apache
>>> .openejb
>>> .client
>>> .proxy.Jdk13InvocationHandler.invoke(Jdk13InvocationHandler.java:52)
>>> $Proxy7.deletePerson(Unknown Source)
>>>
>>>
>>> net
>>> .kunye
>>> .personnel
>>> .client
>>> .employees
>>> .delete
>>> .DeleteEmployeeWizardAction
>>> .performAction(DeleteEmployeeWizardAction.java:87)
>>>
>>>
>>> net
>>> .kunye
>>> .personnel
>>> .client
>>> .employees
>>> .delete
>>> .DeleteEmployeeWizardAction
>>> .performAction(DeleteEmployeeWizardAction.java:55)
>>>
>>>
>>> org.openide.util.actions.NodeAction$DelegateAction
>>> $1.run(NodeAction.java:589)
>>>
>>>
>>> org
>>> .netbeans
>>> .modules
>>> .openide.util.ActionsBridge.doPerformAction(ActionsBridge.java:77)
>>>
>>>
>>> org.openide.util.actions.NodeAction
>>> $DelegateAction.actionPerformed(NodeAction.java:585)
>>>
>>> javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:
>>> 1995)
>>>
>>>
>>> javax.swing.AbstractButton
>>> $Handler.actionPerformed(AbstractButton.java:2318)
>>>
>>>
>>> javax
>>> .swing
>>> .DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
>>> javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:
>>> 242)
>>> javax.swing.AbstractButton.doClick(AbstractButton.java:357)
>>>
>>> javax
>>> .swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1220)
>>>
>>>
>>> javax.swing.plaf.basic.BasicMenuItemUI
>>> $Handler.mouseReleased(BasicMenuItemUI.java:1261)
>>> java.awt.Component.processMouseEvent(Component.java:6041)
>>> javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
>>> java.awt.Component.processEvent(Component.java:5806)
>>> java.awt.Container.processEvent(Container.java:2058)
>>> java.awt.Component.dispatchEventImpl(Component.java:4413)
>>> java.awt.Container.dispatchEventImpl(Container.java:2116)
>>> java.awt.Component.dispatchEvent(Component.java:4243)
>>> java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:
>>> 4322)
>>> java.awt.LightweightDispatcher.processMouseEvent(Container.java:
>>> 3986)
>>> java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
>>> java.awt.Container.dispatchEventImpl(Container.java:2102)
>>> java.awt.Window.dispatchEventImpl(Window.java:2440)
>>> java.awt.Component.dispatchEvent(Component.java:4243)
>>> java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
>>>
>>>
>>> org
>>> .netbeans
>>> .core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:104)
>>>
>>>
>>> java
>>> .awt
>>> .EventDispatchThread
>>> .pumpOneEventForFilters(EventDispatchThread.java:273)
>>>
>>>
>>> java
>>> .awt
>>> .EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:
>>> 183)
>>>
>>>
>>> java
>>> .awt
>>> .EventDispatchThread
>>> .pumpEventsForHierarchy(EventDispatchThread.java:173)
>>> java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:
>>> 168)
>>> java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:
>>> 160)
>>> java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
>>>
>>> java.rmi.RemoteException: The server has encountered a fatal error:
>>> Unknown
>>> error in container java.lang.NullPointerException; nested
>>> exception is:
>>> java.lang.NullPointerException
>>>
>>>
>>> org
>>> .apache
>>> .openejb
>>> .server
>>> .ejbd.EjbRequestHandler.replyWithFatalError(EjbRequestHandler.java:
>>> 425)
>>>
>>>
>>> org
>>> .apache
>>> .openejb
>>> .server
>>> .ejbd.EjbRequestHandler.processRequest(EjbRequestHandler.java:205)
>>>
>>>
>>> org
>>> .apache
>>> .openejb.server.ejbd.EjbDaemon.processEjbRequest(EjbDaemon.java:196)
>>> org.apache.openejb.server.ejbd.EjbDaemon.service(EjbDaemon.java:
>>> 149)
>>> org.apache.openejb.server.ejbd.EjbServer.service(EjbServer.java:71)
>>>
>>>
>>> org.apache.openejb.server.ejbd.KeepAliveServer
>>> $Session.service(KeepAliveServer.java:213)
>>>
>>>
>>> org
>>> .apache
>>> .openejb.server.ejbd.KeepAliveServer.service(KeepAliveServer.java:
>>> 233)
>>> org.apache.openejb.server.ejbd.EjbServer.service(EjbServer.java:66)
>>> org.apache.openejb.server.ServicePool$2.run(ServicePool.java:91)
>>> org.apache.openejb.server.ServicePool$3.run(ServicePool.java:120)
>>>
>>>
>>> java.util.concurrent.ThreadPoolExecutor
>>> $Worker.runTask(ThreadPoolExecutor.java:886)
>>>
>>>
>>> java.util.concurrent.ThreadPoolExecutor
>>> $Worker.run(ThreadPoolExecutor.java:908)
>>> java.lang.Thread.run(Thread.java:619)
>>>
>>> java.lang.NullPointerException: null
>>>
>>>
>>> org
>>> .apache
>>> .geronimo
>>> .openejb
>>> .GeronimoSecurityService
>>> .isCallerAuthorized(GeronimoSecurityService.java:96)
>>>
>>>
>>> org
>>> .apache
>>> .openejb
>>> .core.stateless.StatelessContainer.invoke(StatelessContainer.java:
>>> 151)
>>>
>>>
>>> org
>>> .apache
>>> .openejb
>>> .core.stateless.StatelessContainer.invoke(StatelessContainer.java:
>>> 136)
>>>
>>>
>>> org
>>> .apache
>>> .openejb
>>> .server
>>> .ejbd
>>> .EjbRequestHandler
>>> .doEjbObject_BUSINESS_METHOD(EjbRequestHandler.java:238)
>>>
>>>
>>> org
>>> .apache
>>> .openejb
>>> .server
>>> .ejbd.EjbRequestHandler.processRequest(EjbRequestHandler.java:129)
>>>
>>>
>>> org
>>> .apache
>>> .openejb.server.ejbd.EjbDaemon.processEjbRequest(EjbDaemon.java:196)
>>> org.apache.openejb.server.ejbd.EjbDaemon.service(EjbDaemon.java:
>>> 149)
>>> org.apache.openejb.server.ejbd.EjbServer.service(EjbServer.java:71)
>>>
>>>
>>> org.apache.openejb.server.ejbd.KeepAliveServer
>>> $Session.service(KeepAliveServer.java:213)
>>>
>>>
>>> org
>>> .apache
>>> .openejb.server.ejbd.KeepAliveServer.service(KeepAliveServer.java:
>>> 233)
>>> org.apache.openejb.server.ejbd.EjbServer.service(EjbServer.java:66)
>>> org.apache.openejb.server.ServicePool$2.run(ServicePool.java:91)
>>> org.apache.openejb.server.ServicePool$3.run(ServicePool.java:120)
>>>
>>>
>>> java.util.concurrent.ThreadPoolExecutor
>>> $Worker.runTask(ThreadPoolExecutor.java:886)
>>>
>>>
>>> java.util.concurrent.ThreadPoolExecutor
>>> $Worker.run(ThreadPoolExecutor.java:908)
>>> java.lang.Thread.run(Thread.java:619)
>>>
>>> ------- SNIP -------
>>>
>>> There after, when I try to invoke OTHER methods, I get this:
>>>
>>>
>>>
>>> 02 Nov 2009 20:29:45,990 ERROR -- Exception: Error creating new
>>> employee:
>>> XXXXXX (javax.ejb.EJBException)
>>> javax.ejb.EJBException: Unknown Container Exception:
>>> java.rmi.RemoteException: Received invalid response code from
>>> server: -1
>>>
>>>
>>> org
>>> .apache
>>> .openejb.client.EJBObjectHandler._invoke(EJBObjectHandler.java:184)
>>>
>>>
>>> org
>>> .apache
>>> .openejb
>>> .client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:117)
>>>
>>>
>>> org
>>> .apache
>>> .openejb
>>> .client
>>> .proxy.Jdk13InvocationHandler.invoke(Jdk13InvocationHandler.java:52)
>>> $Proxy7.registerPerson(Unknown Source)
>>>
>>>
>>> net
>>> .kunye
>>> .personnel
>>> .client
>>> .employees
>>> .add
>>> .AddEmployeeWizardAction
>>> .performAction(AddEmployeeWizardAction.java:69)
>>>
>>>
>>> net
>>> .kunye
>>> .personnel
>>> .client
>>> .employees
>>> .add
>>> .AddEmployeeWizardAction.openWizard(AddEmployeeWizardAction.java:47)
>>>
>>>
>>> net
>>> .kunye
>>> .personnel
>>> .client
>>> .navigation
>>> .NavigationRootTopComponent
>>> .btnAddEmployeeActionPerformed(NavigationRootTopComponent.java:107)
>>>
>>>
>>> net
>>> .kunye
>>> .personnel.client.navigation.NavigationRootTopComponent.access
>>> $000(NavigationRootTopComponent.java:36)
>>>
>>>
>>> net.kunye.personnel.client.navigation.NavigationRootTopComponent
>>> $1.actionPerformed(NavigationRootTopComponent.java:67)
>>>
>>> javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:
>>> 1995)
>>>
>>>
>>> javax.swing.AbstractButton
>>> $Handler.actionPerformed(AbstractButton.java:2318)
>>>
>>>
>>> javax
>>> .swing
>>> .DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
>>> javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:
>>> 242)
>>>
>>>
>>> javax
>>> .swing
>>> .plaf
>>> .basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:
>>> 236)
>>> java.awt.Component.processMouseEvent(Component.java:6041)
>>> javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
>>> java.awt.Component.processEvent(Component.java:5806)
>>> java.awt.Container.processEvent(Container.java:2058)
>>> java.awt.Component.dispatchEventImpl(Component.java:4413)
>>> java.awt.Container.dispatchEventImpl(Container.java:2116)
>>> java.awt.Component.dispatchEvent(Component.java:4243)
>>> java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:
>>> 4322)
>>> java.awt.LightweightDispatcher.processMouseEvent(Container.java:
>>> 3986)
>>> java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
>>> java.awt.Container.dispatchEventImpl(Container.java:2102)
>>> java.awt.Window.dispatchEventImpl(Window.java:2440)
>>> java.awt.Component.dispatchEvent(Component.java:4243)
>>> java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
>>>
>>>
>>> org
>>> .netbeans
>>> .core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:104)
>>>
>>>
>>> java
>>> .awt
>>> .EventDispatchThread
>>> .pumpOneEventForFilters(EventDispatchThread.java:273)
>>>
>>>
>>> java
>>> .awt
>>> .EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:
>>> 183)
>>>
>>>
>>> java
>>> .awt
>>> .EventDispatchThread
>>> .pumpEventsForHierarchy(EventDispatchThread.java:173)
>>> java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:
>>> 168)
>>> java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:
>>> 160)
>>> java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
>>>
>>> java.rmi.RemoteException: Received invalid response code from
>>> server: -1
>>>
>>>
>>> org
>>> .apache
>>> .openejb
>>> .client.EJBObjectHandler.businessMethod(EJBObjectHandler.java:239)
>>>
>>>
>>> org
>>> .apache
>>> .openejb.client.EJBObjectHandler._invoke(EJBObjectHandler.java:157)
>>>
>>>
>>> org
>>> .apache
>>> .openejb
>>> .client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:117)
>>>
>>>
>>> org
>>> .apache
>>> .openejb
>>> .client
>>> .proxy.Jdk13InvocationHandler.invoke(Jdk13InvocationHandler.java:52)
>>> $Proxy7.registerPerson(Unknown Source)
>>>
>>>
>>> net
>>> .kunye
>>> .personnel
>>> .client
>>> .employees
>>> .add
>>> .AddEmployeeWizardAction
>>> .performAction(AddEmployeeWizardAction.java:69)
>>>
>>>
>>> net
>>> .kunye
>>> .personnel
>>> .client
>>> .employees
>>> .add
>>> .AddEmployeeWizardAction.openWizard(AddEmployeeWizardAction.java:47)
>>>
>>>
>>> net
>>> .kunye
>>> .personnel
>>> .client
>>> .navigation
>>> .NavigationRootTopComponent
>>> .btnAddEmployeeActionPerformed(NavigationRootTopComponent.java:107)
>>>
>>>
>>> net
>>> .kunye
>>> .personnel.client.navigation.NavigationRootTopComponent.access
>>> $000(NavigationRootTopComponent.java:36)
>>>
>>>
>>> net.kunye.personnel.client.navigation.NavigationRootTopComponent
>>> $1.actionPerformed(NavigationRootTopComponent.java:67)
>>>
>>> javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:
>>> 1995)
>>>
>>>
>>> javax.swing.AbstractButton
>>> $Handler.actionPerformed(AbstractButton.java:2318)
>>>
>>>
>>> javax
>>> .swing
>>> .DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
>>> javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:
>>> 242)
>>>
>>>
>>> javax
>>> .swing
>>> .plaf
>>> .basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:
>>> 236)
>>> java.awt.Component.processMouseEvent(Component.java:6041)
>>> javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
>>> java.awt.Component.processEvent(Component.java:5806)
>>> java.awt.Container.processEvent(Container.java:2058)
>>> java.awt.Component.dispatchEventImpl(Component.java:4413)
>>> java.awt.Container.dispatchEventImpl(Container.java:2116)
>>> java.awt.Component.dispatchEvent(Component.java:4243)
>>> java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:
>>> 4322)
>>> java.awt.LightweightDispatcher.processMouseEvent(Container.java:
>>> 3986)
>>> java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
>>> java.awt.Container.dispatchEventImpl(Container.java:2102)
>>> java.awt.Window.dispatchEventImpl(Window.java:2440)
>>> java.awt.Component.dispatchEvent(Component.java:4243)
>>> java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
>>>
>>>
>>> org
>>> .netbeans
>>> .core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:104)
>>>
>>>
>>> java
>>> .awt
>>> .EventDispatchThread
>>> .pumpOneEventForFilters(EventDispatchThread.java:273)
>>>
>>>
>>> java
>>> .awt
>>> .EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:
>>> 183)
>>>
>>>
>>> java
>>> .awt
>>> .EventDispatchThread
>>> .pumpEventsForHierarchy(EventDispatchThread.java:173)
>>> java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:
>>> 168)
>>> java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:
>>> 160)
>>> java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
>>>
>>> Quintin Beukes
>>>
>>
>>
Re: InitialContext / Comms protocol recovery from a SystemException
Posted by Quintin Beukes <qu...@skywalk.co.za>.
Though, isn't there a way if a 3rd party SecurityService fails for some
reason for OpenEJB to recover from it?
Quintin Beukes
On Tue, Nov 3, 2009 at 11:12 PM, David Blevins <da...@visi.com>wrote:
> Haven't seen this before, looks like the null is coming from the
> GeronimoSecurityService.
>
> We test system and application exceptions in the itests for each bean type
> on both the remote and local servers as well as on Tomcat. We don't run
> those on Geronimo though, which we really should. There was some code in
> Geronimo to do that at one point, but it got axed as being too hard to
> maintain quite a while ago. I think we should bring it back.
>
> I'm not sure what it might take Geronimo plan-wise, but here's the app:
>
>
> http://repo2.maven.org/maven2/org/apache/openejb/openejb-itests-beans/3.1.2/openejb-itests-beans-3.1.2.jar
>
> And the client which includes all deps and is an executable jar:
>
>
> http://repo2.maven.org/maven2/org/apache/openejb/openejb-itests-standalone-client/3.1.2/openejb-itests-standalone-client-3.1.2.jar
>
> -David
>
>
> On Nov 2, 2009, at 10:44 AM, Quintin Beukes wrote:
>
> Hey,
>>
>> When I get a SystemException from the container during remote EJB
>> invocation, all future requests for the InitialContext are "broken". My
>> exact situation (reason for causing the SystemException) is on my fault,
>> but
>> if there is another reason I think it's good to recover from it so to be
>> able to continue serving requests. I got the following by invoking on a
>> method which isn't in the remote EJB class/Remote interface.
>>
>> This is what I got:
>> ------- SNIP -------
>> 02 Nov 2009 20:28:33,649 ERROR -- Exception: Error deleting employee:
>> XXXXXX
>> (javax.ejb.EJBException)
>> javax.ejb.EJBException: Container has suffered a SystemException
>>
>>
>> org.apache.openejb.client.EJBObjectHandler._invoke(EJBObjectHandler.java:178)
>>
>>
>> org.apache.openejb.client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:117)
>>
>>
>> org.apache.openejb.client.proxy.Jdk13InvocationHandler.invoke(Jdk13InvocationHandler.java:52)
>> $Proxy7.deletePerson(Unknown Source)
>>
>>
>> net.kunye.personnel.client.employees.delete.DeleteEmployeeWizardAction.performAction(DeleteEmployeeWizardAction.java:87)
>>
>>
>> net.kunye.personnel.client.employees.delete.DeleteEmployeeWizardAction.performAction(DeleteEmployeeWizardAction.java:55)
>>
>>
>> org.openide.util.actions.NodeAction$DelegateAction$1.run(NodeAction.java:589)
>>
>>
>> org.netbeans.modules.openide.util.ActionsBridge.doPerformAction(ActionsBridge.java:77)
>>
>>
>> org.openide.util.actions.NodeAction$DelegateAction.actionPerformed(NodeAction.java:585)
>> javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
>>
>>
>> javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
>>
>>
>> javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
>> javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
>> javax.swing.AbstractButton.doClick(AbstractButton.java:357)
>>
>> javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1220)
>>
>>
>> javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1261)
>> java.awt.Component.processMouseEvent(Component.java:6041)
>> javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
>> java.awt.Component.processEvent(Component.java:5806)
>> java.awt.Container.processEvent(Container.java:2058)
>> java.awt.Component.dispatchEventImpl(Component.java:4413)
>> java.awt.Container.dispatchEventImpl(Container.java:2116)
>> java.awt.Component.dispatchEvent(Component.java:4243)
>> java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
>> java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
>> java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
>> java.awt.Container.dispatchEventImpl(Container.java:2102)
>> java.awt.Window.dispatchEventImpl(Window.java:2440)
>> java.awt.Component.dispatchEvent(Component.java:4243)
>> java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
>>
>>
>> org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:104)
>>
>>
>> java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
>>
>>
>> java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
>>
>>
>> java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
>> java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
>> java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
>> java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
>>
>> java.rmi.RemoteException: The server has encountered a fatal error:
>> Unknown
>> error in container java.lang.NullPointerException; nested exception is:
>> java.lang.NullPointerException
>>
>>
>> org.apache.openejb.server.ejbd.EjbRequestHandler.replyWithFatalError(EjbRequestHandler.java:425)
>>
>>
>> org.apache.openejb.server.ejbd.EjbRequestHandler.processRequest(EjbRequestHandler.java:205)
>>
>>
>> org.apache.openejb.server.ejbd.EjbDaemon.processEjbRequest(EjbDaemon.java:196)
>> org.apache.openejb.server.ejbd.EjbDaemon.service(EjbDaemon.java:149)
>> org.apache.openejb.server.ejbd.EjbServer.service(EjbServer.java:71)
>>
>>
>> org.apache.openejb.server.ejbd.KeepAliveServer$Session.service(KeepAliveServer.java:213)
>>
>>
>> org.apache.openejb.server.ejbd.KeepAliveServer.service(KeepAliveServer.java:233)
>> org.apache.openejb.server.ejbd.EjbServer.service(EjbServer.java:66)
>> org.apache.openejb.server.ServicePool$2.run(ServicePool.java:91)
>> org.apache.openejb.server.ServicePool$3.run(ServicePool.java:120)
>>
>>
>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>>
>>
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>> java.lang.Thread.run(Thread.java:619)
>>
>> java.lang.NullPointerException: null
>>
>>
>> org.apache.geronimo.openejb.GeronimoSecurityService.isCallerAuthorized(GeronimoSecurityService.java:96)
>>
>>
>> org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:151)
>>
>>
>> org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:136)
>>
>>
>> org.apache.openejb.server.ejbd.EjbRequestHandler.doEjbObject_BUSINESS_METHOD(EjbRequestHandler.java:238)
>>
>>
>> org.apache.openejb.server.ejbd.EjbRequestHandler.processRequest(EjbRequestHandler.java:129)
>>
>>
>> org.apache.openejb.server.ejbd.EjbDaemon.processEjbRequest(EjbDaemon.java:196)
>> org.apache.openejb.server.ejbd.EjbDaemon.service(EjbDaemon.java:149)
>> org.apache.openejb.server.ejbd.EjbServer.service(EjbServer.java:71)
>>
>>
>> org.apache.openejb.server.ejbd.KeepAliveServer$Session.service(KeepAliveServer.java:213)
>>
>>
>> org.apache.openejb.server.ejbd.KeepAliveServer.service(KeepAliveServer.java:233)
>> org.apache.openejb.server.ejbd.EjbServer.service(EjbServer.java:66)
>> org.apache.openejb.server.ServicePool$2.run(ServicePool.java:91)
>> org.apache.openejb.server.ServicePool$3.run(ServicePool.java:120)
>>
>>
>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>>
>>
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>> java.lang.Thread.run(Thread.java:619)
>>
>> ------- SNIP -------
>>
>> There after, when I try to invoke OTHER methods, I get this:
>>
>>
>>
>> 02 Nov 2009 20:29:45,990 ERROR -- Exception: Error creating new employee:
>> XXXXXX (javax.ejb.EJBException)
>> javax.ejb.EJBException: Unknown Container Exception:
>> java.rmi.RemoteException: Received invalid response code from server: -1
>>
>>
>> org.apache.openejb.client.EJBObjectHandler._invoke(EJBObjectHandler.java:184)
>>
>>
>> org.apache.openejb.client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:117)
>>
>>
>> org.apache.openejb.client.proxy.Jdk13InvocationHandler.invoke(Jdk13InvocationHandler.java:52)
>> $Proxy7.registerPerson(Unknown Source)
>>
>>
>> net.kunye.personnel.client.employees.add.AddEmployeeWizardAction.performAction(AddEmployeeWizardAction.java:69)
>>
>>
>> net.kunye.personnel.client.employees.add.AddEmployeeWizardAction.openWizard(AddEmployeeWizardAction.java:47)
>>
>>
>> net.kunye.personnel.client.navigation.NavigationRootTopComponent.btnAddEmployeeActionPerformed(NavigationRootTopComponent.java:107)
>>
>>
>> net.kunye.personnel.client.navigation.NavigationRootTopComponent.access$000(NavigationRootTopComponent.java:36)
>>
>>
>> net.kunye.personnel.client.navigation.NavigationRootTopComponent$1.actionPerformed(NavigationRootTopComponent.java:67)
>> javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
>>
>>
>> javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
>>
>>
>> javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
>> javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
>>
>>
>> javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
>> java.awt.Component.processMouseEvent(Component.java:6041)
>> javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
>> java.awt.Component.processEvent(Component.java:5806)
>> java.awt.Container.processEvent(Container.java:2058)
>> java.awt.Component.dispatchEventImpl(Component.java:4413)
>> java.awt.Container.dispatchEventImpl(Container.java:2116)
>> java.awt.Component.dispatchEvent(Component.java:4243)
>> java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
>> java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
>> java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
>> java.awt.Container.dispatchEventImpl(Container.java:2102)
>> java.awt.Window.dispatchEventImpl(Window.java:2440)
>> java.awt.Component.dispatchEvent(Component.java:4243)
>> java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
>>
>>
>> org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:104)
>>
>>
>> java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
>>
>>
>> java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
>>
>>
>> java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
>> java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
>> java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
>> java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
>>
>> java.rmi.RemoteException: Received invalid response code from server: -1
>>
>>
>> org.apache.openejb.client.EJBObjectHandler.businessMethod(EJBObjectHandler.java:239)
>>
>>
>> org.apache.openejb.client.EJBObjectHandler._invoke(EJBObjectHandler.java:157)
>>
>>
>> org.apache.openejb.client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:117)
>>
>>
>> org.apache.openejb.client.proxy.Jdk13InvocationHandler.invoke(Jdk13InvocationHandler.java:52)
>> $Proxy7.registerPerson(Unknown Source)
>>
>>
>> net.kunye.personnel.client.employees.add.AddEmployeeWizardAction.performAction(AddEmployeeWizardAction.java:69)
>>
>>
>> net.kunye.personnel.client.employees.add.AddEmployeeWizardAction.openWizard(AddEmployeeWizardAction.java:47)
>>
>>
>> net.kunye.personnel.client.navigation.NavigationRootTopComponent.btnAddEmployeeActionPerformed(NavigationRootTopComponent.java:107)
>>
>>
>> net.kunye.personnel.client.navigation.NavigationRootTopComponent.access$000(NavigationRootTopComponent.java:36)
>>
>>
>> net.kunye.personnel.client.navigation.NavigationRootTopComponent$1.actionPerformed(NavigationRootTopComponent.java:67)
>> javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
>>
>>
>> javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
>>
>>
>> javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
>> javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
>>
>>
>> javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
>> java.awt.Component.processMouseEvent(Component.java:6041)
>> javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
>> java.awt.Component.processEvent(Component.java:5806)
>> java.awt.Container.processEvent(Container.java:2058)
>> java.awt.Component.dispatchEventImpl(Component.java:4413)
>> java.awt.Container.dispatchEventImpl(Container.java:2116)
>> java.awt.Component.dispatchEvent(Component.java:4243)
>> java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
>> java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
>> java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
>> java.awt.Container.dispatchEventImpl(Container.java:2102)
>> java.awt.Window.dispatchEventImpl(Window.java:2440)
>> java.awt.Component.dispatchEvent(Component.java:4243)
>> java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
>>
>>
>> org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:104)
>>
>>
>> java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
>>
>>
>> java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
>>
>>
>> java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
>> java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
>> java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
>> java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
>>
>> Quintin Beukes
>>
>
>
Re: InitialContext / Comms protocol recovery from a SystemException
Posted by David Blevins <da...@visi.com>.
Haven't seen this before, looks like the null is coming from the
GeronimoSecurityService.
We test system and application exceptions in the itests for each bean
type on both the remote and local servers as well as on Tomcat. We
don't run those on Geronimo though, which we really should. There was
some code in Geronimo to do that at one point, but it got axed as
being too hard to maintain quite a while ago. I think we should bring
it back.
I'm not sure what it might take Geronimo plan-wise, but here's the app:
http://repo2.maven.org/maven2/org/apache/openejb/openejb-itests-beans/3.1.2/openejb-itests-beans-3.1.2.jar
And the client which includes all deps and is an executable jar:
http://repo2.maven.org/maven2/org/apache/openejb/openejb-itests-standalone-client/3.1.2/openejb-itests-standalone-client-3.1.2.jar
-David
On Nov 2, 2009, at 10:44 AM, Quintin Beukes wrote:
> Hey,
>
> When I get a SystemException from the container during remote EJB
> invocation, all future requests for the InitialContext are "broken".
> My
> exact situation (reason for causing the SystemException) is on my
> fault, but
> if there is another reason I think it's good to recover from it so
> to be
> able to continue serving requests. I got the following by invoking
> on a
> method which isn't in the remote EJB class/Remote interface.
>
> This is what I got:
> ------- SNIP -------
> 02 Nov 2009 20:28:33,649 ERROR -- Exception: Error deleting
> employee: XXXXXX
> (javax.ejb.EJBException)
> javax.ejb.EJBException: Container has suffered a SystemException
>
> org
> .apache
> .openejb.client.EJBObjectHandler._invoke(EJBObjectHandler.java:178)
>
> org
> .apache
> .openejb
> .client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:117)
>
> org
> .apache
> .openejb
> .client
> .proxy.Jdk13InvocationHandler.invoke(Jdk13InvocationHandler.java:52)
> $Proxy7.deletePerson(Unknown Source)
>
> net
> .kunye
> .personnel
> .client
> .employees
> .delete
> .DeleteEmployeeWizardAction
> .performAction(DeleteEmployeeWizardAction.java:87)
>
> net
> .kunye
> .personnel
> .client
> .employees
> .delete
> .DeleteEmployeeWizardAction
> .performAction(DeleteEmployeeWizardAction.java:55)
>
> org.openide.util.actions.NodeAction$DelegateAction
> $1.run(NodeAction.java:589)
>
> org
> .netbeans
> .modules
> .openide.util.ActionsBridge.doPerformAction(ActionsBridge.java:77)
>
> org.openide.util.actions.NodeAction
> $DelegateAction.actionPerformed(NodeAction.java:585)
>
> javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:
> 1995)
>
> javax.swing.AbstractButton
> $Handler.actionPerformed(AbstractButton.java:2318)
>
> javax
> .swing
> .DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
> javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:
> 242)
> javax.swing.AbstractButton.doClick(AbstractButton.java:357)
>
> javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:
> 1220)
>
> javax.swing.plaf.basic.BasicMenuItemUI
> $Handler.mouseReleased(BasicMenuItemUI.java:1261)
> java.awt.Component.processMouseEvent(Component.java:6041)
> javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
> java.awt.Component.processEvent(Component.java:5806)
> java.awt.Container.processEvent(Container.java:2058)
> java.awt.Component.dispatchEventImpl(Component.java:4413)
> java.awt.Container.dispatchEventImpl(Container.java:2116)
> java.awt.Component.dispatchEvent(Component.java:4243)
> java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:
> 4322)
> java.awt.LightweightDispatcher.processMouseEvent(Container.java:
> 3986)
> java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
> java.awt.Container.dispatchEventImpl(Container.java:2102)
> java.awt.Window.dispatchEventImpl(Window.java:2440)
> java.awt.Component.dispatchEvent(Component.java:4243)
> java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
>
> org
> .netbeans
> .core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:104)
>
> java
> .awt
> .EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:
> 273)
>
> java
> .awt
> .EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
>
> java
> .awt
> .EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:
> 173)
> java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:
> 168)
> java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:
> 160)
> java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
>
> java.rmi.RemoteException: The server has encountered a fatal error:
> Unknown
> error in container java.lang.NullPointerException; nested exception
> is:
> java.lang.NullPointerException
>
> org
> .apache
> .openejb
> .server
> .ejbd.EjbRequestHandler.replyWithFatalError(EjbRequestHandler.java:
> 425)
>
> org
> .apache
> .openejb
> .server.ejbd.EjbRequestHandler.processRequest(EjbRequestHandler.java:
> 205)
>
> org
> .apache
> .openejb.server.ejbd.EjbDaemon.processEjbRequest(EjbDaemon.java:196)
> org.apache.openejb.server.ejbd.EjbDaemon.service(EjbDaemon.java:
> 149)
> org.apache.openejb.server.ejbd.EjbServer.service(EjbServer.java:71)
>
> org.apache.openejb.server.ejbd.KeepAliveServer
> $Session.service(KeepAliveServer.java:213)
>
> org
> .apache
> .openejb.server.ejbd.KeepAliveServer.service(KeepAliveServer.java:233)
> org.apache.openejb.server.ejbd.EjbServer.service(EjbServer.java:66)
> org.apache.openejb.server.ServicePool$2.run(ServicePool.java:91)
> org.apache.openejb.server.ServicePool$3.run(ServicePool.java:120)
>
> java.util.concurrent.ThreadPoolExecutor
> $Worker.runTask(ThreadPoolExecutor.java:886)
>
> java.util.concurrent.ThreadPoolExecutor
> $Worker.run(ThreadPoolExecutor.java:908)
> java.lang.Thread.run(Thread.java:619)
>
> java.lang.NullPointerException: null
>
> org
> .apache
> .geronimo
> .openejb
> .GeronimoSecurityService
> .isCallerAuthorized(GeronimoSecurityService.java:96)
>
> org
> .apache
> .openejb
> .core.stateless.StatelessContainer.invoke(StatelessContainer.java:151)
>
> org
> .apache
> .openejb
> .core.stateless.StatelessContainer.invoke(StatelessContainer.java:136)
>
> org
> .apache
> .openejb
> .server
> .ejbd
> .EjbRequestHandler
> .doEjbObject_BUSINESS_METHOD(EjbRequestHandler.java:238)
>
> org
> .apache
> .openejb
> .server.ejbd.EjbRequestHandler.processRequest(EjbRequestHandler.java:
> 129)
>
> org
> .apache
> .openejb.server.ejbd.EjbDaemon.processEjbRequest(EjbDaemon.java:196)
> org.apache.openejb.server.ejbd.EjbDaemon.service(EjbDaemon.java:
> 149)
> org.apache.openejb.server.ejbd.EjbServer.service(EjbServer.java:71)
>
> org.apache.openejb.server.ejbd.KeepAliveServer
> $Session.service(KeepAliveServer.java:213)
>
> org
> .apache
> .openejb.server.ejbd.KeepAliveServer.service(KeepAliveServer.java:233)
> org.apache.openejb.server.ejbd.EjbServer.service(EjbServer.java:66)
> org.apache.openejb.server.ServicePool$2.run(ServicePool.java:91)
> org.apache.openejb.server.ServicePool$3.run(ServicePool.java:120)
>
> java.util.concurrent.ThreadPoolExecutor
> $Worker.runTask(ThreadPoolExecutor.java:886)
>
> java.util.concurrent.ThreadPoolExecutor
> $Worker.run(ThreadPoolExecutor.java:908)
> java.lang.Thread.run(Thread.java:619)
>
> ------- SNIP -------
>
> There after, when I try to invoke OTHER methods, I get this:
>
>
>
> 02 Nov 2009 20:29:45,990 ERROR -- Exception: Error creating new
> employee:
> XXXXXX (javax.ejb.EJBException)
> javax.ejb.EJBException: Unknown Container Exception:
> java.rmi.RemoteException: Received invalid response code from
> server: -1
>
> org
> .apache
> .openejb.client.EJBObjectHandler._invoke(EJBObjectHandler.java:184)
>
> org
> .apache
> .openejb
> .client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:117)
>
> org
> .apache
> .openejb
> .client
> .proxy.Jdk13InvocationHandler.invoke(Jdk13InvocationHandler.java:52)
> $Proxy7.registerPerson(Unknown Source)
>
> net
> .kunye
> .personnel
> .client
> .employees
> .add
> .AddEmployeeWizardAction.performAction(AddEmployeeWizardAction.java:
> 69)
>
> net
> .kunye
> .personnel
> .client
> .employees
> .add.AddEmployeeWizardAction.openWizard(AddEmployeeWizardAction.java:
> 47)
>
> net
> .kunye
> .personnel
> .client
> .navigation
> .NavigationRootTopComponent
> .btnAddEmployeeActionPerformed(NavigationRootTopComponent.java:107)
>
> net
> .kunye.personnel.client.navigation.NavigationRootTopComponent.access
> $000(NavigationRootTopComponent.java:36)
>
> net.kunye.personnel.client.navigation.NavigationRootTopComponent
> $1.actionPerformed(NavigationRootTopComponent.java:67)
>
> javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:
> 1995)
>
> javax.swing.AbstractButton
> $Handler.actionPerformed(AbstractButton.java:2318)
>
> javax
> .swing
> .DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
> javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:
> 242)
>
> javax
> .swing
> .plaf
> .basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
> java.awt.Component.processMouseEvent(Component.java:6041)
> javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
> java.awt.Component.processEvent(Component.java:5806)
> java.awt.Container.processEvent(Container.java:2058)
> java.awt.Component.dispatchEventImpl(Component.java:4413)
> java.awt.Container.dispatchEventImpl(Container.java:2116)
> java.awt.Component.dispatchEvent(Component.java:4243)
> java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:
> 4322)
> java.awt.LightweightDispatcher.processMouseEvent(Container.java:
> 3986)
> java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
> java.awt.Container.dispatchEventImpl(Container.java:2102)
> java.awt.Window.dispatchEventImpl(Window.java:2440)
> java.awt.Component.dispatchEvent(Component.java:4243)
> java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
>
> org
> .netbeans
> .core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:104)
>
> java
> .awt
> .EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:
> 273)
>
> java
> .awt
> .EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
>
> java
> .awt
> .EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:
> 173)
> java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:
> 168)
> java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:
> 160)
> java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
>
> java.rmi.RemoteException: Received invalid response code from
> server: -1
>
> org
> .apache
> .openejb
> .client.EJBObjectHandler.businessMethod(EJBObjectHandler.java:239)
>
> org
> .apache
> .openejb.client.EJBObjectHandler._invoke(EJBObjectHandler.java:157)
>
> org
> .apache
> .openejb
> .client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:117)
>
> org
> .apache
> .openejb
> .client
> .proxy.Jdk13InvocationHandler.invoke(Jdk13InvocationHandler.java:52)
> $Proxy7.registerPerson(Unknown Source)
>
> net
> .kunye
> .personnel
> .client
> .employees
> .add
> .AddEmployeeWizardAction.performAction(AddEmployeeWizardAction.java:
> 69)
>
> net
> .kunye
> .personnel
> .client
> .employees
> .add.AddEmployeeWizardAction.openWizard(AddEmployeeWizardAction.java:
> 47)
>
> net
> .kunye
> .personnel
> .client
> .navigation
> .NavigationRootTopComponent
> .btnAddEmployeeActionPerformed(NavigationRootTopComponent.java:107)
>
> net
> .kunye.personnel.client.navigation.NavigationRootTopComponent.access
> $000(NavigationRootTopComponent.java:36)
>
> net.kunye.personnel.client.navigation.NavigationRootTopComponent
> $1.actionPerformed(NavigationRootTopComponent.java:67)
>
> javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:
> 1995)
>
> javax.swing.AbstractButton
> $Handler.actionPerformed(AbstractButton.java:2318)
>
> javax
> .swing
> .DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
> javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:
> 242)
>
> javax
> .swing
> .plaf
> .basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
> java.awt.Component.processMouseEvent(Component.java:6041)
> javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
> java.awt.Component.processEvent(Component.java:5806)
> java.awt.Container.processEvent(Container.java:2058)
> java.awt.Component.dispatchEventImpl(Component.java:4413)
> java.awt.Container.dispatchEventImpl(Container.java:2116)
> java.awt.Component.dispatchEvent(Component.java:4243)
> java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:
> 4322)
> java.awt.LightweightDispatcher.processMouseEvent(Container.java:
> 3986)
> java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
> java.awt.Container.dispatchEventImpl(Container.java:2102)
> java.awt.Window.dispatchEventImpl(Window.java:2440)
> java.awt.Component.dispatchEvent(Component.java:4243)
> java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
>
> org
> .netbeans
> .core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:104)
>
> java
> .awt
> .EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:
> 273)
>
> java
> .awt
> .EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
>
> java
> .awt
> .EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:
> 173)
> java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:
> 168)
> java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:
> 160)
> java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
>
> Quintin Beukes