我的这段代码为什么UserTransaction没用

            Context ctx = getContext();
            UserTransaction tx = getUserTransaction();

            tx.begin();

            ds = (DataSource) ctx.lookup("XAMySqlDS");
            conn = ds.getConnection();

            //conn.setAutoCommit(false);
            stmt = conn.createStatement();
            stmt.executeUpdate(sqlStr1);
            stmt.executeUpdate(sqlStr2);
            //          if(true){
            //              tx.rollback();
            //              System.out.println("rollback");
            //          }
            //tx.commit();这里不管是否调用commit都会执行上面的数据库语句

这是分布式数据源配置

 <xa-datasource>
        <jndi-name>XAMySqlDS</jndi-name>
        <track-connection-by-tx>true</track-connection-by-tx>
        <xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
        <new-connection-sql>set autocommit=1</new-connection-sql>
        <no-tx-separate-pools>true</no-tx-separate-pools>
        <xa-datasource-property name="Url">jdbc:mysql://localhost:3306/register?autoReconnect=true</xa-datasource-property>
        <xa-datasource-property name="User">root</xa-datasource-property>
        <xa-datasource-property name="Password">root</xa-datasource-property>

        <use-java-context>false</use-java-context>

        <transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>

        <exception-sorter-class-name>
        org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter
        </exception-sorter-class-name>
        <type-mapping>mySQL</type-mapping>

        <min-pool-size>5</min-pool-size>
        <max-pool-size>100</max-pool-size>
        <blocking-timeout-millis>5000</blocking-timeout-millis>
        <idle-timeout-minutes>15</idle-timeout-minutes>
    </xa-datasource>

开始事务不应该在得到数据库连接后面么?