4

我正在尝试将三个不同的 ear 文件部署到同一个 Jboss 服务器...

其中一个没有上下文根,另外两个有,但不同。我的意思是,让我们将三个耳朵分别称为 one.ear、two.ear 和three.ear:

one.ear 有:

<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
    <context-root>/</context-root>
</jboss-web>

二.ear 有:

<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
    <context-root>/two</context-root>
</jboss-web>

三耳没有。

当我尝试给 Jboss (7 AS) 加星时,我得到了这个:

16:01:31,962 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-5) MSC00001: Failed to start service jboss.deployment.subunit."one-ear.ear"."one.war".INSTALL: org.jboss.msc.service.StartException in service jboss.deployment.subunit."one-ear.ear"."one.war".INSTALL: Failed to process phase INSTALL of subdeployment "one.war" of deployment "one-ear.ear"
    at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:119) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) [rt.jar:1.6.0_45]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [rt.jar:1.6.0_45]
    at java.lang.Thread.run(Unknown Source) [rt.jar:1.6.0_45]
Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: JBAS018027: Failed to add JBoss Web deployment service
    at org.jboss.as.web.deployment.WarDeploymentProcessor.processDeployment(WarDeploymentProcessor.java:320)
    at org.jboss.as.web.deployment.WarDeploymentProcessor.deploy(WarDeploymentProcessor.java:114)
    at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:113) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
    ... 5 more
Caused by: org.jboss.msc.service.DuplicateServiceException: Service jboss.web.deployment.default-host./.realm is already registered
    at org.jboss.msc.service.ServiceRegistrationImpl.setInstance(ServiceRegistrationImpl.java:154) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
    at org.jboss.msc.service.ServiceControllerImpl.startInstallation(ServiceControllerImpl.java:227) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
    at org.jboss.msc.service.ServiceContainerImpl.install(ServiceContainerImpl.java:560) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
    at org.jboss.msc.service.ServiceTargetImpl.install(ServiceTargetImpl.java:201) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
    at org.jboss.msc.service.ServiceControllerImpl$ChildServiceTarget.install(ServiceControllerImpl.java:2228) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
    at org.jboss.msc.service.ServiceTargetImpl.install(ServiceTargetImpl.java:201) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
    at org.jboss.msc.service.ServiceControllerImpl$ChildServiceTarget.install(ServiceControllerImpl.java:2228) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
    at org.jboss.msc.service.ServiceBuilderImpl.install(ServiceBuilderImpl.java:307) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
    at org.jboss.as.web.deployment.WarDeploymentProcessor.processDeployment(WarDeploymentProcessor.java:269)
    ... 7 more

我已经读到,当同一服务器中的两个应用程序具有相同的上下文根时,可能会引发此错误,但事实并非如此......发生了什么?

4

5 回答 5

2

通常,Jboss 等容器的上下文根为

<context-root>/</context-root>

拦截所有传入的请求并传递给应用程序服务器。在您的我怀疑有冲突的应用程序是 JBoss AppServer 根本身,您可以使用以下命令禁用它(enable-welcome-root="false")

<subsystem xmlns="urn:jboss:domain:web:1.0">
  <connector name="http" protocol="HTTP/1.1" socket-binding="http" scheme="http"/>
  <virtual-server name="localhost" enable-welcome-root="false">
    <alias name="example.com"/>
  </virtual-server>
</subsystem>
于 2013-07-29T14:17:57.170 回答
1

尝试.war从 Web 服务器中删除存档,然后再次部署。您可以通过 jboss 管理控制台执行此操作。也可能是您部署了另一个具有相同<context-root>元素值的应用程序jboss-web.xml

于 2019-03-29T17:22:43.190 回答
0

检查哪个--server-config文件用于启动服务器。就我而言,这standalone-ha.xml不是预期的standalone.xml.

于 2015-03-11T11:34:35.977 回答
0

这解决了我的问题 - 转到你的standalone.xml - JBoss 引用的那个

在standalone.xml - 你会发现部署部分

  <deployments>
        <deployment name="YOUR_APP.ear" runtime-name="YOUR_APP-version-SNAPSHOT.ear">
            <fs-archive path="C:\YOUR_APP-version-SNAPSHOT.ear"/>
        </deployment>
    </deployments>

如果您尝试部署较新版本或不同版本的耳朵 - 它会给出这样的错误。

从部署部分中删除此部分并将其保留为空

  <deployments>
 <!-- remove the deployment from here --> 
    </deployments>

然后只需重新启动您的服务器 - 它将再次部署 YOUR_APP.ear

现在它将显示 - 新版本

<deployments>
        <deployment name="YOUR_APP.ear" runtime-name="YOUR_APP-NEW_version-SNAPSHOT.ear">
            <fs-archive path="C:\YOUR_APP-_NEW_version-SNAPSHOT.ear"/>
        </deployment>
    </deployments>
于 2019-09-17T07:21:05.113 回答
0

对我来说,重启 JBoss 服务器就足够了。 不知道为什么。

于 2018-05-14T09:37:49.053 回答