服务 jboss.web.deployment.default-host./.realm 已经注册
Posted
技术标签:
【中文标题】服务 jboss.web.deployment.default-host./.realm 已经注册【英文标题】:Service jboss.web.deployment.default-host./.realm is already registered 【发布时间】:2013-07-29 09:00:15 【问题描述】:我正在尝试将三个不同的 ear 文件部署到同一个 Jboss 服务器...
其中一个没有上下文根,另外两个有,但又不同。我的意思是,让我们把三只耳朵分别称为一耳、二耳和三耳:
one.ear 有:
<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
<context-root>/</context-root>
</jboss-web>
two.ear 有:
<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
<context-root>/two</context-root>
</jboss-web>
three.ear 没有。
当我尝试给 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
我了解到,当同一服务器中的两个应用程序具有相同的上下文根时,可能会引发此错误,但事实并非如此......发生了什么?
【问题讨论】:
【参考方案1】:一般来说,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>
【讨论】:
@Juned,这并没有解决这个问题。【参考方案2】:检查哪个--server-config
文件用于启动服务器。在我的例子中是standalone-ha.xml
,而不是预期的standalone.xml
。
【讨论】:
【参考方案3】:对我来说,重启 JBoss 服务器就足够了。 不知道为什么。
【讨论】:
【参考方案4】:尝试从 Web 服务器中删除 .war
存档,然后再次部署。您可以通过 jboss 管理控制台执行此操作。也可能是您在jboss-web.xml
中部署了具有相同<context-root>
元素值的另一个应用程序。
【讨论】:
【参考方案5】:这解决了我的问题 - 转到你的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>
【讨论】:
以上是关于服务 jboss.web.deployment.default-host./.realm 已经注册的主要内容,如果未能解决你的问题,请参考以下文章