【问题标题】:Apache TomEE+ - deployment of a war fails- migrating from tomcat 1.6Apache TomEE+ - 部署战争失败 - 从 tomcat 1.6 迁移
【发布时间】:2015-04-02 06:14:30
【问题描述】:

我们使用的是tomcat 1.6,一个新的要求是我们需要使用tomEE+。当我们尝试迁移到 TomEE+ 时,我们收到一条错误消息,提示“尝试了无效的生命周期转换 ([before_destroy]) 组件”。

org.apache.catalina.LifecycleException: 无效的生命周期 已尝试对组件进行转换 ([before_destroy]) [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/freshgate]] 处于 [STARTING_PREP] 状态 org.apache.catalina.util.LifecycleBase.invalidTransition(LifecycleBase.java:409) 在 org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:299) 在 org.apache.catalina.core.ContainerBase.removeChild(ContainerBase.java:1041) 在 org.apache.tomee.catalina.TomcatWebAppBuilder.undeploy(TomcatWebAppBuilder.java:1524) 在 org.apache.tomee.catalina.TomcatWebAppBuilder.undeploy(TomcatWebAppBuilder.java:1505) 在 org.apache.tomee.catalina.TomcatWebAppBuilder.undeployWebApps(TomcatWebAppBuilder.java:747) 在 org.apache.openejb.assembler.classic.Assembler.destroyApplication(Assembler.java:1668) 在 org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:892) 在 org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:623) 在 org.apache.tomee.catalina.TomcatWebAppBuilder.startInternal(TomcatWebAppBuilder.java:1248) 在 org.apache.tomee.catalina.TomcatWebAppBuilder.configureStart(TomcatWebAppBuilder.java:1087) 在 org.apache.tomee.catalina.GlobalListenerSupport.lifecycleEvent(GlobalListenerSupport.java:130) 在 org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117) 在 org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) 在 org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5378) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 在 org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901) 在 org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877) 在 org.apache.catalina.core.StandardHost.addChild(StandardHost.java:649) 在 org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1083) 在 org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1880) 在 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) 在 java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) 在 java.util.concurrent.FutureTask.run(FutureTask.java:166) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) 在 java.lang.Thread.run(Thread.java:722)

但是这个war文件在tomcat 1.6中成功部署了,不知道“org.apache.openejb.assembler.deployer”是什么意思。有人可以解释一下“部署者”的期望。

在我们解决这个问题一个多星期后,进一步推进对我们非常有帮助。

提前致谢

【问题讨论】:

  • 我已经通过在 conf 中的 System.properties 中添加“openejb.api.javax.ws.rs.Path.validation=false”解决了这个问题

标签: java tomcat openejb apache-tomee


【解决方案1】:

你已经解决了这个问题,所以不需要接受这个作为正确答案,但我想我会为其他人添加一个快速注释。

有几种方法可以调查这些问题。首先,检查整个服务器日志,而不仅仅是堆栈跟踪。 TomEE 通常会在引发任何异常之前告诉您它正在初始化的组件,因此可能已经看到这是 JaxRS。

其次,出现此警告是因为您将 JAXRS 或 Jersey 组件部署为 WAR 中的依赖项。虽然这在 Tomcat 上是必需的,但在 TomEE 中却不是必需的,因为它是一个完整的堆栈容器。

第三,请务必阅读文档:此处列出了此特定场景:http://tomee.apache.org/tip-jersey-client.html

最后,如果您仍然卡住,请打开详细日志记录或类加载以查看服务器在失败之前正在做什么。

干杯 -乔纳森

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-06
    • 1970-01-01
    • 2012-04-14
    • 2011-12-01
    相关资源
    最近更新 更多