我们使用的是 tomcat 1.6,新的要求是我们需要使用 tomEE+。当我们尝试迁移到 TomEE+ 时,我们收到一条错误消息“尝试对组件进行无效的生命周期转换([before_destroy])”。
org.apache.catalina.LifecycleException: An invalid Lifecycle transition was attempted ([before_destroy]) for component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/freshgate]] in state [STARTING_PREP] at org.apache.catalina.util.LifecycleBase.invalidTransition(LifecycleBase.java:409) at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:299) at org.apache.catalina.core.ContainerBase.removeChild(ContainerBase.java:1041) at org.apache.tomee.catalina.TomcatWebAppBuilder.undeploy(TomcatWebAppBuilder.java:1524) at org.apache.tomee.catalina.TomcatWebAppBuilder.undeploy(TomcatWebAppBuilder.java:1505) at org.apache.tomee.catalina.TomcatWebAppBuilder.undeployWebApps(TomcatWebAppBuilder.java:747) at org.apache.openejb.assembler.classic.Assembler.destroyApplication(Assembler.java:1668) at org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:892) at org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:623) at org.apache.tomee.catalina.TomcatWebAppBuilder.startInternal(TomcatWebAppBuilder.java:1248) at org.apache.tomee.catalina.TomcatWebAppBuilder.configureStart(TomcatWebAppBuilder.java:1087) at org.apache.tomee.catalina.GlobalListenerSupport.lifecycleEvent(GlobalListenerSupport.java:130) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117) at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5378) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:649) at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1083) at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1880) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) at java.util.concurrent.FutureTask.run(FutureTask.java:166) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) at java.lang.Thread.run(Thread.java:722)
但是这个war文件已成功部署在tomcat 1.6中,不知道“org.apache.openejb.assembler.deployer”的期望是什么。可以解释一下“部署者”的期望吗?
这对我们进一步推进非常有帮助,因为我们已经解决这个问题一个多星期了。
提前致谢
最佳答案
您已经解决了问题,因此无需接受它作为正确答案,但我想我应该为其他人添加一个快速注释。
有几种方法可以调查这些问题。首先,检查整个服务器日志,而不仅仅是堆栈跟踪。 TomEE 通常会在抛出任何异常之前告诉您它正在初始化哪个组件,因此可能会看到这是 JaxRS。
其次,出现此警告是因为您部署了 JAXRS 或 Jersey 组件作为 WAR 中的依赖项。虽然这在 Tomcat 上是必要的,但在 TomEE 中却不是必需的,因为它是一个完整的堆栈容器。
第三,请务必阅读文档:此特定场景列于此处:http://tomee.apache.org/tip-jersey-client.html
最后,如果您仍然遇到困难,请打开详细日志记录或类加载以查看服务器在失败之前正在执行的操作。
干杯 -乔纳森
关于java - Apache TomEE+ - 部署 war 失败 - 从 tomcat 1.6 迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28292326/