0

我正在开发一个使用 Spring 3 和 Hibernate 3.5 和 Java 1.6 的应用程序。

到目前为止,我一直在使用 JBoss 4.2.1,一切都很好。

现在在迁移到 JBoss 5.1 时,我遇到了很多问题。其中之一是 JBoss 忽略了 Spring @Resource 注释。我得到以下异常:

java.lang.RuntimeException: mapped-name is required for serviceManager of deployment pol-1.0.war at org.jboss.web.tomcat.service.injection.WebResourceHandler.loadXmlResourceEnvRefs(WebResourceHandler.java:287) at org.jboss.web.tomcat.service.injection.WebResourceHandler.loadXml(WebResourceHandler.java:325) at org.jboss.web.tomcat.service.TomcatInjectionContainer.processMetadata(TomcatInjectionContainer.java:550) at org.jboss.web.tomcat.service.WebCtxLoader.start(WebCtxLoader.java:158)

它期望每个 @Resource 的映射名称,如一些 ejb。

我见过类似的问题,但没有任何答案,例如:

@Resource 注释不能与 JBoss5.0.1 一起正常工作

请指教。

阿迪

4

2 回答 2

1

实际上,您的问题是 JBoss 不会忽略@Resource注释-它会尝试根据 EJB 规则处理它们,而不是将它们留给 Spring。

也许可以在 JBoss 配置中的某个地方禁用此功能,但最简单的解决方案是替换@Resource@Autowiredor @Inject

于 2012-04-11T12:20:27.953 回答
0

听起来像 java 注释需要命名空间支持。

那么它将是@Spring:Resource 或@EJB:Resource。

甲骨文,你在听吗?

缺少注释的命名空间,您可以尝试更改类路径中库的顺序,以便 java 将首先(或最后)看到 Spring 注释,以最终提供所需结果为准。

于 2014-03-19T20:48:31.887 回答