我们使用axis2部署了一些web服务,这些服务是在使用RAD 7.5.0创建的EAR项目上实现的.EAR部署在Websphere Application Server 7.0应用服务器上。我们在服务器上创建了一个共享库,其中包括所有使用的常用jar(包括commons-fileupload-1.2.jar),名为CommonsJar。在我们使用Tomcat Server 6.X.X的单元测试中(仅部署WAR而不是整个EAR),应用程序具有良好的功能
当应用程序部署在WAS 7上时出现问题:当我们实现Web服务客户端的存根类时,我们的Java EE客户端WAS提供以下例外:
[4/26/12 20:35:31:742 CDT] 00000026 SystemErr R org.apache.axis2.deployment.DeploymentException: org.apache.commons.fileupload.FileUploadException
[4/26/12 20:35:31:743 CDT] 00000026 SystemErr R at org.apache.axis2.deployment.AxisConfigBuilder.processMessageBuilders(AxisConfigBuilder.java:741)
[4/26/12 20:35:31:743 CDT] 00000026 SystemErr R at org.apache.axis2.deployment.AxisConfigBuilder.populateConfig(AxisConfigBuilder.java:202)
[4/26/12 20:35:31:743 CDT] 00000026 SystemErr R at org.apache.axis2.deployment.DeploymentEngine.populateAxisConfiguration(DeploymentEngine.java:641)
[4/26/12 20:35:31:744 CDT] 00000026 SystemErr R at org.apache.axis2.deployment.FileSystemConfigurator.getAxisConfiguration(FileSystemConfigurator.java:116)
[4/26/12 20:35:31:744 CDT] 00000026 SystemErr R at org.apache.axis2.context.ConfigurationContextFactory.createConfigurationContext(ConfigurationContextFactory.java:68)
[4/26/12 20:35:31:744 CDT] 00000026 SystemErr R at org.apache.axis2.context.ConfigurationContextFactory.createConfigurationContextFromFileSystem(ConfigurationContextFactory.java:184)
[4/26/12 20:35:31:744 CDT] 00000026 SystemErr R at com.mx.ing.wm.portal.dao.RestableceUsuarioPortalDAO.<init>(RestableceUsuarioPortalDAO.java:57)
[4/26/12 20:35:31:744 CDT] 00000026 SystemErr R at com.mx.ing.wm.portal.blogic.RestableceUsuarioPortalFacade.consultaUsuarioRestablecer(RestableceUsuarioPortalFacade.java:16)
[4/26/12 20:35:31:744 CDT] 00000026 SystemErr R at com.mx.ing.wm.portal.actions.RestableceUsuarioPortalAction.consultaUsuarioRestablecer(RestableceUsuarioPortalAction.java:188)
[4/26/12 20:35:31:744 CDT] 00000026 SystemErr R at com.mx.ing.wm.portal.actions.RestableceUsuarioPortalAction.execute(RestableceUsuarioPortalAction.java:128)
[4/26/12 20:35:31:744 CDT] 00000026 SystemErr R at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
[4/26/12 20:35:31:744 CDT] 00000026 SystemErr R at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
[4/26/12 20:35:31:744 CDT] 00000026 SystemErr R at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
[4/26/12 20:35:31:744 CDT] 00000026 SystemErr R at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191)
[4/26/12 20:35:31:744 CDT] 00000026 SystemErr R at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:305)
[4/26/12 20:35:31:745 CDT] 00000026 SystemErr R at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191)
[4/26/12 20:35:31:745 CDT] 00000026 SystemErr R at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
[4/26/12 20:35:31:745 CDT] 00000026 SystemErr R at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
[4/26/12 20:35:31:745 CDT] 00000026 SystemErr R at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
[4/26/12 20:35:31:745 CDT] 00000026 SystemErr R at javax.servlet.http.HttpServlet.service(HttpServlet.java:738)
[4/26/12 20:35:31:745 CDT] 00000026 SystemErr R at javax.servlet.http.HttpServlet.service(HttpServlet.java:831)
[4/26/12 20:35:31:745 CDT] 00000026 SystemErr R at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1657)
[4/26/12 20:35:31:745 CDT] 00000026 SystemErr R at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:939)
[4/26/12 20:35:31:745 CDT] 00000026 SystemErr R at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:502)
[4/26/12 20:35:31:745 CDT] 00000026 SystemErr R at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:179)
[4/26/12 20:35:31:745 CDT] 00000026 SystemErr R at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:91)
[4/26/12 20:35:31:745 CDT] 00000026 SystemErr R at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:864)
[4/26/12 20:35:31:746 CDT] 00000026 SystemErr R at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1592)
[4/26/12 20:35:31:746 CDT] 00000026 SystemErr R at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:186)
[4/26/12 20:35:31:746 CDT] 00000026 SystemErr R at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:452)
[4/26/12 20:35:31:746 CDT] 00000026 SystemErr R at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:511)
[4/26/12 20:35:31:746 CDT] 00000026 SystemErr R at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:305)
[4/26/12 20:35:31:746 CDT] 00000026 SystemErr R at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:83)
[4/26/12 20:35:31:746 CDT] 00000026 SystemErr R at com.ibm.ws.ssl.channel.impl.SSLReadServiceContext$SSLReadCompletedCallback.complete(SSLReadServiceContext.java:1784)
[4/26/12 20:35:31:746 CDT] 00000026 SystemErr R at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
[4/26/12 20:35:31:746 CDT] 00000026 SystemErr R at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
[4/26/12 20:35:31:746 CDT] 00000026 SystemErr R at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
[4/26/12 20:35:31:746 CDT] 00000026 SystemErr R at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
[4/26/12 20:35:31:747 CDT] 00000026 SystemErr R at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
[4/26/12 20:35:31:747 CDT] 00000026 SystemErr R at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)
[4/26/12 20:35:31:747 CDT] 00000026 SystemErr R at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)
[4/26/12 20:35:31:747 CDT] 00000026 SystemErr R at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1604)
[4/26/12 20:35:31:747 CDT] 00000026 SystemErr R Caused by: java.lang.NoClassDefFoundError: org.apache.commons.fileupload.FileUploadException
[4/26/12 20:35:31:748 CDT] 00000026 SystemErr R at java.lang.J9VMInternals.verifyImpl(Native Method)
[4/26/12 20:35:31:748 CDT] 00000026 SystemErr R at java.lang.J9VMInternals.verify(J9VMInternals.java:72)
[4/26/12 20:35:31:748 CDT] 00000026 SystemErr R at java.lang.J9VMInternals.initialize(J9VMInternals.java:134)
[4/26/12 20:35:31:748 CDT] 00000026 SystemErr R at java.lang.J9VMInternals.newInstanceImpl(Native Method)
[4/26/12 20:35:31:748 CDT] 00000026 SystemErr R at java.lang.Class.newInstance(Class.java:1345)
[4/26/12 20:35:31:748 CDT] 00000026 SystemErr R at org.apache.axis2.deployment.DescriptionBuilder.processMessageBuilders(DescriptionBuilder.java:230)
[4/26/12 20:35:31:748 CDT] 00000026 SystemErr R at org.apache.axis2.deployment.AxisConfigBuilder.processMessageBuilders(AxisConfigBuilder.java:738)
[4/26/12 20:35:31:748 CDT] 00000026 SystemErr R ... 41 more
[4/26/12 20:35:31:748 CDT] 00000026 SystemErr R Caused by: java.lang.ClassNotFoundException: org.apache.commons.fileupload.FileUploadException
[4/26/12 20:35:31:749 CDT] 00000026 SystemErr R at java.lang.ClassNotFoundException.<init>(ClassNotFoundException.java:76)
[4/26/12 20:35:31:749 CDT] 00000026 SystemErr R at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:351)
[4/26/12 20:35:31:749 CDT] 00000026 SystemErr R at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:347)
[4/26/12 20:35:31:749 CDT] 00000026 SystemErr R at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:83)
[4/26/12 20:35:31:750 CDT] 00000026 SystemErr R at java.lang.ClassLoader.loadClass(ClassLoader.java:619)
[4/26/12 20:35:31:750 CDT] 00000026 SystemErr R ... 48 more
我们的deployment.xml文件的配置如下所示:
<?xml version="1.0" encoding="UTF-8"?> <appdeployment:Deployment xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:appdeployment="http://www.ibm.com/websphere/appserver/schemas/5.0/appdeployment.xmi" xmi:id="Deployment_1335376658663"> <deployedObject xmi:type="appdeployment:ApplicationDeployment" xmi:id="ApplicationDeployment_1335376658663" startingWeight="10" warClassLoaderPolicy="SINGLE">
<modules xmi:type="appdeployment:WebModuleDeployment" xmi:id="WebModuleDeployment_1335376658663" startingWeight="10000" uri="CallCenterWMWeb.war"/>
<modules xmi:type="appdeployment:WebModuleDeployment" xmi:id="WebModuleDeployment_1335376658664" startingWeight="10000" uri="OperacionesWMWeb.war"/>
<classloader xmi:id="Classloader_1335376658663" mode="PARENT_LAST">
<libraries xmi:id="LibraryRef_1335376658663" libraryName="CommonsJar"/>
</classloader> </deployedObject> </appdeployment:Deployment>
服务器上的JVM变量的配置如下:
-Xquickstart -Xlp -Dclient.encoding.override=UTF-8 -agentlib:getClasses
有什么问题可以解决?谢谢你的建议
答案 0 :(得分:3)
查看这篇文章:
http://axis.apache.org/axis2/java/core/docs/app_server.html
查找WebSphere部分,可能您必须编辑axis2.xml配置并将参数EnableChildFirstClassLoading更改为“true”
答案 1 :(得分:1)
PARENT_LAST似乎只适用于您的部署XML的CommonsJar,尝试从管理控制台UI或使用此处提到的脚本 - Can I set the classloader policy for WebSphere in the ibm-web-bnd.xmi file?为所有Web应用启用它(请参阅部署示例。 xml也在那里查看)