我读过其他主题,但我无法弄清楚这一点。我有一个使用log4j的EJB模块。我想将这个EJB打包成一个JAR文件并放入Web项目的WEB-INF/lib路径中。 Web项目有一个从EJB执行功能的servlet,就是这样。但似乎appender不起作用,因为该文件已创建但未写入。未能处理阶段结构部署
我读到JBoss的部署描述符,所以我根据之前的一篇文章创建了一个。但是我得到了“无法处理阶段结构的部署”错误。
12:04:44905 ERROR [org.jboss.msc.service.fail](MSC服务线程1-2)MSC00001:无法启动服务jboss.deployment.unit “SampleWeb.war” .STRUCTURE :服务jboss.deployment.unit中的org.jboss.msc.service.StartException。“SampleWeb.war”.STRUCTURE:未能在org.jboss.as.server.deployment中处理部署“SampleWeb.war” 的阶段STRUCTURE。 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.runWorker(Unknown Source)[rt.jar:1.7.0_21] at java.util.concurrent.ThreadPoolExecutor $ Worker.run(Unknown Source)[rt。 jar:1.7.0_21] at java.lang.Thread.run(Unknown Source)[rt.jar:1.7.0_21] 原因:org.jboss.as.server.deployment.DeploymentUnitProcessingException:Sub部署SampleEJB.jar in未找到jboss-structure.xml。可用的子部署: at org.jboss.as.server.deployment.module.descriptor.DeploymentStructureDescriptorParser.subDeploymentNotFound(DeploymentStructureDescriptorParser.java:233)[jboss-as-server-7.1.1.Final.jar:7.1.1.Final ] at org.jboss.as.server.deployment.module.descriptor.DeploymentStructureDescriptorParser.deploy(DeploymentStructureDescriptorParser.java:159)[jboss-as-server-7.1.1.Final.jar:7.1.1.Final] 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
这是我创建的jboss-deployment-structure.xml。由于Web项目仅使用我创建的EJB jar文件,因此我认为不使用部署标记。
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
<sub-deployment name="SampleEJB.jar">
<exclusions>
<module name="org.apache.log4j"/>
<module name="org.slf4j" />
<module name="org.apache.commons.logging"/>
<module name="org.log4j"/>
<module name="org.jboss.logging"/>
</exclusions>
</sub-deployment>
</jboss-deployment-structure>
我正在使用JBoss 7.1.1。
奇怪。我把它放在Web应用程序的WEB-INF/lib文件夹中。它应该在别的地方吗?或者我应该把它放在像“WEB-INF/lib/SampleEJB.jar”这样的整个路径上? – Xanathos
Shoulnd't外部和WAR + JAR被创建为EAR? – kosa
据我所知,描述符同样用于EAR和WAR。我正在部署一个Web应用程序(WAR),并且这是Web应用程序中唯一的.jar文件,所以我认为它可以。 – Xanathos