Hello,

I have strange problem when I try to rollback transaction which delete and create some 
amount of entity beans.
After rollback if I try to use entity bean I receive NullPointerException exception in 
ejbLoad method
because of entityContext.getPrimaryKey returns NULL!

To reproduce problem I create stateless session bean with 2 methods: 
doTestRemove(see appendix1) and doTestFail (see appendix 2)
doTestFail throws exception to force rollback.

1) I call doTestRemove. The output log is in Appendix 3. You see I successfully remove 
2 beans and create 2 beans

2) I call doTestFail. The output log is in Appendix 4.

3) I call doTestRemove. The output log is in Appendix 5.
STRANGE thing: JBoss calls ejbStore 3 times for second bean (pk = 2) and 0 time for 
first bean (pk = 1).
I think the output log must be the same as in first time (2 calls for first bean, 2 
calls for second bean)
By the way, why does JBoss call ejbStore 2 times not 1 time?

4) I call doTestRemove once again. The output log is in Appendix 6.
Now I get NullPointerException in ejbLoad method because entityContext.getPrimaryKey 
returns NULL

Comments? Suggestions?

Thanks,

Dmitri Ulitski



Appendix 1)

    public void doTestRemove() throws RemoteException {
        try {
            Context ctx = new InitialContext();

            TestHome home = (TestHome)ctx.lookup("TestApp");
            Enumeration enum = home.findAll();

            while (enum.hasMoreElements()) {
                TestInterface test = (TestInterface) enum.nextElement();
                test.remove();
            }
            TestInterface test = home.create(new Integer(1));
            Integer pk = test.getId();
            test = home.create(new Integer(2));
            pk = test.getId();
        } catch (Exception ex) {
            throw new RemoteException("", ex);
        }
    }

Appendix 2)

    public void doTestFail() throws RemoteException {
        try {
            Context ctx = new InitialContext();

            TestHome home = (TestHome)ctx.lookup("TestApp");
            Enumeration enum = home.findAll();

            while (enum.hasMoreElements()) {
                TestInterface test = (TestInterface) enum.nextElement();
                test.remove();
            }
            TestInterface test = home.create(new Integer(1));
            Integer pk = test.getId();
            throw new Exception("Fail"); // force rollback
        } catch (Exception ex) {
            throw new RemoteException("", ex);
        }
    }


Appendix 3)
call doTestRemove

[TestApp] setEntityContext
[TestApp] ejbFindAll
[TestApp] ejbActivate
[TestApp] ejbLoad (pk = 1)
[TestApp] ejbRemove (pk = 1)
[TestApp] ejbActivate
[TestApp] ejbLoad (pk = 2)
[TestApp] ejbRemove (pk = 2)
[TestApp] ejbCreate
[TestApp] ejbPostCreate
[TestApp] getId (pk = 1)
[TestApp] setEntityContext
[TestApp] ejbCreate
[TestApp] ejbPostCreate
[TestApp] getId (pk = 2)
[BoxAction] ejbStore (pk = 1)
[BoxAction] ejbStore (pk = 1)
[BoxAction] ejbStore (pk = 2)
[BoxAction] ejbStore (pk = 2)



Appendix 4)
call doTestFail

[TestApp] setEntityContext
[TestApp] ejbFindAll
[TestApp] ejbRemove (pk = 1)
[TestApp] ejbRemove (pk = 2)
[TestApp] ejbCreate
[TestApp] ejbPostCreate
[TestApp] getId (pk = 1)
[BoxAction] ejbStore (pk = 1)
[BoxAction] ejbStore (pk = 1)
[BoxAction] TRANSACTION ROLLBACK EXCEPTION:; nested exception is: 
        java.lang.Exception: Fail; nested exception is: 
        java.rmi.RemoteException: ; nested exception is: 
        java.lang.Exception: Fail
[BoxAction] java.rmi.RemoteException: ; nested exception is: 
[BoxAction]     java.lang.Exception: Fail
[BoxAction] java.lang.Exception: Fail
[BoxAction]     at 
com.nimbuspartners.box.BoxActionBean.doTestFail(BoxActionBean.java:61)
[BoxAction]     at java.lang.reflect.Method.invoke(Native Method)
[BoxAction]     at 
org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invoke(StatelessSessionContainer.java:472)
[BoxAction]     at 
org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invoke(StatelessSessionInstanceInterceptor.java:87)
[BoxAction]     at 
org.jboss.ejb.plugins.TxInterceptorCMT.invokeNext(TxInterceptorCMT.java:133)
[BoxAction]     at 
org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:263)
[BoxAction]     at 
org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:99)
[BoxAction]     at 
org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:144)
[BoxAction]     at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:192)
[BoxAction]     at 
org.jboss.ejb.StatelessSessionContainer.invoke(StatelessSessionContainer.java:271)
[BoxAction]     at 
org.jboss.ejb.plugins.jrmp.server.JRMPContainerInvoker.invoke(JRMPContainerInvoker.java:163)
[BoxAction]     at 
org.jboss.ejb.plugins.jrmp.server.JRMPContainerInvoker.invoke(JRMPContainerInvoker.java:228)
[BoxAction]     at 
org.jboss.ejb.plugins.jrmp.interfaces.StatelessSessionProxy.invoke(StatelessSessionProxy.java:152)
[BoxAction]     at $Proxy9.doTestFail(Unknown Source)
[BoxAction]     at com.nimbuspartners.box.BoxServlet.doTestFail(BoxServlet.java:135)
[BoxAction]     at com.nimbuspartners.box.BoxServlet.doGet(BoxServlet.java:59)
[BoxAction]     at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
[BoxAction]     at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
[BoxAction]     at 
org.apache.tomcat.core.ServletWrapper.doService(ServletWrapper.java:404)
[BoxAction]     at org.apache.tomcat.core.Handler.service(Handler.java:286)
[BoxAction]     at 
org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:372)
[BoxAction]     at 
org.apache.tomcat.core.ContextManager.internalService(ContextManager.java:799)
[BoxAction]     at 
org.apache.tomcat.core.ContextManager.service(ContextManager.java:745)
[BoxAction]     at 
org.apache.tomcat.service.http.HttpConnectionHandler.processConnection(HttpConnectionHandler.java:210)
[BoxAction]     at 
org.apache.tomcat.service.TcpWorkerThread.runIt(PoolTcpEndpoint.java:407)
[BoxAction]     at 
org.apache.tomcat.util.ThreadPool$ControlRunnable.run(ThreadPool.java:498)
[BoxAction]     at java.lang.Thread.run(Thread.java:484)



Appendix 5)
call first time doTestRemove after doTestFail

[TestApp] ejbFindAll
[TestApp] ejbActivate
[TestApp] ejbLoad (pk = 1)
[TestApp] ejbRemove (pk = 1)
[TestApp] ejbActivate
[TestApp] ejbLoad (pk = 2)
[TestApp] ejbRemove (pk = 2)
[TestApp] ejbCreate
[TestApp] ejbPostCreate
[TestApp] getId (pk = 1)
[TestApp] ejbCreate
[TestApp] ejbPostCreate
[TestApp] getId (pk = 2)
[BoxAction] ejbStore (pk = 2)
[BoxAction] ejbStore (pk = 2)
[BoxAction] ejbStore (pk = 2)



Appendix 6)
call second time doTestRemove after doTestFail

[TestApp] ejbFindAll
[TestApp] ejbRemove (pk = 2)
[TestApp] ejbLoad
[TestApp] TRANSACTION ROLLBACK EXCEPTION:null; nested exception is: 
        javax.ejb.EJBException
[TestApp] java.lang.NullPointerException
[TestApp]       at com.nimbuspartners.box.TestBean.ejbLoad(TestBean.java:41)
[TestApp]       at java.lang.reflect.Method.invoke(Native Method)
[TestApp]       at 
org.jboss.ejb.plugins.BMPPersistenceManager.loadEntity(BMPPersistenceManager.java:275)
[TestApp]       at 
org.jboss.ejb.plugins.EntitySynchronizationInterceptor.invoke(EntitySynchronizationInterceptor.java:192)
[TestApp]       at 
org.jboss.ejb.plugins.EntityInstanceInterceptor.invoke(EntityInstanceInterceptor.java:204)
[TestApp]       at 
org.jboss.ejb.plugins.TxInterceptorCMT.invokeNext(TxInterceptorCMT.java:133)
[TestApp]       at 
org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:263)
[TestApp]       at 
org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:99)
[TestApp]       at 
org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:144)
[TestApp]       at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:192)
[TestApp]       at org.jboss.ejb.EntityContainer.invoke(EntityContainer.java:323)
[TestApp]       at 
org.jboss.ejb.plugins.jrmp.server.JRMPContainerInvoker.invoke(JRMPContainerInvoker.java:237)
[TestApp]       at 
org.jboss.ejb.plugins.jrmp.interfaces.EntityProxy.invoke(EntityProxy.java:146)
[TestApp]       at $Proxy7.remove(Unknown Source)
[TestApp]       at 
com.nimbuspartners.box.BoxActionBean.doTestRemove(BoxActionBean.java:37)
[TestApp]       at java.lang.reflect.Method.invoke(Native Method)
[TestApp]       at 
org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invoke(StatelessSessionContainer.java:472)
[TestApp]       at 
org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invoke(StatelessSessionInstanceInterceptor.java:87)
[TestApp]       at 
org.jboss.ejb.plugins.TxInterceptorCMT.invokeNext(TxInterceptorCMT.java:133)
[TestApp]       at 
org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:263)
[TestApp]       at 
org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:99)
[TestApp]       at 
org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:144)
[TestApp]       at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:192)
[TestApp]       at 
org.jboss.ejb.StatelessSessionContainer.invoke(StatelessSessionContainer.java:271)
[TestApp]       at 
org.jboss.ejb.plugins.jrmp.server.JRMPContainerInvoker.invoke(JRMPContainerInvoker.java:163)
[TestApp]       at 
org.jboss.ejb.plugins.jrmp.server.JRMPContainerInvoker.invoke(JRMPContainerInvoker.java:228)
[TestApp]       at 
org.jboss.ejb.plugins.jrmp.interfaces.StatelessSessionProxy.invoke(StatelessSessionProxy.java:152)
[TestApp]       at $Proxy9.doTestRemove(Unknown Source)
[TestApp]       at com.nimbuspartners.box.BoxServlet.doTest(BoxServlet.java:124)
[TestApp]       at com.nimbuspartners.box.BoxServlet.doGet(BoxServlet.java:52)
[TestApp]       at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
[TestApp]       at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
[TestApp]       at 
org.apache.tomcat.core.ServletWrapper.doService(ServletWrapper.java:404)
[TestApp]       at org.apache.tomcat.core.Handler.service(Handler.java:286)
[TestApp]       at 
org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:372)
[TestApp]       at 
org.apache.tomcat.core.ContextManager.internalService(ContextManager.java:799)
[TestApp]       at 
org.apache.tomcat.core.ContextManager.service(ContextManager.java:745)
[TestApp]       at 
org.apache.tomcat.service.http.HttpConnectionHandler.processConnection(HttpConnectionHandler.java:210)
[TestApp]       at 
org.apache.tomcat.service.TcpWorkerThread.runIt(PoolTcpEndpoint.java:407)
[TestApp]       at 
org.apache.tomcat.util.ThreadPool$ControlRunnable.run(ThreadPool.java:498)
[TestApp]       at java.lang.Thread.run(Thread.java:484)
[BoxAction] TRANSACTION ROLLBACK EXCEPTION:; nested exception is: 
        javax.transaction.TransactionRolledbackException: null; nested exception is: 
        javax.ejb.EJBException; nested exception is: 
        java.rmi.RemoteException: ; nested exception is: 
        javax.transaction.TransactionRolledbackException: null; nested exception is: 
        javax.ejb.EJBException
[BoxAction] java.rmi.RemoteException: ; nested exception is: 
[BoxAction]     javax.transaction.TransactionRolledbackException: null; nested 
exception is: 
[BoxAction]     javax.ejb.EJBException
[BoxAction] javax.transaction.TransactionRolledbackException: null; nested exception 
is: 
[BoxAction]     javax.ejb.EJBException
[BoxAction] javax.ejb.EJBException
[BoxAction]     at 
org.jboss.ejb.plugins.BMPPersistenceManager.loadEntity(BMPPersistenceManager.java:294)
[BoxAction]     at 
org.jboss.ejb.plugins.EntitySynchronizationInterceptor.invoke(EntitySynchronizationInterceptor.java:192)
[BoxAction]     at 
org.jboss.ejb.plugins.EntityInstanceInterceptor.invoke(EntityInstanceInterceptor.java:204)
[BoxAction]     at 
org.jboss.ejb.plugins.TxInterceptorCMT.invokeNext(TxInterceptorCMT.java:133)
[BoxAction]     at 
org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:263)
[BoxAction]     at 
org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:99)
[BoxAction]     at 
org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:144)
[BoxAction]     at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:192)
[BoxAction]     at org.jboss.ejb.EntityContainer.invoke(EntityContainer.java:323)
[BoxAction]     at 
org.jboss.ejb.plugins.jrmp.server.JRMPContainerInvoker.invoke(JRMPContainerInvoker.java:237)
[BoxAction]     at 
org.jboss.ejb.plugins.jrmp.interfaces.EntityProxy.invoke(EntityProxy.java:146)
[BoxAction]     at $Proxy7.remove(Unknown Source)
[BoxAction]     at 
com.nimbuspartners.box.BoxActionBean.doTestRemove(BoxActionBean.java:37)
[BoxAction]     at java.lang.reflect.Method.invoke(Native Method)
[BoxAction]     at 
org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invoke(StatelessSessionContainer.java:472)
[BoxAction]     at 
org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invoke(StatelessSessionInstanceInterceptor.java:87)
[BoxAction]     at 
org.jboss.ejb.plugins.TxInterceptorCMT.invokeNext(TxInterceptorCMT.java:133)
[BoxAction]     at 
org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:263)
[BoxAction]     at 
org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:99)
[BoxAction]     at 
org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:144)
[BoxAction]     at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:192)
[BoxAction]     at 
org.jboss.ejb.StatelessSessionContainer.invoke(StatelessSessionContainer.java:271)
[BoxAction]     at 
org.jboss.ejb.plugins.jrmp.server.JRMPContainerInvoker.invoke(JRMPContainerInvoker.java:163)
[BoxAction]     at 
org.jboss.ejb.plugins.jrmp.server.JRMPContainerInvoker.invoke(JRMPContainerInvoker.java:228)
[BoxAction]     at 
org.jboss.ejb.plugins.jrmp.interfaces.StatelessSessionProxy.invoke(StatelessSessionProxy.java:152)
[BoxAction]     at $Proxy9.doTestRemove(Unknown Source)
[BoxAction]     at com.nimbuspartners.box.BoxServlet.doTest(BoxServlet.java:124)
[BoxAction]     at com.nimbuspartners.box.BoxServlet.doGet(BoxServlet.java:52)
[BoxAction]     at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
[BoxAction]     at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
[BoxAction]     at 
org.apache.tomcat.core.ServletWrapper.doService(ServletWrapper.java:404)
[BoxAction]     at org.apache.tomcat.core.Handler.service(Handler.java:286)
[BoxAction]     at 
org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:372)
[BoxAction]     at 
org.apache.tomcat.core.ContextManager.internalService(ContextManager.java:799)
[BoxAction]     at 
org.apache.tomcat.core.ContextManager.service(ContextManager.java:745)
[BoxAction]     at 
org.apache.tomcat.service.http.HttpConnectionHandler.processConnection(HttpConnectionHandler.java:210)
[BoxAction]     at 
org.apache.tomcat.service.TcpWorkerThread.runIt(PoolTcpEndpoint.java:407)
[BoxAction]     at 
org.apache.tomcat.util.ThreadPool$ControlRunnable.run(ThreadPool.java:498)
[BoxAction]     at java.lang.Thread.run(Thread.java:484)



--
--------------------------------------------------------------
To subscribe:        [EMAIL PROTECTED]
To unsubscribe:      [EMAIL PROTECTED]
List Help?:          [EMAIL PROTECTED]

Reply via email to