【问题标题】:.War Works to deploy on Windows but fails to deploy on a Linux server (Tomcat 7).War 可以在 Windows 上部署,但无法在 Linux 服务器(Tomcat 7)上部署
【发布时间】:2015-12-10 22:09:27
【问题描述】:

正如标题所介绍的,我尝试使用 Tomcat 7 部署的 .War 文件无法在运行 Linux 的机器上运行。它可以在 Windows 上运行,当然也可以与 Tomcat 7 一起部署。

我试图单独追踪问题并在网络上搜索相关问题,包括这个论坛,但到目前为止没有成功。这就是为什么我创建了这个线程来寻求帮助/提示。

我追踪到的错误信息如下:

Sep 14, 2015 4:46:05 PM org.apache.catalina.deploy.NamingResources cleanUp
WARNING: Failed to retrieve JNDI naming context for container [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/SmartHomeReasoner]] so no cleanup was performed for that container
javax.naming.NameNotFoundException: Name [comp/env] is not bound in this Context. Unable to find [comp].
        at org.apache.naming.NamingContext.lookup(NamingContext.java:819)
        at org.apache.naming.NamingContext.lookup(NamingContext.java:167)
        at org.apache.catalina.deploy.NamingResources.cleanUp(NamingResources.java:986)
        at org.apache.catalina.deploy.NamingResources.stopInternal(NamingResources.java:968)
        at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232)
        at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5676)
        at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:141)
        at org.apache.catalina.manager.ManagerServlet.start(ManagerServlet.java:1256)
        at org.apache.catalina.manager.HTMLManagerServlet.start(HTMLManagerServlet.java:692)
        at org.apache.catalina.manager.HTMLManagerServlet.doPost(HTMLManagerServlet.java:217)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at org.apache.catalina.filters.CsrfPreventionFilter.doFilter(CsrfPreventionFilter.java:213)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:610)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
        at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:313)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)

【问题讨论】:

  • 看起来您尝试获取的 JNDI 资源可能未定义。检查服务器的server.xmlcontext.xml 是否存在差异?
  • @CollinD,恐怕没有区别。
  • 这确实是一个奇怪的问题。不确定这些是否有帮助,但看起来这是那些通用错误之一,可能意味着任何数量的事情 stackoverflow.com/questions/20854848/…stackoverflow.com/questions/17857038/…
  • @CollinD,是的,我已经尝试过了,很遗憾,没有帮助。
  • 那么我想我能给你的只是一个赞成票和祝福。对不起!

标签: java linux deployment tomcat7 web-deployment


【解决方案1】:

刚刚遇到同样的问题,将 Maven 构建(从 1.8 到 1.10)的 Java 版本和运行环境 (1.10) 同步解决了它。

【讨论】:

    【解决方案2】:

    实际上是 2 个问题导致了这个问题。

    为了解决这个问题,我必须:

    *在出现任何错误后非常仔细地检查 web.xml,例如不存在我们已经定义的事物的 servlet,例如驱动程序被定义了两次,这意味着它已经在某个地方定义并且也在 web.xml 中。

    *删除项目..\WEB-INF\lib 文件夹中的servlet。例如。在这种情况下删除了 javax.servlet-api-3.0.1.jar + javax.servlet-api-3.1.0.jar。 注意我什至有可能在项目级别上相互冲突的 jar,但我仍然能够在 Windows 上成功部署,但在 Linux 上却不能。

    相信我,我提到的这两件事都可能是个问题,如果你接手其他已经错过的开发人员的工作,很可能是这样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-11
      • 1970-01-01
      • 2015-12-10
      • 1970-01-01
      • 1970-01-01
      • 2020-07-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多