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 <[email protected]>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




Reply via email to