我们有一个使用 Spring 3 的 Web 应用程序。我们必须将它从 Tomcat 7 迁移到 Weblogic 10。
这个应用程序的结构是:
- 一个核心模块,其中包含所有应用程序逻辑。这个模块被打包成一个jar。
- 一个 web 模块,它定义了所有的 web 服务。这个模块包含前一个作为依赖项,并通过在“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应用程序引入的包装器有关。
有关可以解决此问题的配置的任何想法?谢谢!