如何在 Weblogic 12c (12.1.3) 上部署 Spring Boot 应用程序?

How to deploy a Spring Boot application on Weblogic 12c (12.1.3)?

我正在尝试在 Weblogic 12c (12.1.3) 上部署一个简单的 Spring 启动应用程序,在开发人员环境中它运行良好。 但是,当需要将其重新包装在 war 中并将其连接到耳朵时,这似乎无法正确部署。

这是堆栈跟踪:

<Nov 23, 2016 6:15:13 PM CET> <Error> <Munger> <BEA-2156200> <Unable to load descriptor weblogic.utils.classloaders.GenericClassLoader@6964c078 finder: weblogic.utils.classloaders.CodeGenClassFinder@5715556 annotation: my-app-ear@/WEB-INF/lib/tomcat-embed-websocket-8.5.6.jar!/META-INF/web-fragment.xml of module /my-app. The error is weblogic.descriptor.DescriptorException: Unmarshaller failed

非常欢迎任何意见。 提前致谢。

从 Spring 启动 docs,

To deploy a Spring Boot application to WebLogic you must ensure that your servlet initializer directly implements WebApplicationInitializer (even if you extend from a base class that already implements it).

例如,

改变这个,

public class Application extends SpringBootServletInitializer {  

public class Application extends SpringBootServletInitializer implements WebApplicationInitializer {

注意: SpringBootServletInitializer 已经实现了WebApplicationInitializer,但是你需要再做一次。

到目前为止,我不知道为什么。

public abstract class SpringBootServletInitializer implements WebApplicationInitializer {

来自Springsource代码,

你需要做两件事:

  1. 在您的 weblogic 12.1.3 实例上,升级您的 JPA api 并添加 hibernate 5 实现

  2. 在您的 Web 应用程序中,确保您拥有哪些依赖项,并且它们不与已经在 Weblogic 类加载器下配置的依赖项重叠。

我这里有详细的步骤:

http://javagoogleappspot.blogspot.be/2018/05/make-your-spring-boot-20-compatible.html