使用Spring和Glassfish的JtaTransactionManager的JNDI初始上下文

时间:2014-03-16 19:53:14

标签: java spring glassfish jndi jta

我想在我的应用程序中使用JTA Transaction Manager。我正在使用Spring和Glassfish。我想使用JNDI查找来获取JtaTransactionManager实例。我的JtaTransactionManager的Spring bean配置设置如下:

<tx:annotation-driven transaction-manager="jtaTransactionManager"/>

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

但是当我运行该程序时,它报告了错误:

Caused by: org.springframework.transaction.TransactionSystemException: JTA UserTransaction is not available at JNDI location [java:comp/UserTransaction]; nested exception is 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

与非初始化的JNDI上下文相关联。所以我添加了一个资源文件jndi.properties,它添加了上面报告的缺少的初始上下文:

java.naming.factory.initial=???

但问题是:我应该在上面的JNDI初始上下文字段中放置什么才能通过JNDI查找获取Glassfish事务管理器?我搜索了很多来源,但没有找到这条信息。 official document只说:

  

要访问UserTransaction实例,您可以使用查找它   java:comp / UserTransaction JNDI名称或使用注入它   @Resource注释。

那么我应该如何在jndi.properties文件中为JTA事务管理器设置JNDI初始工厂,以便TransactionManagerUserTransaction都可以注入我的jtaTransactionManager bean中JNDI查找?感谢。

0 个答案:

没有答案