我有一些Spring Boot Maven项目。它们都是REST服务的简单包装器,用于实现 Angular/React
UI客户端。我在Eclipse中使用集成的Tomcat-9进行开发,然后部署到Linux上的WebLogic-12c [WLS]。我使用 spring-boot-starter-parent
版本2.2.4.RELEASE
与以下组件。
这些projectswebapps非常相似,在WLS中都能正常工作,虽然我们遇到了一些classpath冲突,但是可以通过在 WEB-INF/weblogic.xml
的建议。
<wls:prefer-web-inf-classes>false</wls:prefer-web-inf-classes>
<wls:prefer-application-packages>
<wls:package-name>org.slf4j</wls:package-name>
<wls:package-name>org.springframework.*</wls:package-name>
</wls:prefer-application-packages>
然而,最后一个项目尽管配备了相同的weblogic.xml,却无法部署到WLS。它在 Tomcat
和 local WLS
但在服务器上却失败了,原因如下:我在本地电脑上安装了两个版本的WLS--14c和12c--就像我们在Linux服务器上运行的一样。
weblogic.application.ModuleException:
Caused By: java.lang.NoSuchMethodError: org.springframework.util.MultiValueMap.addAll(Ljava/lang/Object;Ljava/util/List;)V
at org.springframework.core.io.support.SpringFactoriesLoader.loadSpringFactories(SpringFactoriesLoader.java:140)
at org.springframework.core.io.support.SpringFactoriesLoader.loadFactoryNames(SpringFactoriesLoader.java:119)
at org.springframework.boot.SpringApplication.getSpringFactoriesInstances(SpringApplication.java:429)
at org.springframework.boot.SpringApplication.getSpringFactoriesInstances(SpringApplication.java:421)
at org.springframework.boot.SpringApplication.<init>(SpringApplication.java:268)
我在本地电脑上安装了两个版本的WLS - 14c,然后是12c - 就像我们在Linux服务器上运行的一样。这个项目在本地运行时没有任何问题。
这个 "坏的 "项目和 "好的 "项目有着完全相同的依赖关系。事实上,在 WEB-INF/lib
是完全一样的。到目前为止,我找不到这个项目的特殊之处,以至于Spring无法初始化。
所以我的问题在这里。是什么原因可能导致这个WLS部署问题,以及解决的方法。
非常感谢大家的帮助。
在我添加了 <wls:package-name>org.springframework.*</wls:package-name>
就不会有问题......如果我先有 删除 部署失败。然而,我使用了 安装 选项上传新的战争文件,然后在WL控制台的 更新 来重新部署。显然WL对这种方法有意见,万一要更新一个一开始就失败的部署。