configurer transaction jta manager à l'aide de printemps?
J'ai ci-dessous la configuration de mon ressort fichier de configuration. Je suis à l'aide de Spring3, Hibernate4 et 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>
Maintenant, comment puis-je configurer JTATransactionManager
ici pour utiliser @Transactionnelle? Ici, j'ai wcDataSource
et dataSourceKS
. Merci!
Merci!
- JTA est difficile, au mieux, de se mettre au travail, surtout quand on travaille avec des ressources distantes. Votre source de données doit également être une recherche à distance, probablement de la même serveur, il doit être d'au moins XA capable et devraient/doit être connu du sous-jacent JTA tx mise en œuvre. Ensuite vous devez également configurer hibernate appropriatly (pour commencer au lieu de
datasource
ensemblejtaDataSource
sur leLocalSessionFactoryBean
). - Vous devriez jeter un oeil à cette lien, c'est ce que tentent de faire. (Atomikos être leur propre mise en œuvre d'un jta manager, mais le printemps de la configuration est la même)
- Arnaud, Merci de fournir le lien...
- Arnaud, j'ai besoin de fournir une connexion pour AtomikosDataSourceBean via jndi regarder. Pourriez-vous veuillez donner une idée?
Vous devez vous connecter pour publier un commentaire.
Voir http://lafernando.com/2011/01/05/xa-transactions-with-apache-dbcp/ qui est-il dans le code, mais qui vous devriez être en mesure de traduire vers une configuration spring.
Qui aboutirait à quelque chose comme cela.
Noter le changement de communes-dbcp comme c3p0 n'a pas XA capable implémentations.
La JtaTransactionManager n'a pas besoin de savoir à propos de la source de données, ou de tout autres ressources spécifiques, parce qu'il utilise le conteneur global de la transaction, de la gestion de l'infrastructure.
Afin de conf fichier devrait ressembler à ceci