JTA UserTransaction is not available at JNDI location [java:comp/UserTransaction]; nested exception is javax.naming.NamingException: Cannot create resource instance 
 检查你的jndi 得不到实例

解决方案 »

  1.   

    看样子是你配置的JNDI没有找到
    你去spring文件中找transactionManager下的comp/UserTransaction这个东西和你在tomcat或者其他容器中配置的JNDI是否名称相同
      

  2.   

        这个是我配置的jndi
    <Resource
          name="jdbc/test"
          type="javax.sql.DataSource"
          password=""
          driverClassName="javax.sql.DataSource"
          maxIdle="2"
          maxWait="5000"
          username="root"
          url="jdbc:mysql://localhost:3306/test"
          maxActive="4"/>jndi的调用
    <jee:jndi-lookup id="dataSource" jndi-name="java:comp/env/jdbc/test"/>
    <bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager" />
    请问错误究竟出在哪里?
      

  3.   

    环境:
    apache-tomcat-5.5.26 
    mysql-5.1.23 
    mysql-connector-java-5.1.6-bin.jar
      

  4.   

    从报得错看,还是jndi没有绑定好,
    给你个配置例子:
    <Server>
      ...
      <Service name="Catalina">
         ...     
         <Engine name="Catalina" defaultHost="localhost" debug="0">
         ...
            <Host name="localhost" debug="0" appBase="webapps">
               <!--以下部分配置的是数据库的连接信息 -->
               <Context path="/workflow" docBase="workflow"
                   debug="5" reloadable="true" crossContext="true">             
                 Resource name="jdbc/workflow" auth="Container"
                    type="javax.sql.DataSource"/> 
                 
                 <ResourceParams name="jdbc/workflow">
                   <parameter>
                     <name>driverClassName</name>
                     <value>com.mysql.jdbc.Driver</value>
                   </parameter>
                   <parameter>
                     <name>url</name>
                     <value>jdbc:mysql://localhost:3306/workflow</value>
                   </parameter>
                   <parameter>
                    <name>username</name>
                    <value>root</value>
                   </parameter>
                   <parameter>
                    <name>password</name>
                    <value>xxx</value>
                   </parameter>
                 </ResourceParams>                      
               </Context>
               ...
             </Host>  
           </Engine>  
         </Service>  
       </Server>  
      

  5.   

        jndi配置:
    <Resource
          name="jdbc/traceability"
          type="javax.sql.DataSource"
          driverClassName="com.mysql.jdbc.Driver"
          password=""
          maxIdle="2"
          maxWait="5000"
          username="root"
          url="jdbc:mysql://localhost:3306/traceability"
          maxActive="4"/>sprint bean:
     <jee:jndi-lookup id="dataSource" jndi-name="java:comp/env/jdbc/traceability"/>  <bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager" >
     </bean>环境:apache-tomcat-5.5.26 + mysql1.6 + mysql-connector-java-5.1.6-bin.jar