【问题标题】:TomEE multiple hosts with the same app deployment issuesTomEE 多个主机具有相同的应用程序部署问题
【发布时间】:2017-06-27 08:43:40
【问题描述】:

我正在尝试为开发和测试环境设置具有多个虚拟主机的 TomEE (7.0.2),相同的应用程序通常会部署到所有主机。我从this 的帖子中发现了如何避免 JNDI 命名冲突,这在很大程度上解决了部署失败的问题,但我现在还有其他几个问题。

第一个问题是我仍然在日志中收到以下严重错误,虽然它们似乎不影响正在运行的应用程序,但我不知道如何摆脱它们:

SCHWERWIEGEND - Jndi(name=global/webspi/DefaultStoredProcedureResolver) cannot be bound to Ejb(deployment-id=1774342742/ger400-q/2-webspi/webspi/DefaultDatasourceConnectorService).  Name already taken by Ejb(deployment-id=-1143530541/ger400-t/1-webspi/webspi/DefaultStoredProcedureResolver

第二个问题是除非先重命名,否则一个WAR文件不会部署到其中一个主机(下面的ger400-d)。它将毫无问题地部署到所有其他人。生成的日志消息是这样的:

SCHWERWIEGEND - Error merging Java EE JNDI entries in to war /webspi: Exception: null java.lang.NullPointerException

在 WAR 文件名后添加“x”或其他任何内容,使其正确部署,尽管路径名错误。

最后一个问题是,停止或取消部署应用程序的一个实例会破坏所有其他正在运行的实例,似乎 Jax RS 过滤器受到了某种干扰:

    javax.servlet.ServletException: Error processing webservice request
        org.apache.tomee.webservices.CXFJAXRSFilter.doFilter(CXFJAXRSFilter.java:98)
        org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
        org.apache.openejb.server.httpd.EEFilter.doFilter(EEFilter.java:65)
        org.webspi.CORSFilter.doFilter(CORSFilter.java:61)
root cause
java.lang.NullPointerException
        org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:252)
        org.apache.openejb.server.cxf.rs.CxfRsHttpListener.doInvoke(CxfRsHttpListener.java:251)
        org.apache.tomee.webservices.CXFJAXRSFilter.doFilter(CXFJAXRSFilter.java:94)
        org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
        org.apache.openejb.server.httpd.EEFilter.doFilter(EEFilter.java:65)
        org.webspi.CORSFilter.doFilter(CORSFilter.java:61)

server.xml的相关部分是

  <Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">
  </Host>
  <Host name="ger400-d"  appBase="/usr/tomee-webapps/d" unpackWARs="true" autoDeploy="true">
    <Alias>ger400-d.ourcompany.com</Alias>
  </Host>
  <Host name="ger400-t"  appBase="/usr/tomee-webapps/t" unpackWARs="true" autoDeploy="true">
    <Alias>ger400-t.ourcompany.com</Alias>
  </Host>
  <Host name="ger400-q"  appBase="/usr/tomee-webapps/q" unpackWARs="true" autoDeploy="true">
    <Alias>ger400-q.ourcompany.com</Alias>
  </Host>
  <Host name="ger400-r"  appBase="/usr/tomee-webapps/r" unpackWARs="true" autoDeploy="true">
    <Alias>ger400-r.ourcompany.com</Alias>
  </Host>

有什么想法可能是错的吗?

【问题讨论】:

    标签: ejb host apache-tomee openejb tomee-7


    【解决方案1】:

    我也遇到过这个问题,但是对于 Tomee 来说是新手,我不知道有一个简单的解决方案。当我将我的 Web 应用程序部署到 webapps 文件夹时,该应用程序运行良好,但是当我将它部署到服务文件夹时,我得到了同样的中止。问题是文件夹名称与战争名称不匹配(减去 .war)。一旦我解决了这个问题,该应用程序就可以正常工作了。确保war名称、文件夹名称和服务名称相同。

    【讨论】:

    • 感谢您的回复。最后我放弃了这个想法,因为我还遇到了多个应用程序会干扰的其他问题,所以我决定运行三个独立的 TomEE 实例并反向代理到正确的一个。
    猜你喜欢
    • 2021-10-15
    • 2017-06-19
    • 2014-09-12
    • 2014-05-28
    • 2020-05-09
    • 1970-01-01
    • 1970-01-01
    • 2020-05-15
    • 1970-01-01
    相关资源
    最近更新 更多