我有许多Spring Boot Maven项目。它们是Angular/React UI客户端的REST Services的非常简单的包装。我使用集成的Tomcat-9在Eclipse中进行开发,然后在Linux上部署到WebLogic-12c [WLS]。我将spring-boot-starter-parent版本-2.2.4.RELEASE与以下组件一起使用:


弹簧启动启动器网站
弹簧安全配置
春季安全网


项目/ Web应用程序非常相似,并且在WLS中都可以正常工作,尽管我们存在一些类路径冲突,但是能够按照Oracle的建议在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。它在Tomcatlocal WLS中可以正常运行,但是由于以下原因在服务器上失败:

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)


我在本地PC上安装了两个版本的WLS-14c,然后在12c上-就像我们在Linux服务器上运行的一样。有问题的项目在本地运行,没有任何问题。

这个“坏”项目与“好”项目具有完全相同的依赖关系。实际上,WEB-INF/lib的内容完全相同。到目前为止,我找不到使该项目如此特别以至于Spring无法初始化的原因。

所以这是我的问题。可能导致此WLS部署问题的原因及其解决方法。

非常感谢您的帮助。

最佳答案

添加<wls:package-name>org.springframework.*</wls:package-name>之后,根本不会有任何问题……如果我首先删除了失败的部署。但是,我在WL控制台上使用“安装”选项上载了新的war文件,然后“更新以重新部署”。显然,如果有人试图更新最初失败的部署,WL会遇到问题。

08-17 15:52