当前位置: 首页 > 面试题库 >

迁移到WildFly 8.2.0和Java 8后,UserTransaction:javax.naming.NameNotFoundException

龚永新
2023-03-14
问题内容

迁移到Java 8和WildFly 8.2.0之后,我在每个事务中都收到此错误

UserTransaction:javax.naming.NameNotFoundException:UserTransaction
[Root异常是java.lang.IllegalStateException:JBAS014237:仅具有Bean管理的事务分界的会话和消息驱动的Bean才可以访问UserTransaction。]位于org.jboss.as.naming.ServiceBasedNamingStore
org.jboss.as.naming上的.lookup(ServiceBasedNamingStore.java:140).org
org.jboss.as.naming.NamingContext.lookup(NamingContext.java:202)上的ServiceBasedNamingStore.lookup(ServiceBasedNamingStore.java:81)。
org.jboss.as.naming.InitialContext $
DefaultInitialContext.lookup(InitialContext.java:235)处的org.jboss.as.naming.NamingContext.lookup(NamingContext.java:179)
org.jboss.as.naming.NamingContext.lookup(NamingContext.java:184)的javax.naming的NamingContext.java:188)。javax.naming.InitialContext.lookup(InitialContext.java:417)上的InitialContext.lookup(InitialContext.java:417)[rt.jar:1.8.0_45]
[rt.jar:1.8.0_45]

Bean有注释 @TransactionManagement(TransactionManagementType.BEAN)

这是发生异常的地方:

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

我不知道这里发生了什么,也找不到任何好的解决方案。

请帮忙。


问题答案:

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

这样就解决了问题。



 类似资料:
  • Angular 是使用 TypeScript 构建的,并且支持向 Angular 提供元信息的装饰器。 TypeScript 的装饰器会让语法感觉更加“自然”,尽管有可能使用 Angular 没有的功能。

  • Redux 不是一个单一的框架,而是一系列的约定和一些让他们协同工作的函数。你的 Redux 项目的主体代码甚至不需要使用 Redux 的 API,大部分时间你其实是在编写函数。 这让到 Redux 的双向迁移都非常的容易。 我们可不想把你限制得死死的! 从 Flux 项目迁移 Reducer 抓住了 Flux Store 的本质,因此,将一个 Flux 项目逐步到 Redux 是可行的,无论你使

  • 我正试图迁移到AndroidX,我们在我们的项目中使用这个库。然而,这目前在我们的项目中引起了一个问题: 无法解析对“module @ build type/compile class path”的依赖项:无法使用转换JetifyTransform转换文件“localytics-1.3.0.aar”以匹配属性{artifactType=processed-aar} 删除库会使此问题消失。在这个库被

  • 如果你现在有一个正在使用其他 VCS 的代码库,但是你已经决定开始使用 Git,必须通过某种方式将你的项目迁移至 Git。 这一部分会介绍一些通用系统的导入器,然后演示如何开发你自己定制的导入器。 你将会学习如何从几个大型专业应用的 SCM 系统中导入数据,不仅因为它们是大多数想要转换的用户正在使用的系统,也因为获取针对它们的高质量工具很容易。 Subversion 如果你阅读过前面关于 git

  • 对于 iOS 自动化,Appium 依赖苹果提供的系统框架。对于 iOS 9.2 及更低版本,苹果唯一的自动化技术被称为UIAutomation,它运行在 “Instruments” 中。从 iOS 10 开始,苹果已经完全删除了 UIAutomation 工具,因此 Appium 不可能按照以前的方式进行测试。同时,苹果推出了一款名为 XCUITest 的新型自动化技术,从 iOS 9.3 到