David, The deployment plan is http://issues.apache.org/jira/secure/attachment/12324904/specdb.xml and the deployment string is: java -jar bin/deployer.jar --user system --password manager deploy repository/tranql/rars/tranql-connector-derby-embed-local-1.1.rar specdb.xml (see http://issues.apache.org/jira/browse/GERONIMO-1800 for other details). I'm using Geronimo 1.0-Jetty release.
I really really hope this would help. :) Thank you very much! Vasily -----Original Message----- From: David Jencks [mailto:[EMAIL PROTECTED] Sent: Sunday, April 09, 2006 10:49 AM To: [email protected] Subject: Re: TranQL issue at SPECjAppServer2004 atomicity tests It looks to me as if a local-tx only connector is being used as if it supports xa. It shouldn't be possible to deploy a connector with a correct ra.xml in such a way as to create this problem. Can you supply the geronimo plan for the connector, and indicate which connector you deployed, and exactly how you deployed it? With this information figuring out what is wrong and how to fix it should be easy (famous last words :-) Many thanks, david jencks On Apr 8, 2006, at 2:10 PM, Zakharov, Vasily M wrote: > Hi, all, > > I've successfuly deployed SPECjAppServer2004 benchmark on Geronimo 1.0 > (see http://issues.apache.org/jira/browse/GERONIMO-1800), but I have > trouble running the basic atomicity tests > (http://localhost:8080/SPECjAppServer/ page, link "Atomicity Tests") > that check the correctness of the benchmark operation - all three > tests > are marked FAILED. > > The investigation (see below) showed that the root cause for the > problem > is the following piece of code: > > org.tranql.connector.jdbc.ManagedJDBCConnection: > 123 public XAResource getXAResource() throws ResourceException { > 124 throw new NotSupportedException("XAResource not available > from > a LocalTransaction connection"); > 125 } > > The question is, how critical this situation is? Does it mean > SPECjAppServer2004 uses things it shouldn't use? Or the problem > lies in > TranQL implementation, or maybe Derby database or Derby JDBC > driver? Or > does it mean SPECjAppServer2004 can't run on Geronimo at all? > > Any ideas, suggestion and comments are highly welcome! > > Thanks! > > > Here's the original stack displayed in Geronimo console window at each > atomicity tests' run: > > javax.transaction.TransactionRolledbackException: > javax.ejb.FinderException: Error executing statement: SELECT C.C_ID > FROM > C_CUSTOMER C WHERE C.C_ID = ? > at > org.openejb.transaction.ContainerPolicy$TxRequired.invoke > (ContainerPolic > y.java:126) > at > org.openejb.transaction.TransactionContextInterceptor.invoke > (Transaction > ContextInterceptor.java:80) > at > org.openejb.slsb.StatelessInstanceInterceptor.invoke > (StatelessInstanceIn > terceptor.java:98) > at > org.openejb.transaction.ContainerPolicy$TxRequired.invoke > (ContainerPolic > y.java:140) > at > org.openejb.transaction.TransactionContextInterceptor.invoke > (Transaction > ContextInterceptor.java:80) > at > org.openejb.SystemExceptionInterceptor.invoke > (SystemExceptionInterceptor > .java:82) > at > org.openejb.GenericEJBContainer.invoke(GenericEJBContainer.java:238) > at > org.openejb.proxy.EJBMethodInterceptor.intercept > (EJBMethodInterceptor.ja > va:129) > at > org.openejb.proxy.SessionEJBObject$$EnhancerByCGLIB$ > $4084bef.checkCustom > erCredit(<generated>) > at > org.spec.jappserver.servlet.helper.SpecAction.atomicityTestTwo > (SpecActio > n.java:166) > at > org.spec.jappserver.servlet.helper.SpecServletAction.doAtomicityTests( > Sp > ecServletAction.java:1304) > at > org.spec.jappserver.servlet.SpecAppServlet.performTask > (SpecAppServlet.ja > va:166) > at > org.spec.jappserver.servlet.SpecAppServlet.doGet > (SpecAppServlet.java:96) > at javax.servlet.http.HttpServlet.service(HttpServlet.java: > 595) > at javax.servlet.http.HttpServlet.service(HttpServlet.java: > 688) > at > org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:428) > at > org.apache.geronimo.jetty.JettyServletHolder.handle > (JettyServletHolder.j > ava:99) > at > org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter > (Web > ApplicationHandler.java:830) > at > org.mortbay.jetty.servlet.JSR154Filter.doFilter(JSR154Filter.java:170) > at > org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter > (Web > ApplicationHandler.java:821) > at > org.mortbay.jetty.servlet.WebApplicationHandler.dispatch > (WebApplicationH > andler.java:471) > at > org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java: > 568) > at org.mortbay.http.HttpContext.handle(HttpContext.java:1530) > at > org.mortbay.jetty.servlet.WebApplicationContext.handle > (WebApplicationCon > text.java:633) > at org.mortbay.http.HttpContext.handle(HttpContext.java:1482) > at org.mortbay.http.HttpServer.service(HttpServer.java:909) > at > org.mortbay.http.HttpConnection.service(HttpConnection.java:816) > at > org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:982) > at > org.mortbay.http.HttpConnection.handle(HttpConnection.java:833) > at > org.mortbay.http.SocketListener.handleConnection > (SocketListener.java:244 > ) > at > org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357) > at > org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534) > > Note that the SQL prepared statement causing the error is correct and > references the table and fields that really exist in the database. > Executing this statement from a separate Java application using JDBC > causes no problem. > > The code throwing this exception is: > > org.openejb.transaction.ContainerPolicy$TxRequired.invoke(): > 117 try { > 118 ejbInvocation.setTransactionContext(callerContext); > 119 return interceptor.invoke(ejbInvocation); > 120 } catch (Throwable t){ > 121 callerContext.setRollbackOnly(); > 122 if (ejbInvocation.getType().isLocal()) { > 123 throw new > TransactionRolledbackLocalException().initCause(t); > 124 } else { > 125 // can't set an initCause on a > TransactionRolledbackException > 126 -> throw new TransactionRolledbackException(t.getMessage > ()); > 127 } > 128 } finally { > 129 ejbInvocation.setTransactionContext(null); > 130 } > > So, the real cause for the exception is unknown. Adding > t.printStackTrace() at line 125 provided the following stack: > > javax.ejb.EJBException: javax.ejb.FinderException: Error executing > statement: SELECT C.C_ID FROM C_CUSTOMER C WHERE C.C_ID = ? > at > org.spec.jappserver.corp.customerses.ejb.CustomerSesEJB.checkCustomerC > re > dit(CustomerSesEJB.java:246) > at > org.spec.jappserver.corp.customerses.ejb.CustomerSesEJB$ > $FastClassByCGLI > B$$c445ce6f.invoke(<generated>) > at > org.openejb.dispatch.AbstractMethodOperation.invoke > (AbstractMethodOperat > ion.java:90) > at > org.openejb.slsb.BusinessMethod.execute(BusinessMethod.java:67) > at > org.openejb.dispatch.DispatchInterceptor.invoke > (DispatchInterceptor.java > :72) > at > org.apache.geronimo.naming.java.ComponentContextInterceptor.invoke > (Compo > nentContextInterceptor.java:56) > at > org.openejb.ConnectionTrackingInterceptor.invoke > (ConnectionTrackingInter > ceptor.java:81) > at > org.openejb.transaction.ContainerPolicy$TxRequired.invoke > (ContainerPolic > y.java:119) > at > org.openejb.transaction.TransactionContextInterceptor.invoke > (Transaction > ContextInterceptor.java:80) > at > org.openejb.slsb.StatelessInstanceInterceptor.invoke > (StatelessInstanceIn > terceptor.java:98) > at > org.openejb.transaction.ContainerPolicy$TxRequired.invoke > (ContainerPolic > y.java:142) > at > org.openejb.transaction.TransactionContextInterceptor.invoke > (Transaction > ContextInterceptor.java:80) > at > org.openejb.SystemExceptionInterceptor.invoke > (SystemExceptionInterceptor > .java:82) > at > org.openejb.GenericEJBContainer.invoke(GenericEJBContainer.java:238) > at > org.openejb.proxy.EJBMethodInterceptor.intercept > (EJBMethodInterceptor.ja > va:129) > at > org.openejb.proxy.SessionEJBObject$$EnhancerByCGLIB$ > $82edd9c9.checkCusto > merCredit(<generated>) > at > org.spec.jappserver.servlet.helper.SpecAction.atomicityTestTwo > (SpecActio > n.java:166) > at > org.spec.jappserver.servlet.helper.SpecServletAction.doAtomicityTests( > Sp > ecServletAction.java:1304) > at > org.spec.jappserver.servlet.SpecAppServlet.performTask > (SpecAppServlet.ja > va:166) > at > org.spec.jappserver.servlet.SpecAppServlet.doGet > (SpecAppServlet.java:96) > at javax.servlet.http.HttpServlet.service(HttpServlet.java: > 595) > at javax.servlet.http.HttpServlet.service(HttpServlet.java: > 688) > at > org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:428) > at > org.apache.geronimo.jetty.JettyServletHolder.handle > (JettyServletHolder.j > ava:99) > at > org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter > (Web > ApplicationHandler.java:830) > at > org.mortbay.jetty.servlet.JSR154Filter.doFilter(JSR154Filter.java:170) > at > org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter > (Web > ApplicationHandler.java:821) > at > org.mortbay.jetty.servlet.WebApplicationHandler.dispatch > (WebApplicationH > andler.java:471) > at > org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java: > 568) > at org.mortbay.http.HttpContext.handle(HttpContext.java:1530) > at > org.mortbay.jetty.servlet.WebApplicationContext.handle > (WebApplicationCon > text.java:633) > at org.mortbay.http.HttpContext.handle(HttpContext.java:1482) > at org.mortbay.http.HttpServer.service(HttpServer.java:909) > at > org.mortbay.http.HttpConnection.service(HttpConnection.java:816) > at > org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:982) > at > org.mortbay.http.HttpConnection.handle(HttpConnection.java:833) > at > org.mortbay.http.SocketListener.handleConnection > (SocketListener.java:244 > ) > at > org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357) > at > org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534) > Caused by: javax.ejb.FinderException: Error executing statement: > SELECT > C.C_ID FROM C_CUSTOMER C WHERE C.C_ID = ? > at > org.openejb.entity.cmp.SingleValuedFinder.execute > (SingleValuedFinder.jav > a:83) > at > org.openejb.dispatch.DispatchInterceptor.invoke > (DispatchInterceptor.java > :72) > at > org.apache.geronimo.naming.java.ComponentContextInterceptor.invoke > (Compo > nentContextInterceptor.java:56) > at > org.openejb.ConnectionTrackingInterceptor.invoke > (ConnectionTrackingInter > ceptor.java:81) > at > org.openejb.entity.EntityInstanceInterceptor.invoke > (EntityInstanceInterc > eptor.java:136) > at > org.openejb.entity.cmp.InTxCacheInterceptor.invoke > (InTxCacheInterceptor. > java:90) > at > org.openejb.transaction.ContainerPolicy$TxRequired.invoke > (ContainerPolic > y.java:119) > at > org.openejb.transaction.TransactionContextInterceptor.invoke > (Transaction > ContextInterceptor.java:80) > at > org.openejb.SystemExceptionInterceptor.invoke > (SystemExceptionInterceptor > .java:82) > at > org.openejb.GenericEJBContainer.invoke(GenericEJBContainer.java:238) > at > org.openejb.proxy.EJBMethodInterceptor.intercept > (EJBMethodInterceptor.ja > va:129) > at > org.openejb.proxy.EntityEJBLocalHome$$EnhancerByCGLIB$ > $bc77798c.findByPr > imaryKey(<generated>) > at > org.spec.jappserver.corp.customerses.ejb.CustomerSesEJB.checkCustomerC > re > dit(CustomerSesEJB.java:243) > ... 38 more > Caused by: org.tranql.ql.QueryException: Error executing statement: > SELECT C.C_ID FROM C_CUSTOMER C WHERE C.C_ID = ? > at > org.tranql.sql.jdbc.JDBCQueryCommand.execute(JDBCQueryCommand.java:79) > at > org.tranql.cache.cache.FindByPKCacheQueryCommand.execute > (FindByPKCacheQu > eryCommand.java:66) > at org.openejb.entity.cmp.CMPFinder.execute(CMPFinder.java:99) > at > org.openejb.entity.cmp.SingleValuedFinder.execute > (SingleValuedFinder.jav > a:80) > ... 50 more > Caused by: java.sql.SQLException > at > org.tranql.connector.jdbc.DataSource.getConnection(DataSource.java:61) > at > $javax.sql.DataSource$$FastClassByCGLIB$$6525cafd.invoke(<generated>) > at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149) > at > org.apache.geronimo.connector.ConnectorMethodInterceptor.intercept > (Conne > ctorMethodInterceptor.java:53) > at > $javax.sql.DataSource$$EnhancerByCGLIB$$5149252c.getConnection > (<generate > d>) > at > org.tranql.sql.DataSourceDelegate.getConnection > (DataSourceDelegate.java: > 39) > at > org.tranql.sql.jdbc.JDBCQueryCommand.execute(JDBCQueryCommand.java:61) > ... 53 more > Caused by: XAResource not available from a LocalTransaction connection > at > org.tranql.connector.jdbc.ManagedJDBCConnection.getXAResource > (ManagedJDB > CConnection.java:124) > at > org.apache.geronimo.connector.outbound.XAResourceInsertionInterceptor. > ge > tConnection(XAResourceInsertionInterceptor.java:43) > at > org.apache.geronimo.connector.outbound.SinglePoolConnectionInterceptor > .i > nternalGetConnection(SinglePoolConnectionInterceptor.java:63) > at > org.apache.geronimo.connector.outbound.AbstractSinglePoolConnectionInt > er > ceptor.getConnection(AbstractSinglePoolConnectionInterceptor.java:73) > at > org.apache.geronimo.connector.outbound.TransactionEnlistingInterceptor > .g > etConnection(TransactionEnlistingInterceptor.java:47) > at > org.apache.geronimo.connector.outbound.TransactionCachingInterceptor.g > et > Connection(TransactionCachingInterceptor.java:81) > at > org.apache.geronimo.connector.outbound.ConnectionHandleInterceptor.get > Co > nnection(ConnectionHandleInterceptor.java:43) > at > org.apache.geronimo.connector.outbound.TCCLInterceptor.getConnection > (TCC > LInterceptor.java:39) > at > org.apache.geronimo.connector.outbound.ConnectionTrackingInterceptor.g > et > Connection(ConnectionTrackingInterceptor.java:66) > at > org.apache.geronimo.connector.outbound.AbstractConnectionManager.alloc > at > eConnection(AbstractConnectionManager.java:57) > at > org.tranql.connector.jdbc.DataSource.getConnection(DataSource.java:56) > ... 59 more > > Vasily Zakharov > Intel Middleware Product Division
