2015-07-21 52 views
1

我得到的每一项交易的UserTransaction:javax.naming.NameNotFoundException后移植到WildFly 8.2.0和Java 8

的UserTransaction此错误迁移到Java 8和WildFly 8.2.0后:javax.naming.NameNotFoundException :UserTransaction [根异常是java.lang.IllegalStateException:JBAS014237:只有 会话和消息驱动的bean,Bean管理的事务 分界可以访问UserTransaction] org.jboss.as.naming.ServiceBasedNamingStore.lookup( ServiceBasedNamingStore.java:140) at org.jboss.as.naming.Se rviceBasedNamingStore.lookup(ServiceBasedNamingStore.java:81) 在org.jboss.as.naming.NamingContext.lookup(NamingContext.java:202) 在org.jboss.as.naming.NamingContext.lookup(NamingContext.java:179) 在 org.jboss.as.naming.InitialContext $ DefaultInitialContext.lookup(InitialContext.java:235) 在org.jboss.as.naming.NamingContext.lookup(NamingContext.java:188) 在org.jboss.as .naming.NamingContext.lookup(NamingContext.java:184) at javax.naming.InitialContext.lookup(InitialContext.java:417) [rt.jar:1.8.0_45] at javax.naming.InitialContext.lookup(InitialContext .java:417) [rt.jar:1.8.0_45]

豆有注释@TransactionManagement(TransactionManagementType.BEAN)

这就是发生异常:

final javax.naming.Context tmpNamingContext = new javax.naming.InitialContext(); 
        userTransaction = ((UserTransaction) tmpNamingContext.lookup("java:jboss/UserTransaction")); 

我不知道这里发生了什么,可以没有找到什么好的解决办法。

请帮忙。

+1

你在Wildfly 8.0.2之前使用了什么?你如何定义你的'java:jboss/UserTransaction' JNDI条目? –

+0

您是否正在从会话Bean或消息驱动Bean进行调用?你是否试图从非托管线程进行调用? –

+0

我正在从会话bean进行调用。在我使用JBoss 7.1.3之前的WildFly之前 – Johnny2012

回答

2

使用注释@Resource获取UserTransaction而不是通过JNDI Name是解决方案。 UserTransaction不再在WildFly 8.2.0中,在JBoss中已经设置好了。

这解决了这个问题。