我正在迁移要使用 Maven 构建和部署的应用程序。它部署在 WebSphere 7 上。我已经设法让这个应用程序的一部分(HTML UI 等)工作正常,但是 Web 服务有问题。
当我尝试访问 Web 服务的 URL(例如localhost:9000/MyApplication/MyWebServiceProject/MyService
)时,我希望看到一个页面,上面写着“你好,这是一个 Web 服务!”。
相反,我看到了这个异常:
[4/1/13 11:49:37:484 EDT] 0000001d WASAxis2Servl E 尝试加载 servlet 的 ConfigurationContext 时遇到以下异常:com.ibm.ws.websvcs.exception.ConfigurationException:无法检索服务器模块Axis servlet 中模块的元数据:MyWebServiceProject com.ibm.ws.websvcs.exception.ConfigurationException:无法在 Axis servlet 中为模块检索服务器模块元数据:MyWebServiceProject 在 com.ibm.ws.websvcs.transport.http.WASAxis2Servlet.init(WASAxis2Servlet.java:290) 在 com.ibm.ws.webcontainer.servlet.ServletWrapper.init(ServletWrapper.java:358) 在 com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.init(ServletWrapperImpl.java:171) 在 com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:739) 在 com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:502) 在 com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:181) 在 com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3935) 在 com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:276) 在 com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:931) 在 com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1592) 在 com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:186) 在 com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:452) 在 com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:511) 在 com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:305) 在 com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:83) 在 com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165) 在 com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217) 在 com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161) 在 com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138) 在 com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204) 在 com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775) 在 com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905) 在 com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1613)
我猜想通过 Maven 部署 Web 服务需要一些特定于 IBM 的配置,但我不确定它是什么。
EAR 项目的 POM 中的相关部分:
<plugin>
<artifactId>maven-ear-plugin</artifactId>
<version>2.7</version>
<configuration>
<applicationName>PolicyGatewayEAR</applicationName>
<defaultLibBundleDir>lib/</defaultLibBundleDir>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>was6-maven-plugin</artifactId>
<version>1.2</version>
<executions>
<execution>
<phase>integration-test</phase>
<id>uninstall</id>
<goals>
<goal>wsUninstallApp</goal>
</goals>
<configuration>
<wasHome>${was7Home}</wasHome>
<verbose>false</verbose>
<failOnError>false</failOnError>
<profileName>was70profile1</profileName>
<workingDirectory>${project.build.directory}/was6-maven-plugin</workingDirectory>
<applicationName>MyApplication</applicationName>
</configuration>
</execution>
<execution>
<phase>integration-test</phase>
<id>installation</id>
<goals>
<goal>installApp</goal>
</goals>
<configuration>
<wasHome>${was7Home}</wasHome>
<verbose>false</verbose>
<failOnError>true</failOnError>
<updateExisting>false</updateExisting>
<profileName>was70profile1</profileName>
<workingDirectory>${project.build.directory}/was6-maven-plugin</workingDirectory>
<applicationName>MyApplication</applicationName>
</configuration>
</execution>
</executions>
</plugin>
Web 服务子项目的 POM 片段:
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.2</version>
<configuration>
<warSourceDirectory>WebContent</warSourceDirectory>
<failOnMissingWebXml>true</failOnMissingWebXml>
<warSourceDirectory>WebContent</warSourceDirectory>
<packagingExcludes>WEB-INF/lib/*.jar</packagingExcludes>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
</manifest>
</archive>
</configuration>
</plugin>
当我使用 RAD (v8.5) 部署到 WAS 时,这不是问题——它只是在我尝试使用 Maven 构建和部署应用程序后才开始的。有谁知道如何解决这个错误?