读书人

JOTM配置难题跪求懂JOTM大神来解决一

发布时间: 2012-02-26 20:19:43 作者: rapoo

JOTM配置难题,跪求懂JOTM大神来解决一下
各位大神,小弟最近配置分布式事务,打算采用JOTM来管理。在网上学习了一下,初步配置如下,结果出现了异常,望大大们指点小弟。。

XML code
<bean id="jotm" class="org.springframework.transaction.jta.JotmFactoryBean"/>     <bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager">          <property name="userTransaction"><ref local="jotm"/></property>    </bean>        <bean id="mysqlDataSource1" class="org.enhydra.jdbc.standard.StandardXADataSource" destroy-method="shutdown">        <property name="transactionManager"><ref local="jotm"/></property>        <property name="driverName"><value>com.mysql.jdbc.Driver</value></property>        <property name="url"><value>jdbc:mysql://localhost:3306/emp_mvc</value></property>        <property name="user" value="root"/>          <property name="password" value="123456"/>     </bean>            <bean id="dataSource1" class="org.enhydra.jdbc.pool.StandardXAPoolDataSource" destroy-method="shutdown">        <property name="dataSource"><ref local="mysqlDataSource1"/></property>        <property name="maxSize"><value>5</value></property>        <property name="minSize"><value>2</value></property>        <property name="user"><value>root</value></property>        <property name="password"><value>123456</value></property>    </bean>        <bean id="mysqlDataSource2" class="org.enhydra.jdbc.standard.StandardXADataSource" destroy-method="shutdown">        <property name="transactionManager"><ref local="jotm"/></property>        <property name="driverName"><value>com.mysql.jdbc.Driver</value></property>        <property name="url"><value>jdbc:mysql://localhost:3306/emp_mvc2</value></property>        <property name="user" value="root"/>          <property name="password" value="123456"/>     </bean>            <bean id="dataSource2" class="org.enhydra.jdbc.pool.StandardXAPoolDataSource" destroy-method="shutdown">        <property name="dataSource"><ref local="mysqlDataSource2"/></property>        <property name="maxSize"><value>5</value></property>        <property name="minSize"><value>2</value></property>        <property name="user"><value>root</value></property>        <property name="password"><value>123456</value></property>    </bean>          <bean id="sessionFactory1" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">         <property name="dataSource" ref="dataSource1"/>         <property name="mappingResources">            <list>              <value>com/ouku/JOTM/entity/Emp.hbm.xml</value>            </list>         </property>         <property name="hibernateProperties">            <props>                <prop key="hibernate.dialect">org.hibernate.dialect.SybaseDialect</prop>                <prop key="hibernate.show_sql">true</prop>                 <prop key="hibernate.connection.pool_size">0</prop>                <prop key="hibernate.connection.shutdown">true</prop>                 <prop key="hibernate.autocommit">false</prop>                <prop key="hibernate.transaction.factory_class">org.hibernate.transaction.JTATransactionFactory</prop>                <prop key="transaction.manager_lookup_class">org.hibernate.transaction.JOTMTransactionManagerLookup</prop>            </props>         </property>         <property name="jtaTransactionManager">              <ref bean="jotm" />           </property>    </bean>        <bean id="sessionFactory2" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">         <property name="dataSource" ref="dataSource2"/>         <property name="mappingResources">            <list>              <value>com/ouku/JOTM/entity/Emp2.hbm.xml</value>            </list>         </property>         <property name="hibernateProperties">            <props>                <prop key="hibernate.dialect">org.hibernate.dialect.SybaseDialect</prop>                <prop key="hibernate.show_sql">true</prop>                 <prop key="hibernate.connection.pool_size">0</prop>                <prop key="hibernate.connection.shutdown">true</prop>                 <prop key="hibernate.autocommit">false</prop>                <prop key="hibernate.transaction.factory_class">org.hibernate.transaction.JTATransactionFactory</prop>                <prop key="transaction.manager_lookup_class">org.hibernate.transaction.JOTMTransactionManagerLookup</prop>            </props>         </property>         <property name="jtaTransactionManager">              <ref bean="jotm" />           </property>    </bean>         <bean id="abstractTransactionProxy" abstract="true"          class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">        <property name="transactionManager">            <ref bean="transactionManager"/>        </property>        <property name="transactionAttributeSource">            <bean class="org.springframework.transaction.annotation.AnnotationTransactionAttributeSource"/>        </property>    </bean>        <!--    <bean id="hqlExecutor1" class="com.vtradex.edi.example.util.HqlExecutor" >        <property name="sessionFactory" ref="mySessionFactory"/>     </bean>         <bean id="hqlExecutor2" class="com.vtradex.edi.example.util.HqlExecutor" >        <property name="sessionFactory" ref="mySessionFactory2"/>    </bean>      -->            <!-- 配置事务的传播性 哪些方法使用事务-->    <tx:advice id="txAdvice" transaction-manager="transactionManager">        <tx:attributes>        <tx:method name="add*" propagation="REQUIRED"/>        <tx:method name="edit*" propagation="REQUIRED"/>        <tx:method name="del*" propagation="REQUIRED"/>        <tx:method name="*" read-only="true"/>        </tx:attributes>    </tx:advice>    <!-- 事务配置到biz层,而不配置到dao层 -->    <!-- AOP配置  配置事务的执行范围-->    <aop:config>    <aop:pointcut id="managersMethod" expression="execution(* com.ouku.JOTM.biz.*.*(..))"/>    <aop:advisor advice-ref="txAdvice" pointcut-ref="managersMethod"/>    </aop:config>                <!-- 配置dao层 -->    <bean id="empDAO" class="com.ouku.JOTM.DAO.EmpDAO">        <property name="sessionFactory1" ref="sessionFactory1"></property>    </bean>        <bean id="emp2DAO" class="com.ouku.JOTM.DAO.Emp2DAO">        <property name="sessionFactory2" ref="sessionFactory2"></property>    </bean>            <bean id="empBiz" class="com.ouku.JOTM.biz.EmpBiz">        <property name="empdao" ref="empDAO"></property>        <property name="emp2dao" ref="emp2DAO"></property>    </bean>         



其他的都是比较正规的dao文件和映射文件。但是一直再报异常,将异常粘贴如下。

Java code
2011-11-23 10:18:38,535 ERROR [org.hibernate.transaction.JTATransaction] - Could not find UserTransaction in JNDIjavax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial    at javax.naming.spi.NamingManager.getInitialContext(Unknown Source)    at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source)    at javax.naming.InitialContext.getURLOrDefaultInitCtx(Unknown Source)    at javax.naming.InitialContext.lookup(Unknown Source)    at org.hibernate.transaction.JTATransaction.<init>(JTATransaction.java:60)    at org.hibernate.transaction.JTATransactionFactory.createTransaction(JTATransactionFactory.java:57)    at org.hibernate.jdbc.JDBCContext.registerSynchronizationIfPossible(JDBCContext.java:172)    at org.hibernate.impl.SessionImpl.checkTransactionSynchStatus(SessionImpl.java:1867)    at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1622)    at com.ouku.JOTM.DAO.EmpDAO.selectEmp(EmpDAO.java:16)    at com.ouku.JOTM.biz.EmpBiz.selectAll(EmpBiz.java:15)Exception in thread "main" org.hibernate.TransactionException: Could not find UserTransaction in JNDI:     at org.hibernate.transaction.JTATransaction.<init>(JTATransaction.java:64)    at org.hibernate.transaction.JTATransactionFactory.createTransaction(JTATransactionFactory.java:57)    at org.hibernate.jdbc.JDBCContext.registerSynchronizationIfPossible(JDBCContext.java:172)    at org.hibernate.impl.SessionImpl.checkTransactionSynchStatus(SessionImpl.java:1867)    at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1622)    at com.ouku.JOTM.DAO.EmpDAO.selectEmp(EmpDAO.java:16)    Caused by: javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial    at javax.naming.spi.NamingManager.getInitialContext(Unknown Source)    at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source)    at javax.naming.InitialContext.getURLOrDefaultInitCtx(Unknown Source)    at javax.naming.InitialContext.lookup(Unknown Source)    at org.hibernate.transaction.JTATransaction.<init>(JTATransaction.java:60)    ... 17 more

我在网上查找的关于的配置,发现好多都没办法操作。 不知道哪位大神能不能帮忙解答一下。。
我现在做的操作只有将JOTM下的LIB目录下的所有jar文件导入。 不知道还有什么配置。。比如说一些属性文件什么的!!
哪位大神给个例子把!!

[解决办法]
小弟,承认你是我小弟了吧,哈哈哈哈

读书人网 >Java Web开发

热点推荐