我试图在Weblogic 12c(12.1.3)上部署一个简单的Spring Boot应用程序,在开发者环境中它确实可以正常工作。 但是,当需要在战争中重新打包它并将其附加到earand时,这似乎没有正确部署。
这是堆栈跟踪:
<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
任何输入都将非常受欢迎。 提前谢谢。
答案 0 :(得分:4)
从Spring Boot docs,
要将Spring Boot应用程序部署到WebLogic,您必须确保这一点 您的servlet初始化程序直接实现WebApplicationInitializer (即使你从已经实现它的基类扩展)。
例如,
改变这一点,
public class Application extends SpringBootServletInitializer {
到
public class Application extends SpringBootServletInitializer implements WebApplicationInitializer {
注意: SpringBootServletInitializer 已经实现了WebApplicationInitializer,但您需要再次执行此操作。
截至目前,我不知道为什么。
public abstract class SpringBootServletInitializer implements WebApplicationInitializer {
从Spring source代码,
答案 1 :(得分:0)
你需要做两件事:
在您的weblogic 12.1.3实例上,升级您的JPA api并添加hibernate 5实现
在您的网络应用中,确保您拥有哪些依赖项,并且它们与Weblogic类加载器下已经配置的依赖项重叠。
我详细介绍了这里的步骤:
http://javagoogleappspot.blogspot.be/2018/05/make-your-spring-boot-20-compatible.html