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