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