我的应用程序有四个小项目:
- build-project - 只有根 POM
- ear-module - 这是包含 Web 项目的应用程序 ear 项目
- web-project - 这是网络应用程序
- 实用程序项目 - Web 项目将此作为依赖项,并且此 jar 包含为 jar 无 EJB。
我正在使用 RAD 8,当我选择使用Run server with resources on Server
RAD8 中的 Websphere“发布设置”运行应用程序时,部署工作正常。
但是,当我尝试对“使用工作区中的资源运行服务器”执行相同操作并在我的浏览器中打开应用程序时,它会失败并显示以下错误消息:
[6/1/13 1:44:04:678 EDT] 0000001c annotations W com.ibm.ws.amm.scan.context.ScannerContextImpl getInputDataForClass Failed to open resource [ org/springframework/web/context/ContextLoaderListener.class ] from module [ abc-web.war ]
[6/1/13 1:44:04:678 EDT] 0000001c annotations W com.ibm.ws.amm.scan.context.ScannerContextImpl getInputDataForClass Class loader [ org.eclipse.jst.j2ee.commonarchivecore.internal.util.WarFileDynamicClassLoader@64662b13 ]
[6/1/13 1:44:04:678 EDT] 0000001c annotations W com.ibm.ws.amm.scan.context.ScannerContextImpl getInputDataForClass Class loader [ com.ibm.ws.bootstrap.ExtClassLoader@d64e7229 ]
[6/1/13 1:44:04:678 EDT] 0000001c annotations W com.ibm.ws.amm.scan.context.ScannerContextImpl getInputDataForClass Class loader [ org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader@e9f56141 ]
[6/1/13 1:44:04:678 EDT] 0000001c annotations W com.ibm.ws.amm.scan.context.ScannerContextImpl getInputDataForClass Class loader [ sun.misc.Launcher$AppClassLoader@964626a4 ]
[6/1/13 1:44:04:678 EDT] 0000001c annotations W com.ibm.ws.amm.scan.context.ScannerContextImpl getInputDataForClass Class loader [ sun.misc.Launcher$ExtClassLoader@ad8046ad ]
[6/1/13 1:44:14:724 EDT] 0000001f ApplicationMg A WSVR0220I: Application stopped: myapp-ear
[6/1/13 1:44:14:896 EDT] 0000001f CompositionUn A WSVR0193I: Composition unit WebSphere:cuname=myapp-ear in BLA WebSphere:blaname=myapp-ear stopped.
[6/1/13 1:44:36:470 EDT] 0000001f annotation W com.ibm.ws.webcontainer.annotation.WASAnnotationHelper collectClasses SRVE8000W: Skipped class that failed to initialize for annotation scanning.
java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
at java.lang.Class.forNameImpl(Native Method)
at java.lang.Class.forName(Class.java:213)
at com.ibm.ws.webcontainer.annotation.WASAnnotationHelper.loadClass(WASAnnotationHelper.java:753)
at com.ibm.ws.webcontainer.annotation.WASAnnotationHelper.collectClasses(WASAnnotationHelper.java:188)
at com.ibm.ws.webcontainer.annotation.WASAnnotationHelper.<init>(WASAnnotationHelper.java:143)
at com.ibm.ws.webcontainer.annotation.WASAnnotationHelperManager.getAnnotationHelper(WASAnnotationHelperManager.java:63)
at com.ibm.ws.webcontainer.metadata.WebMetaDataFactory.handOffReferenceData(WebMetaDataFactory.java:450)
at com.ibm.ws.webcontainer.metadata.WebMetaDataFactory.createMetaData(WebMetaDataFactory.java:423)
at com.ibm.ws.runtime.component.MetaDataMgrImpl.createMetaDataFromFactories(MetaDataMgrImpl.java:228)
at com.ibm.ws.runtime.component.MetaDataMgrImpl.createMetaData(MetaDataMgrImpl.java:411)
at com.ibm.ws.runtime.component.DeployedModuleImpl.start(DeployedModuleImpl.java:630)
at com.ibm.ws.runtime.component.DeployedApplicationImpl.start(DeployedApplicationImpl.java:967)
at com.ibm.ws.runtime.component.ApplicationMgrImpl.startApplication(ApplicationMgrImpl.java:766)
at com.ibm.ws.runtime.component.ApplicationMgrImpl.startApplicationDynamically(ApplicationMgrImpl.java:1354)
at com.ibm.ws.runtime.component.ApplicationMgrImpl.start(ApplicationMgrImpl.java:2150)
at com.ibm.ws.runtime.component.CompositionUnitMgrImpl.start(CompositionUnitMgrImpl.java:445)
这是构建项目的maven pom(根项目只是为了构建)
<groupId>com.mytest</groupId>
<artifactId>myapp</artifactId>
<version>2.0.0</version>
<packaging>pom</packaging>
<name>myapp</name>
<properties>
<project.build.source>1.6</project.build.source>
<project.build.target>1.6</project.build.target>
<project.encoding>UTF-8</project.encoding>
<springVersion>3.2.1.RELEASE</springVersion>
</properties>
<modules>
<module>../myapp-domain</module>
<module>../myapp-web</module>
<module>../myapp-ear</module>
</modules>
<dependencyManagement>
<dependencies>
<!-- external dependencies -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${springVersion}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${springVersion}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>opensymphony</groupId>
<artifactId>oscache</artifactId>
<version>2.4</version>
<exclusions>
<exclusion>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
</exclusion>
</exclusions>
</dependency>
....... other dependencies .......
<!-- test dependencies -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>${project.build.source}</source>
<target>${project.build.target}</target>
<encoding>${project.encoding}</encoding>
<showDeprecation>true</showDeprecation>
<showWarnings>true</showWarnings>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.4</version>
<configuration>
<encoding>${project.encoding}</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.10</version>
<configuration>
<disableXmlReport>true</disableXmlReport>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>2.0-beta-6</version>
</plugin>
这是耳朵项目的maven pom
<parent>
<groupId>com.mytest</groupId>
<artifactId>myapp</artifactId>
<version>2.0.0</version>
</parent>
<artifactId>myapp-ear</artifactId>
<packaging>ear</packaging>
<name>MyappEAR</name>
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>myapp-web</artifactId>
<type>war</type>
<version>2.0.0</version>
</dependency>
</dependencies>
<build>
<finalName>myapp</finalName>
<resources>
<resource>
<directory>META-INF</directory>
<targetPath>../myapp/META-INF</targetPath>
<includes>
<include>**/*.*</include>
</includes>
</resource>
</resources>
<plugins>
<plugin>
<artifactId>maven-ear-plugin</artifactId>
<version>2.7</version>
<configuration>
<applicationXml>${basedir}/META-INF/application.xml</applicationXml>
<generateApplicationXml>false</generateApplicationXml>
<modules>
<webModule>
<groupId>${project.groupId}</groupId>
<artifactId>myapp-web</artifactId>
<bundleFileName>myapp-web.war</bundleFileName>
</webModule>
</modules>
<encoding>${project.encoding}</encoding>
</configuration>
</plugin>
</plugins>
</build>
<properties>
<maven.ear.final.name>myapp.ear</maven.ear.final.name>
</properties>
==================================================== ==================================================这里是Web 项目 POM
<artifactId>myapp-web</artifactId>
<packaging>war</packaging>
<name>myappWeb</name>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${springVersion}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${springVersion}</version>
</dependency>
<build>
<finalName>myapp-web</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.0.2</version>
<configuration>
<warSourceDirectory>src/main/webapp</warSourceDirectory>
<webXml>src/main/webapp/WEB-INF/web.xml</webXml>
<archive>
<manifest>
<addClasspath>true</addClasspath>
</manifest>
</archive>
</configuration>
</plugin>
奇怪的是,当我尝试通过右键单击服务器在 Websphere 8 的添加和删除选项中添加耳朵时,我看到生成的耳朵具有这样的结构。所以它在同一场战争中有两场战争。但我查看了构建的 myapp.ear 文件,其中只有一场战争。
myappear
|-myapp-web
| |-Spring-web-3.2.1RELEASE.jar
| |-myapp-domain jar
|
|-myapp-web.war