使用依赖项从Eclipse部署Web应用程序到JBoss

lms*_*asu 5 eclipse deployment jboss maven

我有一个在Eclipse下开发的项目,安装了JBoss工具.当我将应用程序部署到Jboss服务器时,一些通过Maven可用于项目的帮助程序jar文件不会复制到WEB-INF/lib文件夹中.因此,我ClassNotFound在运行时获得异常.

是否有任何方法可以说服Eclipse(或Maven)在部署时将jar文件复制到lib文件夹中?

编辑:pom.xml看起来像:

<project xmlns="http://maven.apache.org/POM/4.0.0" 
                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
                                   http://maven.apache.org/maven-v4_0_0.xsd">

<modelVersion>4.0.0</modelVersion>
<groupId>com.whatever.simulators</groupId>
<artifactId>eebuildingsim</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>eebuildingsim Maven Webapp</name>
<url>http://maven.apache.org</url>

<dependencies>

    <!-- begin JBoss -->

    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jaxrs</artifactId>
        <version>2.3.2.FINAL</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>jaxrs-api</artifactId>
        <version>2.3.0.GA</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.1.2</version>
        <scope>provided</scope>
    </dependency>

    <!-- end JBoss -->

    <dependency>
        <groupId>ro.mysite</groupId>
        <artifactId>petrinetexec</artifactId>
        <version>0.1.3.81</version>
    </dependency>

    <dependency>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <version>2.4.3</version>
    </dependency>

    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-api</artifactId>
        <version>6.0</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.16</version>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.6.6</version>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>3.8.1</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>com.whatever.myAuxiliaryStuff</groupId>
        <artifactId>myAuxiliaryStuff </artifactId>
        <version>0.1.0.1305</version>
    </dependency>
    <dependency>
        <groupId>com.sun.faces</groupId>
        <artifactId>jsf-api</artifactId>
        <version>2.2.0-m09</version>
    </dependency>
    <dependency>
        <groupId>com.sun.faces</groupId>
        <artifactId>jsf-impl</artifactId>
        <version>2.2.0-m09</version>
    </dependency>
</dependencies>

<build>
    <finalName>eebuildingsim</finalName>
</build>
Run Code Online (Sandbox Code Playgroud)

myAuxiliaryStuff应该WEB-INF/lib在jboss部署服务器下部署工件.

使用:

  • Eclipse:Juno Service Release 1
  • Jboss:7.1.1.最后
  • m2e 1.3.1.20130219-1424
  • eclipse web工具平台3.4.2.v2013

稍后编辑:jboss'日志文件中报告的错误如下所示:

 12:31:38,507 INFO  [org.jboss.weld.deployer] (MSC service thread 1-5)
 JBAS016002: Processing weld deployment mywar.war 12:31:38,522 ERROR
 [org.jboss.msc.service.fail] (MSC service thread 1-5) MSC00001: Failed
 to start service jboss.deployment.unit."mywar.war".POST_MODULE:
 org.jboss.msc.service.StartException in service
 jboss.deployment.unit."mywar.war".POST_MODULE: Failed to process phase
 POST_MODULE of deployment "mywar.war"  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.runWorker(ThreadPoolExecutor.java:1110)
 [rt.jar:1.7.0_05]  at
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
 [rt.jar:1.7.0_05]  at java.lang.Thread.run(Thread.java:722)
 [rt.jar:1.7.0_05] Caused by: java.lang.NoSuchFieldError: FLOW  at
 com.sun.faces.flow.FlowDiscoveryCDIExtension.<clinit>(FlowDiscoveryCDIExtension.java:90)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
 Method) [rt.jar:1.7.0_05]  at
 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
 [rt.jar:1.7.0_05]  at
 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
 [rt.jar:1.7.0_05]  at
 java.lang.reflect.Constructor.newInstance(Constructor.java:525)
 [rt.jar:1.7.0_05]  at
 org.jboss.as.weld.deployment.processors.WeldPortableExtensionProcessor.loadExtension(WeldPortableExtensionProcessor.java:117)
    at
 org.jboss.as.weld.deployment.processors.WeldPortableExtensionProcessor.loadAttachments(WeldPortableExtensionProcessor.java:100)
    at
 org.jboss.as.weld.deployment.processors.WeldPortableExtensionProcessor.deploy(WeldPortableExtensionProcessor.java:86)
    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

 12:31:38,522 INFO  [org.jboss.as.server] (DeploymentScanner-threads -
 2) JBAS015870: Deploy of deployment "mywar.war" was rolled back with
 failure message {"JBAS014671: Failed services" =>
 {"jboss.deployment.unit.\"mywar.war\".POST_MODULE" =>
 "org.jboss.msc.service.StartException in service
 jboss.deployment.unit.\"mywar.war\".POST_MODULE: Failed to process
 phase POST_MODULE of deployment \"mywar.war\""}} 12:31:38,647 INFO 
 [org.jboss.as.server.deployment] (MSC service thread 1-1) JBAS015877:
 Stopped deployment mywar.war in 115ms 12:31:38,647 INFO 
 [org.jboss.as.controller] (DeploymentScanner-threads - 2) JBAS014774:
 Service status report JBAS014775:    New missing/unsatisfied
 dependencies:
       service jboss.naming.context.java.module.mywar.mywar (missing) dependents: [service
 jboss.naming.context.java.module.mywar.mywar.ValidatorFactory, service
 jboss.naming.context.java.module.mywar.mywar.Validator]  JBAS014777:  
 Services which failed to start:      service
 jboss.deployment.unit."mywar.war".POST_MODULE:
 org.jboss.msc.service.StartException in service
 jboss.deployment.unit."mywar.war".POST_MODULE: Failed to process phase
 POST_MODULE of deployment "mywar.war"

 12:31:38,647 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.unit.\"mywar.war\".POST_MODULE" =>
 "org.jboss.msc.service.StartException in service
 jboss.deployment.unit.\"mywar.war\".POST_MODULE: Failed to process
 phase POST_MODULE of deployment \"mywar.war\""}}}}
Run Code Online (Sandbox Code Playgroud)

Old*_*Pro 7

Eclipse和插件有点挑剔.这就是我为了让它发挥作用所做的.

Project -> Properties -> Deployment Assembly
Add...
Java Build Path Entries (Next >)
Maven Dependencies (Finish)
Run Code Online (Sandbox Code Playgroud)

"部署属性"面板现在应包含Source:Maven Dependecies - > Deploy Path:WEB_INF/lib的条目


Sam*_*Rad 7

这是可疑的:

java.lang.NoSuchFieldError: FLOW
Run Code Online (Sandbox Code Playgroud)

如果我没弄错的话,这与JSF有关.我有一些建议,但我不是任何方面的专家.

首先尝试添加provided依赖范围为jsf-apijsf-impl这样的(因为JBoss已经它们):

<dependency>
    <groupId>com.sun.faces</groupId>
    <artifactId>jsf-api</artifactId>
    <version>2.2.0-m09</version>
    <scope>provided</scope>   // <----- do it for both
</dependency>
Run Code Online (Sandbox Code Playgroud)

AFAIK,JBoss 7.1.1已经有了JSF 2.1.7.所以,如果你真的需要JSF 2.2,你应该更新JBoss中的JSF模块.这是怎么做的Migration to JSF 2.2.

另一种选择是将JSF捆绑到WAR中,并通知JBoss排除容器版本(JBoss附带的版本):

web.xml中添加:

<context-param>
      <param-name>org.jboss.jbossfaces.WAR_BUNDLES_JSF_IMPL</param-name>
      <param-value>true</param-value>
</context-param>
Run Code Online (Sandbox Code Playgroud)

并在jboss-deployment-structure.xml中排除JBoss的实现:

<jboss-deployment-structure>
    <deployment>

        <exclusions>
            <module name="javax.faces.api" />
        </exclusions>
             .
             .
             .
Run Code Online (Sandbox Code Playgroud)