【发布时间】:2013-01-08 10:27:41
【问题描述】:
我们有一个使用 Spring 3 的 Web 应用程序。我们必须将它从 Tomcat 7 迁移到 Weblogic 10。
这个应用程序的结构是:
- 一个核心模块,它包含所有的应用程序逻辑。此模块被打包为 jar。
- 一个网络模块,它定义了所有的网络服务。该模块包含前一个作为依赖项,并通过在“contextConfigLocation”参数中包含核心模块上下文来使用其 bean。
我正在使用 maven,这是在 web 模块中定义依赖项的方式:
<dependency>
<groupId>com.example</groupId>
<artifactId>module-core</artifactId>
<version>${project.version}</version>
<classifier>${environment}</classifier>
</dependency>
该应用程序在 tomcat 中运行良好,但无法在 Weblogic 中部署,因为 Spring 无法创建任何依赖于 core-module.jar 中的 bean 的 bean。对于来自核心模块的所有 bean,错误总是相同的:
org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'xxxBean' is defined
'xxxBean' 是 core-module.jar 中定义的任何 bean。如果我删除 ref 以避免该 bean 的问题,则下一个引用的 bean 将再次引发错误。我的意思是 Spring 找到了在 web-module 本身中定义的所有 bean,但没有在 core-module 中定义。
在错误的跟踪中,我可以看到 weblogic 正在使用这个:
com.oracle.weblogic.wsee.wrapper.org.springframework.web.context.ContextLoaderListener.contextInitialized
所以问题可能与 Weblogic 为 Spring 应用程序引入的包装器有关。
关于可以解决此问题的配置有什么想法吗?谢谢!
【问题讨论】:
-
你真的有名为xxxBean的bean吗?也许你只是不小心留下了一些评论或类似的东西。尝试在您的部署中搜索该字符串。
-
不,这是一个虚构的名字。我使用它是因为问题发生在应用程序的任何 bean 上。如果我评论一个 bean,下一个引用的 bean 就会出现问题。
-
你如何定义 web 模块和核心之间的依赖关系?
-
我使用的是 maven,我在问题中添加了 this 的定义。谢谢!
-
我的意思是您的 Web 服务在 WAR 中,而核心模块在该 WAR 的 WEB-INF/lib 中?或者您的 Web 服务是否在 JAR 中
标签: spring tomcat weblogic weblogic-10.x