Vasily,
To my understanding , Geronimo 1.0 supports only one isolation level , namely read-uncommitted ( I suppose...!) Not sure with the 1.1 release. Thanks, Santosh. "Don't talk about yourself; it will be done when you leave. " -----Original Message----- From: Zakharov, Vasily M [mailto:[EMAIL PROTECTED] Sent: Tuesday, May 30, 2006 10:16 PM To: [email protected] Subject: NPE in TranQL when using READ-COMMITTED Transaction Isolation Hi, all, I'm getting a NullPointerException in TranQL when changing Transaction Isolation mode with Derby. Is it a flaw in TranQL/Derby/connector, or I'm doing something wrong? I have a simple entity like this: <entity> <ejb-name>ItemEnt</ejb-name> <table-name>O_ITEM</table-name> <cmp-field-mapping> <cmp-field-name>discount</cmp-field-name> <table-column>I_DISCOUNT</table-column> </cmp-field-mapping> <cmp-field-mapping> <cmp-field-name>name</cmp-field-name> <table-column>I_NAME</table-column> </cmp-field-mapping> <cmp-field-mapping> <cmp-field-name>id</cmp-field-name> <table-column>I_ID</table-column> </cmp-field-mapping> <cmp-field-mapping> <cmp-field-name>description</cmp-field-name> <table-column>I_DESC</table-column> </cmp-field-mapping> <cmp-field-mapping> <cmp-field-name>price</cmp-field-name> <table-column>I_PRICE</table-column> </cmp-field-mapping> <cmp-field-mapping> <cmp-field-name>category</cmp-field-name> <table-column>I_CATEGORY</table-column> </cmp-field-mapping> </entity> and it works fine. However if I add the following before </entity>: <cache> <isolation-level>read-committed</isolation-level> <size>100</size> </cache> It immediately stops working. Addressing the entity causes NullPointerException in TranQL as shown below. The problem occurs if <isolation-level> is "read-committed" or "repeatable-read"; if it is "read-uncommitted", the entity works fine. The value of <size> doesn't matter, the effect is the same. Does Derby support read-committed isolation? DB Info in Geronimo Console states that it should. I use repository/tranql/rars/tranql-connector-derby-embed-xa-1.1.rar connector with the following deployment plan: <?xml version="1.0" encoding="UTF-8"?> <connector xmlns="http://geronimo.apache.org/xml/ns/j2ee/connector-1.0" configId="SPECjAppServerDB" parentId="geronimo/system-database/1.0/car"> <resourceadapter> <outbound-resourceadapter> <connection-definition> <connectionfactory-interface>javax.sql.DataSource</connectionfactory-int erface> <connectiondefinition-instance> <name>SPECDB</name> <config-property-setting name="DatabaseName">SPECDB</config-property-setting> <connectionmanager> <xa-transaction> <transaction-caching/> </xa-transaction> <single-pool> <max-size>100</max-size> <min-size>10</min-size> <blocking-timeout-milliseconds>60000</blocking-timeout-milliseconds> <match-one/> </single-pool> </connectionmanager> </connectiondefinition-instance> </connection-definition> </outbound-resourceadapter> </resourceadapter> </connector> And here's the stack: 20:19:06,856 WARN [SystemExceptionInterceptor] ItemEnt javax.ejb.TransactionRolledbackLocalException at org.openejb.transaction.ContainerPolicy$TxRequired.invoke(ContainerPolic y.java:123) 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.EntityEJBLocalObject$$EnhancerByCGLIB$$5c64922d.getDat aBean(<generated>) at org.spec.jappserver.orders.orderses.ejb.OrderSesEJB.getItemInfo(OrderSes EJB.java:516) at org.spec.jappserver.orders.orderses.ejb.OrderSesEJB.newOrder(OrderSesEJB .java:171) at org.spec.jappserver.orders.orderses.ejb.OrderSesEJB$$FastClassByCGLIB$$f f62c8dc.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: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$$9394b987.newOrder(< generated>) at org.spec.jappserver.servlet.helper.SpecAction.doPurchase(SpecAction.java :534) at org.spec.jappserver.servlet.helper.SpecAction.atomicityTestTwo(SpecActio n.java:195) 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: java.lang.NullPointerException at org.tranql.cache.cache.TxCache.get(TxCache.java:111) at org.tranql.cache.cache.FrontEndToCacheAdaptor.get(FrontEndToCacheAdaptor .java:56) at org.tranql.cache.cache.FrontEndCacheDelegate.get(FrontEndCacheDelegate.j ava:65) at org.tranql.cache.cache.CacheFieldFaultTransform.get(CacheFieldFaultTrans form.java:40) at org.openejb.entity.cmp.CMPGetter.invokeInstance(CMPGetter.java:74) at org.openejb.entity.cmp.CMPMethodInterceptor.intercept(CMPMethodIntercept or.java:75) at org.spec.jappserver.orders.itement.ejb.ItemCmp20EJB$$EnhancerByCGLIB$$ce eb9f7.getDescription(<generated>) at org.spec.jappserver.orders.itement.ejb.ItemCmp20EJB.getDataBean(ItemCmp2 0EJB.java:245) at org.spec.jappserver.orders.itement.ejb.ItemCmp20EJB$$FastClassByCGLIB$$c 9f57db1.invoke(<generated>) at org.openejb.dispatch.AbstractMethodOperation.invoke(AbstractMethodOperat ion.java:90) at org.openejb.entity.BusinessMethod.execute(BusinessMethod.java:68) 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) ... 46 more Vasily Zakharov Intel Middleware Products Division **************** CAUTION - Disclaimer ***************** This e-mail contains PRIVILEGED AND CONFIDENTIAL INFORMATION intended solely for the use of the addressee(s). If you are not the intended recipient, please notify the sender by e-mail and delete the original message. Further, you are not to copy, disclose, or distribute this e-mail or its contents to any other person and any such actions are unlawful. This e-mail may contain viruses. Infosys has taken every reasonable precaution to minimize this risk, but is not liable for any damage you may sustain as a result of any virus in this e-mail. You should carry out your own virus checks before opening the e-mail or attachment. Infosys reserves the right to monitor and review the content of all messages sent to or from this e-mail address. Messages sent to or from this e-mail address may be stored on the Infosys e-mail system. ***INFOSYS******** End of Disclaimer ********INFOSYS***
