【发布时间】:2014-02-22 20:33:27
【问题描述】:
我的 spring 配置文件中有以下配置。我正在使用 Spring3、Hibernate4 和 Tomcat7。
<jee:jndi-lookup id="wcDataSource" jndi-name="java:comp/UserTransaction" resource-ref="false" environment-ref="remoteEnv" />
<util:properties id="remoteEnv">
<prop key="java.naming.provider.url">jnp://jndi.myURL.me:1099</prop>
<prop key="java.naming.factory.url.pkgs">org.jboss.naming:org.jnp.interfaces</prop>
<prop key="java.naming.factory.initial">org.jnp.interfaces.NamingContextFactory</prop>
<prop key="jnp.disableDiscovery">true</prop>
</util:properties>
<bean id="dataSourceKS" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${driverClassName}" />
<property name="jdbcUrl" value="${url}" />
<property name="user" value="${username}" />
<property name="password" value="${password}" />
<!-- pool sizing -->
<property name="initialPoolSize" value="15" />
<property name="minPoolSize" value="10" />
<property name="maxPoolSize" value="20" />
<property name="acquireIncrement" value="3" />
<property name="maxStatements" value="6000" />
<property name="maxStatementsPerConnection" value="300" />
</bean>
<bean name="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSourceKS"/>
<property name="annotatedClasses">
<list>
<value>com.sample.MyBean</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.cache.provider_class">org.hibernate.cache.NoCacheProvider</prop>
<prop key="hibernate.dialect">org.hibernate.dialect.OracleDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.use_sql_comments">true</prop>
<prop key="hibernate.jdbc.batch_size">50</prop>
</props>
</property>
</bean>
现在我如何在此处配置JTATransactionManager 以使用@Transactional?这里我有wcDataSource 和dataSourceKS。谢谢!
谢谢!
【问题讨论】:
-
JTA 最难开始工作,尤其是在使用远程资源时。您的数据源也应该是远程查找,可能来自同一服务器,它应该至少具有 XA 能力,并且应该/必须为底层 JTA tx 实现所知道。接下来,您还需要适当地配置休眠(对于初学者而不是
datasource在LocalSessionFactoryBean上设置jtaDataSource)。 -
你应该看看这个link,这就是你想要做的。 (Atomikos 是他们自己的 jta 管理器实现,但 spring 配置将是相同的)
-
Arnaud,请提供链接...
-
Arnaud,我需要通过 jndi 查找提供到 AtomikosDataSourceBean 的连接。你能提供一些想法吗?
标签: java spring transactions java-ee-7