Hi Ramesh,
I've configured Teiid as a non-jta datasource:
From my persistence.xml
{code:xml}<persistence-unit name="Teiid" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<non-jta-data-source>java:/TeiidDatasource</non-jta-data-source>
<class>com.locuslive.uniserve.uvosi.entity.Porder.pub.PoAlloc</class>
<class>com.locuslive.uniserve.uvosi.entity.Porder.pub.PoDetails</class>
<class>com.locuslive.uniserve.uvosi.entity.Porder.pub.PoHeader</class>
<class>com.locuslive.uniserve.uvosi.entity.Porder.pub.PoShipment</class>
<class>com.locuslive.uniserve.uvosi.entity.Porder.pub.PoShipmentItem</class>
<exclude-unlisted-classes />
<properties>
<property name="hibernate.dialect" value="org.teiid.dialect.TeiidDialect"/>
<property name="hibernate.hbm2ddl.auto" value="validate"/>
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>
<property name="jboss.entity.manager.factory.jndi.name" value="java:/TeiidEntityManagerFactory"/>
<property name="jboss.entity.manager.jndi.name" value="java:/TeiidEntityManager"/>
<property name="hibernate.connection.autocommit" value="true"/>
<property name="hibernate.connection.release_mode" value="after_transaction"/>
<property name="hibernate.ejb.interceptor" value="com.locuslive.uniserve.util.HibernateInterceptor" />
</properties>
</persistence-unit>{code:xml}
I've also told Hibernate to use autocommit.
In my JEE app I use EntityTransaction
EntityTransaction tx = entityManager.getTransaction();
tx.begin();
entityManager.merge(entity);
tx.commit();
The following warning confirms that I am not using JTA:
{code}17:29:36,797 WARN [AbstractEntityManagerImpl] Calling joinTransaction() on a non JTA EntityManager{code}
If I use txnAutoWrap=OFF (or not specified) I still get the same error: org.teiid.connector.api.ConnectorException: Transaction is not supported by the connector.
{code}2010-04-06 11:05:06,585 DEBUG [Worker3_QueryProcessorQueue16] org.teiid.DQP - ############# PW PROCESSING on 0.12 with state NEW ###########
2010-04-06 11:05:06,585 DEBUG [Worker3_QueryProcessorQueue16] org.teiid.DQP - 0.12 executing prepared insert into VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER (FACTORY, FACTORY_NAME, PO_NUMBER, SUPPLIER, BUYER_CODE, FOREIGN_AGENT, SHIPMENT_METHOD, PO_VERSION_NUMBER, PO_STATUS, CUSTOMER, PO_DATE, SHIPMENT_TERMS, PAYMENT_TERMS, LAST_AMENDED, COO, COO_DESC, NOTES, SUPPLIER_NAME, TERMS_DESC, SHIPMENT_NO_SEQUENCE, POL, POD, POD_DESC, POL_DESC, FINAL_DEST, FINAL_DESC, AVAILABLE_DATE, SHIPMENT_DATE, APPROVAL_CODE, FULLY_SHIP_DATE, ALLOC_STATUS, DELETED, LAST_AMENDED_TIME, LAST_AMENDED_UNI, HDR_ID) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
2010-04-06 11:05:06,585 DEBUG [Worker3_QueryProcessorQueue16] org.teiid.DQP - Query does not exist in cache: insert into VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER (FACTORY, FACTORY_NAME, PO_NUMBER, SUPPLIER, BUYER_CODE, FOREIGN_AGENT, SHIPMENT_METHOD, PO_VERSION_NUMBER, PO_STATUS, CUSTOMER, PO_DATE, SHIPMENT_TERMS, PAYMENT_TERMS, LAST_AMENDED, COO, COO_DESC, NOTES, SUPPLIER_NAME, TERMS_DESC, SHIPMENT_NO_SEQUENCE, POL, POD, POD_DESC, POL_DESC, FINAL_DEST, FINAL_DESC, AVAILABLE_DATE, SHIPMENT_DATE, APPROVAL_CODE, FULLY_SHIP_DATE, ALLOC_STATUS, DELETED, LAST_AMENDED_TIME, LAST_AMENDED_UNI, HDR_ID) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
2010-04-06 11:05:06,587 DEBUG [Worker3_QueryProcessorQueue16] org.teiid.QUERY_RESOLVER - Resolving command INSERT INTO VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER (FACTORY, FACTORY_NAME, PO_NUMBER, SUPPLIER, BUYER_CODE, FOREIGN_AGENT, SHIPMENT_METHOD, PO_VERSION_NUMBER, PO_STATUS, CUSTOMER, PO_DATE, SHIPMENT_TERMS, PAYMENT_TERMS, LAST_AMENDED, COO, COO_DESC, NOTES, SUPPLIER_NAME, TERMS_DESC, SHIPMENT_NO_SEQUENCE, POL, POD, POD_DESC, POL_DESC, FINAL_DEST, FINAL_DESC, AVAILABLE_DATE, SHIPMENT_DATE, APPROVAL_CODE, FULLY_SHIP_DATE, ALLOC_STATUS, DELETED, LAST_AMENDED_TIME, LAST_AMENDED_UNI, HDR_ID) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
2010-04-06 11:05:06,592 DEBUG [Worker3_QueryProcessorQueue16] org.teiid.DQP - ProcessTree for 0.12 AccessNode(1) output=["Count"] INSERT INTO VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER (VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.FACTORY, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.FACTORY_NAME, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.PO_NUMBER, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.SUPPLIER, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.BUYER_CODE, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.FOREIGN_AGENT, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.SHIPMENT_METHOD, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.PO_VERSION_NUMBER, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.PO_STATUS, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.CUSTOMER, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.PO_DATE, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.SHIPMENT_TERMS, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.PAYMENT_TERMS, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.LAST_AMENDED, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.COO, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.COO_DESC, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.NOTES, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.SUPPLIER_NAME, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.TERMS_DESC, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.SHIPMENT_NO_SEQUENCE, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.POL, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.POD, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.POD_DESC, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.POL_DESC, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.FINAL_DEST, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.FINAL_DESC, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.AVAILABLE_DATE, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.SHIPMENT_DATE, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.APPROVAL_CODE, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.FULLY_SHIP_DATE, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.ALLOC_STATUS, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.DELETED, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.LAST_AMENDED_TIME, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.LAST_AMENDED_UNI, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.HDR_ID) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
2010-04-06 11:05:06,592 DEBUG [Worker3_QueryProcessorQueue16] org.teiid.TXN_LOG - before getOrCreateTransactionContext:com.metamatrix.dqp.embedded.services.EmbeddedTransactionService@1effc3eb(0)
2010-04-06 11:05:06,592 DEBUG [Worker3_QueryProcessorQueue16] org.teiid.TXN_LOG - after getOrCreateTransactionContext : TxnContext: a000072:c053:4bbb012c:3
2010-04-06 11:05:06,592 DEBUG [Worker3_QueryProcessorQueue16] org.teiid.BUFFER_MGR - Creating TupleBuffer: 22 of type PROCESSOR
2010-04-06 11:05:06,592 DEBUG [Worker3_QueryProcessorQueue16] org.teiid.CONNECTOR - 0.12.1.2 Create State
2010-04-06 11:05:06,592 DEBUG [Worker3_QueryProcessorQueue16] org.teiid.DQP - ############# PW EXITING on 0.12 - processor blocked ###########
2010-04-06 11:05:06,592 DEBUG [Worker3_QueryProcessorQueue16] org.teiid.DQP - 0.12 end processing WORKING
2010-04-06 11:05:06,593 DEBUG [Worker4_UVOS tx Connector<0>5] org.teiid.RESOURCE_POOLING - Beginning work with virtual worker Worker4_UVOS tx Connector<0>5
2010-04-06 11:05:06,593 DEBUG [Worker4_UVOS tx Connector<0>5] org.teiid.DQP - 0.12.1.2 start processing MORE_WORK
2010-04-06 11:05:06,593 DEBUG [Worker4_UVOS tx Connector<0>5] org.teiid.CONNECTOR - 0.12.1.2 Processing NEW request: INSERT INTO VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER (VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.FACTORY, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.FACTORY_NAME, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.PO_NUMBER, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.SUPPLIER, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.BUYER_CODE, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.FOREIGN_AGENT, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.SHIPMENT_METHOD, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.PO_VERSION_NUMBER, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.PO_STATUS, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.CUSTOMER, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.PO_DATE, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.SHIPMENT_TERMS, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.PAYMENT_TERMS, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.LAST_AMENDED, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.COO, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.COO_DESC, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.NOTES, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.SUPPLIER_NAME, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.TERMS_DESC, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.SHIPMENT_NO_SEQUENCE, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.POL, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.POD, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.POD_DESC, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.POL_DESC, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.FINAL_DEST, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.FINAL_DESC, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.AVAILABLE_DATE, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.SHIPMENT_DATE, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.APPROVAL_CODE, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.FULLY_SHIP_DATE, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.ALLOC_STATUS, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.DELETED, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.LAST_AMENDED_TIME, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.LAST_AMENDED_UNI, VIRT_UVOS.UVOS.PORDER.PUB.PO_HEADER.HDR_ID) VALUES (null, null, null, null, null, null, null, null, null, null, {d'2010-04-06'}, null, null, {d'2010-04-06'}, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 0, 39883, '06/04/2010 11:04:43', 125689)
2010-04-06 11:05:06,593 DEBUG [Worker4_UVOS tx Connector<0>5] org.teiid.CONNECTOR - 0.12.1.2 creating connection for atomic-request
2010-04-06 11:05:06,621 WARN [Worker4_UVOS tx Connector<0>5] org.teiid.CONNECTOR - Connector worker process failed for atomic-request=0.12.1.2
org.teiid.connector.api.ConnectorException: Transaction is not supported by the connector.
at org.teiid.dqp.internal.datamgr.impl.ConnectorWorkItem.createConnection(ConnectorWorkItem.java:142)
at org.teiid.dqp.internal.datamgr.impl.ConnectorWorkItem.createExecution(ConnectorWorkItem.java:304)
at org.teiid.dqp.internal.datamgr.impl.ConnectorWorkItem.process(ConnectorWorkItem.java:158)
at org.teiid.dqp.internal.process.AbstractWorkItem.run(AbstractWorkItem.java:44)
at org.teiid.dqp.internal.datamgr.impl.SynchConnectorWorkItem.run(SynchConnectorWorkItem.java:60)
at com.metamatrix.common.queue.WorkerPoolFactory$StatsCapturingSharedThreadPoolExecutor$1.run(WorkerPoolFactory.java:211)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:637)
2010-04-06 11:05:06,622 DEBUG [Worker4_UVOS tx Connector<0>5] org.teiid.DQP - closed atomic-request: 0.12.1.2
2010-04-06 11:05:06,622 DEBUG [Worker4_UVOS tx Connector<0>5] org.teiid.DQP - 0.12 more work IDLE{code}
If I specify txnAutoWrap=PESSIMISTIC (in this case I expect teiid to create a JTA transaction) I get the following error:
{code}2010-04-04 18:12:13,757 DEBUG [Worker14_SocketWorker69] org.teiid.QUERY_SERVICE - [Ljava.lang.Object;@5e15e68d
[XATransactionException][com.arjuna.ats.internal.jta.transaction.arjunacore.inactive] [com.arjuna.ats.internal.jta.transaction.arjunacore.inactive] The transactio
n is not active!
1 [IllegalStateException][com.arjuna.ats.internal.jta.transaction.arjunacore.inactive] [com.arjuna.ats.internal.jta.transaction.arjunacore.inactive] The transacti
on is not active!
at org.teiid.dqp.internal.transaction.TransactionServerImpl.commit(TransactionServerImpl.java:416)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.metamatrix.common.log.LogManager$1.invoke(LogManager.java:407)
at $Proxy20.commit(Unknown Source)
at org.teiid.dqp.internal.process.DQPCore.commit(DQPCore.java:673)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.teiid.transport.ServerWorkItem.run(ServerWorkItem.java:100)
at com.metamatrix.common.queue.WorkerPoolFactory$StatsCapturingSharedThreadPoolExecutor$1.run(WorkerPoolFactory.java:211)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:637)
Caused by: java.lang.IllegalStateException: [com.arjuna.ats.internal.jta.transaction.arjunacore.inactive] [com.arjuna.ats.internal.jta.transaction.arjunacore.inactive] The transaction is not active!
at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1380)
at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.commit(BaseTransaction.java:135)
at org.teiid.dqp.internal.transaction.TransactionServerImpl.commit(TransactionServerImpl.java:413)
... 16 more
2010-04-04 18:12:13,758 WARN [Worker14_SocketWorker69] org.teiid.QUERY_SERVICE - Processing exception '[com.arjuna.ats.internal.jta.transaction.arjunacore.inactive] [com.arjuna.ats.internal.jta.transaction.arjunacore.inactive] The transaction is not active!' for session 1. Exception type com.metamatrix.common.xa.XATransactionException thrown from com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1380). Enable more detai:{code}
Is my understanding correct that when autocommit is true and I use txnAutoWrap=OFF and I use a non-jta datasource then no JTA transactions should be used, neither in JBoss (the application server) nor in Teiid? So why do I still get the transaction not supported exception?
Any help is appreciated as I really don't know what else to try. I know I can insert an entity with SquirreL, so how can I mimic this behaviour? I know it is far from ideal but this seems to be my only option.
Regards
Immo