【问题标题】:JBWEB000250: Child container with name already existsJBWEB000250:同名的子容器已经存在
【发布时间】:2015-07-25 20:33:56
【问题描述】:

我在 JBoss 中部署了耳朵,其中包含少量战争(Web 存档)。基本上部署的ear文件是由ant通过在启动ant build之前设置TOMCAT_HOME来构建的。

set TOMCAT_HOME=C:\apache-tomcat-6.0.32

我收到以下错误。我将它部署在 JBoss EAP 6.4.0.GA (AS 7.5.0.Final-redhat-21)

11:38:34,340 错误 [org.jboss.msc.service.fail](MSC 服务线程 1-5)MSC000001:无法启动服务 jboss.web.deployment.default-host./: org.jboss。服务 jboss.web.deployment.default-host./ 中的 msc.service.StartException:无法启动服务 在 org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1936) [jboss-msc-1.1.5.Final-redhat-1.jar:1.1.5.Final-redhat-1] 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [rt.jar:1.8.0_45] 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [rt.jar:1.8.0_45] 在 java.lang.Thread.run(Thread.java:745) [rt.jar:1.8.0_45]

原因:java.lang.IllegalArgumentException: JBWEB000250: 同名的子容器已经存在

原因:java.lang.IllegalArgumentException:JBWEB000250:同名的子容器已经存在 在 org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:794) 在 org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:785) 在 org.apache.catalina.core.StandardHost.addChild(StandardHost.java:353) 在 org.jboss.as.web.deployment.WebContextInjector.inject(WebContextInjector.java:62) 在 org.jboss.as.web.deployment.WebContextInjector.inject(WebContextInjector.java:38) 在 org.jboss.msc.inject.CastingInjector.inject(CastingInjector.java:55) [jboss-msc-1.1.5.Final-redhat-1.jar:1.1.5.Final-redhat-1] 在 org.jboss.msc.service.ServiceControllerImpl.doInject(ServiceControllerImpl.java:1704) [jboss-msc-1.1.5.Final-redhat-1.jar:1.1.5.Final-redhat-1] 在 org.jboss.msc.service.ServiceControllerImpl.access$2000(ServiceControllerImpl.java:52) [jboss-msc-1.1.5.Final-redhat-1.jar:1.1.5.Final-redhat-1] 在 org.jboss.msc.service.ServiceControllerImpl$StartTask.performInjections(ServiceControllerImpl.java:1949) [jboss-msc-1.1.5.Final-redhat-1.jar:1.1.5.Final-redhat-1] 在 org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1908) [jboss-msc-1.1.5.Final-redhat-1.jar:1.1.5.Final-redhat-1] ... 3 更多

此项目是旧项目。它在项目 lib 目录中有 Struts 1.2.9、Springs-2.0.8、Hibernate-3.2.6 jar 文件,其配置在 Web Archives (.war) 的 \WEB-INF\ 下可用。

基本上我将应用程序从 Websphere 移植到 JBoss

我该如何解决或克服这个问题。

【问题讨论】:

  • 我希望出现这个问题是因为 .ear 文件以及某些 .war 文件内部都出现了相同的 .war 文件。

标签: tomcat ant jboss


【解决方案1】:

要解决这个问题,只需停止服务器 JBOSS,导航到独立 / 部署中的目录服务器并删除 .war 项目。然后只需在服务器上再次添加项目即可。

【讨论】:

    【解决方案2】:

    在standalone.xml 中这将是真的enable-welcome-root。如果您将其设置为 false,您可以在 / 上下文中部署 Web 存档 .war....

    如果enable-welcome-root 保持为真,那么就会出现一些默认的 jboss 网页。因此,需要更正此问题以在 / 上下文中部署 Web 应用程序。

        <subsystem xmlns="urn:jboss:domain:web:2.1" default-virtual-server="default-host" native="false">
            <connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/>
            <virtual-server name="default-host" enable-welcome-root="false">
                <alias name="localhost"/>
                <alias name="example.com"/>
            </virtual-server>
        </subsystem>
    

    【讨论】:

      【解决方案3】:

      JBoss 不允许在 / 上下文中部署任何 .war.... 我们应该给一些 web 上下文名称...例如 /scweb 左右......然后它成功....

      .ear\META-INF\application.xml

      <?xml version="1.0" encoding="UTF-8"?>
          <application xmlns="http://java.sun.com/xml/ns/j2ee"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/application_1_4.xsd"
              version="1.4">
              <display-name>PCB Application</display-name>
              <module>
                  <web>
                      <web-uri>scWeb-1.1.war</web-uri>
                      <context-root>/scWeb</context-root>
                  </web>
              </module>
          </application>
      

      我希望有一些default-host部署在/

      仅出于这个原因,我希望它说得像....

      原因:java.lang.IllegalArgumentException: JBWEB000250: 同名的子容器已经存在

      为了克服这个错误,我删除了所有用于依赖注入的 .jar 服务器端类.....后来我意识到 .jar 不是导致错误的原因......我很困惑这个错误也出现在一些网络上下文中......这可能是因为对错误的快速解释,我不确定......

      这个错误只是针对default-host....或者可能是因为我在.ear\META-INF\lib下有一些lm-shared.jar

      如果我错了,请纠正我....给我一些记录,如果这个错误的原因可能是其他原因....

      【讨论】:

        【解决方案4】:

        出现此问题是因为 .ear 文件以及某些 .war 文件内部都出现了相同的 .war 文件。

        在我的情况下,.war 重复出现在一个 .war\WEB-INF\lib 下与一些 .war 文件同名的 jars。并且那些 .jar 的所有内容都被复制了,除了 web 文件夹被删除。我希望这样做是为了引用一些 java 文件。现在,我已经删除了那些 .jars。现在我没有收到这个特定的错误。

        所以,现在,我整理了这个错误JBWEB000250: Child container with name already exists..

        通过设置 TOMCAT_HOME 来构建 ant 目标并没有什么坏处。

        但随着 Web Container 的变化,它可能会产生一些影响。

        【讨论】:

        • 这不是问题,因为我需要将编译后的服务器端类作为.jar 放在WEB-INF/lib/ 中,因为我的APP 中使用了spring IOC 容器
        猜你喜欢
        • 2014-03-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-01
        • 2018-10-05
        • 1970-01-01
        • 2021-04-07
        • 1970-01-01
        相关资源
        最近更新 更多