2014-01-30 58 views
0

我试图在spring/hibernate中使用JtaTransactionManager。我有以下配置。在春季使用JTATransactionManager?

<bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager"> 
    <property name="userTransactionName" value="java:comp/UserTransaction"></property> 
</bean> 

现在我可以使用@Transactional来标记我的服务方式吗?或者我需要任何额外的配置来使用@Transactional?我需要添加

回答

0

注释只不过是元数据,所以只有在那里打一个注解,并期望它有魔法般的工作不会发生。

要使@Transactional工作,您需要告诉spring您想使用注释来驱动您的交易。为此,将<tx:annotation-driven />标记添加到您的配置中。

但是,这可能不会是所有需要的,因为您还需要为JTA适当地配置hibernate。

小而不是定义bean,使用较短的<tx:jta-transaction-manager />。这将对您正在运行的应用服务器进行一些检测,并为您配置合适的事务管理器。有关更多信息,请参阅http://docs.spring.io/spring/docs/current/spring-framework-reference/html/transaction.html#transaction-application-server-integration

+0

Deinum,可否请您提供一些春季配置示例,如果您有方便的配置 – user755806

+0

什么?如何配置hibernate取决于你的JTA实现/ appserver。 –

+0

我在tomcat中部署应用程序。但它必须做jndi在另一个JBoss应用程序服务器上查找UserTransaction。 – user755806