Accessing Multiple Datasources
gkelly Aug 20, 2009 10:59 PMSo my problem occurs when trying to access multiple datasources in the same action class. I get the following error at the execution of the query for the second datasource.
WARN [JDBCExceptionReporter] SQL Error: 0, SQLState: null ERROR [JDBCExceptionReporter] Could not enlist in transaction on entering meta-aware object
Here is some sample code:
@In (create = true) private EntityManager source1EntityManager; @In (create = true) private EntityManager source2EntityManager; private void init() { String item = "test"; List<MyBean1> myBean1List = source1EntityManager.createQuery( "from MyBean1") .getResultList(); List<MyBean2> myBean2List = source2EntityManager.createQuery( "from MyBean2 where item = :item") .setParameter("item", item) .getResultList(); //Collect info for processing }
Here is my project-dev-ds.xml:
<?xml version="1.0" encoding="UTF-8"?> <datasources> <local-tx-datasource> <jndi-name>source1</jndi-name> <connection-url>jdbc:oracle:thin:@server1.company.com:1521:scdev</connection-url> <driver-class>oracle.jdbc.driver.OracleDriver</driver-class> <user-name>username</user-name> <password>password</password> <min-pool-size>10</min-pool-size> <max-pool-size>100</max-pool-size> <idle-timeout-minutes>15</idle-timeout-minutes> <blocking-timeout-millis>120000</blocking-timeout-millis> <eager-release>false</eager-release> <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name> <metadata> <type-mapping>Oracle9i</type-mapping> </metadata> </local-tx-datasource> <local-tx-datasource> <jndi-name>source2</jndi-name> <connection-url>jdbc:oracle:thin:@server2.company.com:1521:gldev</connection-url> <driver-class>oracle.jdbc.driver.OracleDriver</driver-class> <user-name>username1</user-name> <password>password1</password> <min-pool-size>10</min-pool-size> <max-pool-size>100</max-pool-size> <idle-timeout-minutes>15</idle-timeout-minutes> <blocking-timeout-millis>120000</blocking-timeout-millis> <eager-release>false</eager-release> <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name> <metadata> <type-mapping>Oracle9i</type-mapping> </metadata> </local-tx-datasource> </datasources>
Here is my components.xml:
... <persistence:managed-persistence-context name="source1EntityManager" auto-create="true" persistence-unit-jndi-name="java:/source1EntityManagerFactory"/> <persistence:managed-persistence-context name="source2EntityManager" auto-create="true" persistence-unit-jndi-name="java:/source2EntityManagerFactory"/> ...
Anything else needed to help, I'll be more than happy to supply.
Thanks in advance!