java:comp / UserTransaction没有使用btm和spring在上下文中绑定

时间:2011-03-16 13:10:25

标签: spring tomcat transactions

我正在尝试将bitronix配置为我的JTA管理器,如下所示:

<!--  Bitronix Transaction Manager embedded configuration -->
    <bean id="xaDataSource" class="bitronix.tm.resource.jdbc.PoolingDataSource"
        init-method="init" destroy-method="close">
        <property name="className" value="bitronix.tm.resource.jdbc.lrc.LrcXADataSource" />
        <property name="uniqueName" value="java/DS1" />
        <property name="maxPoolSize" value="5" />
        <property name="minPoolSize" value="0" />
        <property name="allowLocalTransactions" value="false" />
        <property name="testQuery" value="SELECT 1 FROM DUAL" />
        <property name="driverProperties">
            <props>
                <prop key="user">user</prop>
                <prop key="password">user</prop>
                <prop key="url">url</prop>
                <prop key="driverClassName">oracle.jdbc.OracleDriver</prop>
            </props>
        </property>
    </bean>


    <bean id="btmConfig" factory-method="getConfiguration"
        class="bitronix.tm.TransactionManagerServices">
        <property name="serverId" value="spring-btm" />
    </bean>


    <bean id="bitronixTransactionManager" factory-method="getTransactionManager"
        class="bitronix.tm.TransactionManagerServices" depends-on="btmConfig,xaDataSource"
        destroy-method="shutdown" />


    <bean id="jtaTransactionManager"
        class="org.springframework.transaction.jta.JtaTransactionManager">
        <property name="transactionManager" ref="bitronixTransactionManager" />
        <property name="userTransaction" ref="bitronixTransactionManager" />
    </bean>
    <!--  end of Bitronix Transaction Manager embedded configuration -->

我看到bitronix正在启动并运行:

399 DEBUG (        PoolingDataSource.java:84)     - building XA pool for java/DS1 with 0 connection(s) etc..)

然而,当我尝试:

DataSource ds = (DataSource) ic.lookup("java:comp/UserTransaction");

我得到了它的命名异常。

为什么?我还需要配置什么?

EDITED

我在tomcat documentation中看到<Transaction>可以绑定事务管理器来处理它。

这不是我在tomcat和spring中定义它的冲突吗?

1 个答案:

答案 0 :(得分:0)

尝试在您的网络应用的META-INF / context.xml中添加:

<Context>
  <Transaction factory="bitronix.tm.BitronixUserTransactionObjectFactory" />
</Context>

这应该仅针对此特定Web应用程序的java:comp / UserTransaction名称绑定事务管理器。