在jBoss AS中创建模块 [英] Creating module in jBoss AS

查看:353
本文介绍了在jBoss AS中创建模块的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用jBoss AS 7发布我的各种项目,并且他们都使用Jersey API,所以不是在每个项目中部署它,我想为它创建一个模块。为此,我创建了文件夹JBOSS_HOME \modules\com\sun\Jersey\main,在这个文件夹中我放置了Jersey jar和文件module.xml:

 <?xml version =1.0encoding =UTF-8?> 
< module xmlns =urn:jboss:module:1.1name =com.sun.jersey>
< property>
< property name =jboss.apivalue =private/>
< / properties>
< resources>
< resource-root path =jersey-bundle-1.12.jar/>
< resource-root path =asm-3.1.jar/>
< resource-root path =jackson-core-asl-1.9.2.jar/>
< resource-root path =jackson-jaxrs-1.9.2.jar/>
< resource-root path =jackson-mapper-asl-1.9.2.jar/>
< resource-root path =jackson-xc-1.9.2.jar/>
< resources-root path =jersey-client-1.12.jar/>
< resource-root path =jersey-core-1.12.jar/>
< resource-root path =jersey-json-1.12.jar/>
< resource-root path =jersey-server-1.12.jar/>
< resource-root path =jersey-servlet-1.12.jar/>
< resource-root path =jettison-1.1.jar/>
< resource-root path =jsr311-api-1.1.1.jar/>
< / resources>
< dependencies>
< module name =javax.api/>
< module name =org.jboss.stax mapper/>
< module name =org.jboss.as.controller/>
< module name =org.jboss.as.server/>
< module name =org.jboss.modules/>
< module name =org.jboss.msc/>
< module name =org.jboss.logging/>
< module name =org.jboss.vfs/>
< / dependencies>
< / module>

为了防止使用jBoss JAX-RS,我从文件中删除JBOSS_HOME \standalone\ standalone.xml下面几行:

 < subsystem xmlns =urn:jboss:domain:jaxrs:1.0/> 
< extension module =org.jboss.as.jaxrs/>

在MyProjectEAR \META-INF文件夹中,我创建了jboss-deployment-structure.xml文件以下结构:

 <?xml version =1.0encoding =UTF-8?& 
< jboss-deployment-structure xmlns =urn:jboss:deployment-structure:1.0>
< deployment>
< dependencies>
< module name =com.sun.jerseyslot =main>
< imports>
< include path =META-INF / **/>
< include path =**/>
< / imports>
< / module>
< / dependencies>
< / deployment>
< / jboss-deployment-structure>

My MyProject\webContent\web.xml文件是:

 <?xml version =1.0encoding =UTF-8?& 
< web-app id =WebApp_IDversion =2.5xmlns =http://java.sun.com/xml/ns/javaeexmlns:xsi =http://www.w3 .org / 2001 / XMLSchema-instancexsi:schemaLocation =http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd >
< display-name> MyProject< / display-name>

< servlet>
< description>
< / description>
< servlet-name> Jersey Servlet< / servlet-name>
< servlet-class> com.sun.jersey.spi.container.servlet.ServletContainer< / servlet-class>
< init-param>
< description>< / description>
< param-name> javax.ws.rs.Application< / param-name>
< param-value> com.MyProject.service.REST_Application< / param-value>
< / init-param>
< load-on-startup> 1< / load-on-startup>
< / servlet>

< servlet-mapping>
< servlet-name> Jersey Servlet< / servlet-name>
< url-pattern> / jaxrs / *< / url-pattern>
< / servlet-mapping>
< / web-app>

我的清单文件存在于MyProject \webContent\META-INF \ MANIFEST.MF :

  Manifest-Version:1.0 
Class-Path:

当我试图部署项目时,我得到以下错误:

  12:12:11,804 INFO [org.jboss.as.server.deployment](MSC服务线程1-5)JBAS015876:开始部署MyProjectEAR.ear
12:12:11,852 INFO [ org.jboss.as.server.deployment](MSC服务线程1-7)JBAS015876:开始部署MyProject.war
12:12:12,052 WARN [org.jboss.as.dependency.private] MSC服务线程1-3)JBAS018567:部署deployment.MyProjectEAR.ear使用私有模块(com.sun.jersey:main),在将来的版本中可能会更改或删除,而不另行通知。
12:12:12,054 WARN [org.jboss.as.dependency.private](MSC服务线程1-3)JBAS018567:部署deployment.MyProjectEAR.ear使用私有模块(com.sun。泽西:主),在未来的版本中可能会更改或删除,恕不另行通知。
12:12:12,055 WARN [org.jboss.as.dependency.private](MSC服务线程1-3)JBAS018567:部署deployment.MyProjectEAR.ear使用私有模块(com.sun。 misc:main),未来版本可能会更改或删除,恕不另行通知。
12:12:12,057 WARN [org.jboss.as.dependency.private](MSC服务线程1-3)JBAS018567:部署deployment.MyProjectEAR.ear使用私有模块(com.sun。 misc:main),未来版本可能会更改或删除,恕不另行通知。
12:12:12,117错误[org.jboss.msc.service.fail](MSC服务线程1-7)MSC00001:无法启动服务jboss.deployment.subunitMyProjectEAR.ear。MyProject。 war.POST_MODULE:service jboss.deployment.subunit中的org.jboss.msc.service.StartExceptionMyProjectEAR.ear。MyProject.war.POST_MODULE:无法处理部署子部署MyProject.war的阶段POST_MODULE MyProjectEAR.ear
at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:119)[jboss-as-server-7.1.0.Final.jar:7.1.0.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]
在java.util.concurrent。 ThreadPoolExecutor $ Worker.runTask(未知源)[rt.jar:1.6.0_30]
在java.util.concurrent.ThreadPoolExecutor $ Worker.run(未知来源)[rt.jar:1.6.0_30]
在java.lang.Thread.run(未知源)[rt.jar:1.6.0_30]
导致:org.jboss.as.server.deployment.DeploymentUnitProcessingException:JBAS011093:无法加载组件类com。 sun.jersey.spi.container.servlet.ServletContainer
at org.jboss.as.ee.component.deployers.InterceptorAnnotationProcessor.processComponentConfig(InterceptorAnnotationProcessor.java:113)
at org.jboss.as.ee .component.deployers.InterceptorAnnotationProcessor.deploy(InterceptorAnnotationProcessor.java:54)
at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:113)[jboss-as-server-7.1.0 .Final.jar:7.1.0.Final]
...另外5个
引发者:java.lang.ClassNotFoundException:com.sun.jersey.spi.container.servlet.ServletContainer from [Module deployment.MyProjectEAR.ear.MyProject.war:mainfrom Service Module Loader]
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190)[jboss-modules.jar:1.1.1.GA ]
at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468)[jboss-modules.jar:1.1.1.GA]
at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked ConcurrentClassLoader.java:456)[jboss-modules.jar:1.1.1.GA]
at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)[jboss-modules.jar:1.1.1 .GA]
at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120)[jboss-modules.jar:1.1.1.GA]
at org.jboss.as.ee。 component.deployers.InterceptorAnnotationProcessor.processComponentConfig(InterceptorAnnotationProcessor.java:111)
... 7 more
12:12:12,340 INFO [org.jboss.as.server](DeploymentScanner-threads - 2)JBAS015870 :部署部署MyProjectEAR.ear回滚失败消息{JBAS014671:Failed services=> {jboss.deployment.subunit.\MyProjectEAR.ear \.\MyProject.war\.POST_MODULE=> org.jboss.msc.service.StartException in service jboss.deployment.subunit.\MyProjectEAR.ear\.\MyProject.war\.POST_MODULE:无法处理子部署的阶段POST_MODULE \ MyProject.war \of deployment \MyProjectEAR.ear\}}
12:12:12,351 INFO [org.jboss.as.server.deployment](MSC服务线程1-5)JBAS015877 :停止部署MyProject.war在9ms
12:12:12,353 INFO [org.jboss.as.server.deployment](MSC服务线程1-5)JBAS015877:停止部署MyProjectEAR.ear在12ms
12:12:12,355 INFO [org.jboss.as.controller](DeploymentScanner-threads - 2)JBAS014774:服务状态报告
JBAS014777:无法启动的服务:service jboss.deployment.subunitMyProjectEAR.ear 。MyProject.war.POST_MODULE:org.jboss.msc.service.StartException in service jboss.deployment.subunit。MyProjectEAR.ear。MyProject.war.POST_MODULE:无法处理子部署的阶段POST_MODULEMyProject .warof deploymentMyProjectEAR.ear
12:12:12,359错误[org.jboss.as.server.deployment.scanner](DeploymentScanner-threads - 1){JBAS014653:复合操作失败,背部。失败的步骤:=> {操作步骤-2=> {JBAS014671:失败的服务=> {jboss.deployment.subunit.\MyProjectEAR.ear \。\MyProject .war \.POST_MODULE=>org.jboss.msc.service.StartException在服务jboss.deployment.subunit.\MyProjectEAR.ear \.\MyProject.war\.POST_MODULE :无法处理部署\MyProjectEAR.ear\}部署子部署\MyProject.war\的阶段POST_MODULE}}}}

* EDIT:* 如果我将Jersey API放在JBOSS_HOME\modules\com\sun\jsf-impl\main中,

解决方案

我需要添加

 < subsystem xmlns =urn:jboss:domain:ee:1.0> 
< global-modules>
< module name =com.sun.jerseyslot =main/>
< / global-modules>
< / subsystem>



导入JBOSS_HOME \standalone \configuration \standalone.xml配置文件


I’m using jBoss AS 7 to publish my various projects, and all of them use the Jersey API, so instead of deploying it in every project I wanted to create a module for it. For that, I created the folder JBOSS_HOME\modules\com\sun\Jersey\main and in this folder I placed the Jersey jar’s and the file module.xml:

<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.1" name="com.sun.jersey">
    <properties>
        <property name="jboss.api" value="private"/>
    </properties>
    <resources>
        <resource-root path="jersey-bundle-1.12.jar"/>
        <resource-root path="asm-3.1.jar"/>
        <resource-root path="jackson-core-asl-1.9.2.jar"/>
        <resource-root path="jackson-jaxrs-1.9.2.jar"/>
        <resource-root path="jackson-mapper-asl-1.9.2.jar"/>
        <resource-root path="jackson-xc-1.9.2.jar"/>        
        <resource-root path="jersey-client-1.12.jar"/>
        <resource-root path="jersey-core-1.12.jar"/>
        <resource-root path="jersey-json-1.12.jar"/>
        <resource-root path="jersey-server-1.12.jar"/>
        <resource-root path="jersey-servlet-1.12.jar"/>
        <resource-root path="jettison-1.1.jar"/>
        <resource-root path="jsr311-api-1.1.1.jar"/>
    </resources>
    <dependencies>
        <module name="javax.api"/>
        <module name="org.jboss.staxmapper"/>
        <module name="org.jboss.as.controller"/>
        <module name="org.jboss.as.server"/>
        <module name="org.jboss.modules"/>
        <module name="org.jboss.msc"/>
        <module name="org.jboss.logging"/>
        <module name="org.jboss.vfs"/>
    </dependencies>
</module>

To prevent the use of the jBoss JAX-RS I removed from the file JBOSS_HOME\standalone\standalone.xml the following lines:

<subsystem xmlns="urn:jboss:domain:jaxrs:1.0"/>
<extension module="org.jboss.as.jaxrs"/>

In MyProjectEAR\META-INF folder I created the jboss-deployment-structure.xml file with the following structure:

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.0">
   <deployment>
      <dependencies>
        <module name="com.sun.jersey" slot="main" >
            <imports>
                <include path="META-INF/**"/>
                <include path="**"/>
            </imports>
        </module>
      </dependencies>
   </deployment>
</jboss-deployment-structure>

My MyProject\webContent\web.xml file is this:

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <display-name> MyProject </display-name>

    <servlet>
        <description>
        </description>
        <servlet-name>Jersey Servlet</servlet-name>
        <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
        <init-param>
            <description></description>
            <param-name>javax.ws.rs.Application</param-name>
            <param-value>com.MyProject.service.REST_Application</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>Jersey Servlet</servlet-name>
        <url-pattern>/jaxrs/*</url-pattern>
    </servlet-mapping>
</web-app>

My manifest file present at MyProject\webContent\META-INF\ MANIFEST.MF is this:

Manifest-Version: 1.0
Class-Path:

When i tried to deploy the project I got the following error:

12:12:11,804 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-5) JBAS015876: Starting deployment of "MyProjectEAR.ear"
12:12:11,852 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-7) JBAS015876: Starting deployment of "MyProject.war"
12:12:12,052 WARN  [org.jboss.as.dependency.private] (MSC service thread 1-3) JBAS018567: Deployment "deployment.MyProjectEAR.ear" is using a private module ("com.sun.jersey:main") which may be changed or removed in future versions without notice.
12:12:12,054 WARN  [org.jboss.as.dependency.private] (MSC service thread 1-3) JBAS018567: Deployment "deployment.MyProjectEAR.ear" is using a private module ("com.sun.jersey:main") which may be changed or removed in future versions without notice.
12:12:12,055 WARN  [org.jboss.as.dependency.private] (MSC service thread 1-3) JBAS018567: Deployment "deployment.MyProjectEAR.ear" is using a private module ("com.sun.misc:main") which may be changed or removed in future versions without notice.
12:12:12,057 WARN  [org.jboss.as.dependency.private] (MSC service thread 1-3) JBAS018567: Deployment "deployment.MyProjectEAR.ear" is using a private module ("com.sun.misc:main") which may be changed or removed in future versions without notice.
12:12:12,117 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-7) MSC00001: Failed to start service jboss.deployment.subunit."MyProjectEAR.ear"."MyProject.war".POST_MODULE: org.jboss.msc.service.StartException in service jboss.deployment.subunit."MyProjectEAR.ear"."MyProject.war".POST_MODULE: Failed to process phase POST_MODULE of subdeployment "MyProject.war" of deployment "MyProjectEAR.ear"
    at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:119) [jboss-as-server-7.1.0.Final.jar:7.1.0.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_30]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [rt.jar:1.6.0_30]
    at java.lang.Thread.run(Unknown Source) [rt.jar:1.6.0_30]
Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: JBAS011093: Could not load component class com.sun.jersey.spi.container.servlet.ServletContainer
    at org.jboss.as.ee.component.deployers.InterceptorAnnotationProcessor.processComponentConfig(InterceptorAnnotationProcessor.java:113)
    at org.jboss.as.ee.component.deployers.InterceptorAnnotationProcessor.deploy(InterceptorAnnotationProcessor.java:54)
    at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:113) [jboss-as-server-7.1.0.Final.jar:7.1.0.Final]
    ... 5 more
Caused by: java.lang.ClassNotFoundException: com.sun.jersey.spi.container.servlet.ServletContainer from [Module "deployment.MyProjectEAR.ear.MyProject.war:main" from Service Module Loader]
    at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190) [jboss-modules.jar:1.1.1.GA]
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468) [jboss-modules.jar:1.1.1.GA]
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456) [jboss-modules.jar:1.1.1.GA]
    at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398) [jboss-modules.jar:1.1.1.GA]
    at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120) [jboss-modules.jar:1.1.1.GA]
    at org.jboss.as.ee.component.deployers.InterceptorAnnotationProcessor.processComponentConfig(InterceptorAnnotationProcessor.java:111)
    ... 7 more
12:12:12,340 INFO  [org.jboss.as.server] (DeploymentScanner-threads - 2) JBAS015870: Deploy of deployment "MyProjectEAR.ear" was rolled back with failure message {"JBAS014671: Failed services" => {"jboss.deployment.subunit.\"MyProjectEAR.ear\".\"MyProject.war\".POST_MODULE" => "org.jboss.msc.service.StartException in service jboss.deployment.subunit.\"MyProjectEAR.ear\".\"MyProject.war\".POST_MODULE: Failed to process phase POST_MODULE of subdeployment \"MyProject.war\" of deployment \"MyProjectEAR.ear\""}}
12:12:12,351 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-5) JBAS015877: Stopped deployment MyProject.war in 9ms
12:12:12,353 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-5) JBAS015877: Stopped deployment MyProjectEAR.ear in 12ms
12:12:12,355 INFO  [org.jboss.as.controller] (DeploymentScanner-threads - 2) JBAS014774: Service status report
JBAS014777:   Services which failed to start:      service jboss.deployment.subunit."MyProjectEAR.ear"."MyProject.war".POST_MODULE: org.jboss.msc.service.StartException in service jboss.deployment.subunit."MyProjectEAR.ear"."MyProject.war".POST_MODULE: Failed to process phase POST_MODULE of subdeployment "MyProject.war" of deployment "MyProjectEAR.ear"
12:12:12,359 ERROR [org.jboss.as.server.deployment.scanner] (DeploymentScanner-threads - 1) {"JBAS014653: Composite operation failed and was rolled back. Steps that failed:" => {"Operation step-2" => {"JBAS014671: Failed services" => {"jboss.deployment.subunit.\"MyProjectEAR.ear\".\"MyProject.war\".POST_MODULE" => "org.jboss.msc.service.StartException in service jboss.deployment.subunit.\"MyProjectEAR.ear\".\"MyProject.war\".POST_MODULE: Failed to process phase POST_MODULE of subdeployment \"MyProject.war\" of deployment \"MyProjectEAR.ear\""}}}}

* EDIT : * If I place the Jersey API in JBOSS_HOME\modules\com\sun\jsf-impl\main and change the corresponding module.xml everything works ok. What does this location have different?

解决方案

I needed to add

<subsystem xmlns="urn:jboss:domain:ee:1.0">
    <global-modules>
        <module name="com.sun.jersey" slot="main"/>
    </global-modules>
</subsystem>

into the JBOSS_HOME\standalone\configuration\standalone.xml configuration file

这篇关于在jBoss AS中创建模块的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆