WebSphere Network Deployment 8.5.5.0的Axis2 1.6.2 Web服务问题

问题描述

我有一个基于 JSF + Richfaces的应用程序,该应用程序具有在JDK6上实现的 Axis2 1.6.2 SOAP Web服务。当我将其部署到Tomcat 6或7中时,该应用程序运行良好。但是,当我们在 WebSphere 8.5.5 Network Deployment 中部署它时,每次尝试启动该应用程序时,都会出现以下错误

[9/28/20 17:02:26:798 PKT] 00000040 WarBasedAxisC E org.apache.axis2.deployment.WarBasedAxisConfigurator <init> org.apache.commons.fileupload.FileUploadException
                                 org.apache.axis2.deployment.DeploymentException: org.apache.commons.fileupload.FileUploadException
    at org.apache.axis2.deployment.AxisConfigBuilder.processMessageBuilders(AxisConfigBuilder.java:774)
    at org.apache.axis2.deployment.AxisConfigBuilder.populateConfig(AxisConfigBuilder.java:234)
    at org.apache.axis2.deployment.DeploymentEngine.populateAxisConfiguration(DeploymentEngine.java:859)
    at org.apache.axis2.deployment.WarBasedAxisConfigurator.<init>(WarBasedAxisConfigurator.java:156)
    at org.apache.axis2.transport.http.AxisServlet.initConfigContext(AxisServlet.java:569)
    at org.apache.axis2.transport.http.AxisServlet.init(AxisServlet.java:457)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.init(ServletWrapper.java:338)
    at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.init(ServletWrapperImpl.java:168)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.loadOnStartupCheck(ServletWrapper.java:1363)
    at com.ibm.ws.webcontainer.webapp.WebApp.doLoadOnStartupActions(WebApp.java:606)
    at com.ibm.ws.webcontainer.webapp.WebApp.commonInitializationFinally(WebApp.java:576)
    at com.ibm.ws.webcontainer.webapp.WebAppImpl.initialize(WebAppImpl.java:425)
    at com.ibm.ws.webcontainer.webapp.WebGroupImpl.addWebApplication(WebGroupImpl.java:88)
    at com.ibm.ws.webcontainer.VirtualHostImpl.addWebApplication(VirtualHostImpl.java:169)
    at com.ibm.ws.webcontainer.WSWebContainer.addWebApp(WSWebContainer.java:749)
    at com.ibm.ws.webcontainer.WSWebContainer.addWebApplication(WSWebContainer.java:634)
    at com.ibm.ws.webcontainer.component.WebContainerImpl.install(WebContainerImpl.java:426)
    at com.ibm.ws.webcontainer.component.WebContainerImpl.start(WebContainerImpl.java:718)
    at com.ibm.ws.runtime.component.ApplicationMgrImpl.start(ApplicationMgrImpl.java:1175)
    at com.ibm.ws.runtime.component.DeployedApplicationImpl.fireDeployedobjectStart(DeployedApplicationImpl.java:1370)
    at com.ibm.ws.runtime.component.DeployedModuleImpl.start(DeployedModuleImpl.java:639)
    at com.ibm.ws.runtime.component.DeployedApplicationImpl.start(DeployedApplicationImpl.java:968)
    at com.ibm.ws.runtime.component.ApplicationMgrImpl.startApplication(ApplicationMgrImpl.java:774)
    at com.ibm.ws.runtime.component.ApplicationMgrImpl.start(ApplicationMgrImpl.java:2182)
    at com.ibm.ws.runtime.component.CompositionUnitMgrImpl.start(CompositionUnitMgrImpl.java:445)
    at com.ibm.ws.runtime.component.CompositionUnitImpl.start(CompositionUnitImpl.java:123)
    at com.ibm.ws.runtime.component.CompositionUnitMgrImpl.start(CompositionUnitMgrImpl.java:388)
    at com.ibm.ws.runtime.component.CompositionUnitMgrImpl.access$500(CompositionUnitMgrImpl.java:116)
    at com.ibm.ws.runtime.component.CompositionUnitMgrImpl$CUInitializer.run(CompositionUnitMgrImpl.java:994)
    at com.ibm.wsspi.runtime.component.WsComponentImpl$_AsynchInitializer.run(WsComponentImpl.java:502)
    at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1862)
Caused by: java.lang.NoClassDefFoundError: org.apache.commons.fileupload.FileUploadException
    at java.lang.J9VMInternals.verifyImpl(Native Method)
    at java.lang.J9VMInternals.verify(J9VMInternals.java:93)
    at java.lang.J9VMInternals.initialize(J9VMInternals.java:170)
    at java.lang.J9VMInternals.newInstanceImpl(Native Method)
    at java.lang.class.newInstance(Class.java:1564)
    at org.apache.axis2.deployment.DescriptionBuilder.processMessageBuilders(DescriptionBuilder.java:230)
    at org.apache.axis2.deployment.AxisConfigBuilder.processMessageBuilders(AxisConfigBuilder.java:771)
    ... 30 more
Caused by: java.lang.classNotFoundException: org.apache.commons.fileupload.FileUploadException
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:506)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:422)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410)
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
    at java.lang.classLoader.loadClass(ClassLoader.java:650)
    ... 37 more

[9/28/20 17:02:26:811 PKT] 00000040 AxisServlet   I org.apache.axis2.util.ondemandLogger info org.apache.axis2.deployment.DeploymentException: org.apache.commons.fileupload.FileUploadException
[9/28/20 17:02:26:896 PKT] 00000040 FfdcProvider  W com.ibm.ws.ffdc.impl.FfdcProvider logIncident FFDC1003I: FFDC Incident emitted on D:\Program Files (x86)\IBM\WebSphere\AppServer\profiles\AppSrv01\logs\ffdc\server1_ad76d55e_20.09.28_17.02.26.838698289724018241690.txt com.ibm.ws.webcontainer.servlet.ServletInstance.init 172
[9/28/20 17:02:26:906 PKT] 00000040 ServletWrappe E com.ibm.ws.webcontainer.servlet.ServletWrapper init Uncaught.init.exception.thrown.by.servlet
[9/28/20 17:02:26:908 PKT] 00000040 webapp        E com.ibm.ws.webcontainer.webapp.WebApp commonInitializationFinally SRVE0266E: Error occured while initializing servlets: {0}
                                 javax.servlet.servletexception: javax.servlet.servletexception: org.apache.axis2.deployment.DeploymentException: org.apache.commons.fileupload.FileUploadException
    at org.apache.axis2.transport.http.AxisServlet.init(AxisServlet.java:490)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.init(ServletWrapper.java:338)
    at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.init(ServletWrapperImpl.java:168)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.loadOnStartupCheck(ServletWrapper.java:1363)
    at com.ibm.ws.webcontainer.webapp.WebApp.doLoadOnStartupActions(WebApp.java:606)
    at com.ibm.ws.webcontainer.webapp.WebApp.commonInitializationFinally(WebApp.java:576)
    at com.ibm.ws.webcontainer.webapp.WebAppImpl.initialize(WebAppImpl.java:425)
    at com.ibm.ws.webcontainer.webapp.WebGroupImpl.addWebApplication(WebGroupImpl.java:88)
    at com.ibm.ws.webcontainer.VirtualHostImpl.addWebApplication(VirtualHostImpl.java:169)
    at com.ibm.ws.webcontainer.WSWebContainer.addWebApp(WSWebContainer.java:749)
    at com.ibm.ws.webcontainer.WSWebContainer.addWebApplication(WSWebContainer.java:634)
    at com.ibm.ws.webcontainer.component.WebContainerImpl.install(WebContainerImpl.java:426)
    at com.ibm.ws.webcontainer.component.WebContainerImpl.start(WebContainerImpl.java:718)
    at com.ibm.ws.runtime.component.ApplicationMgrImpl.start(ApplicationMgrImpl.java:1175)
    at com.ibm.ws.runtime.component.DeployedApplicationImpl.fireDeployedobjectStart(DeployedApplicationImpl.java:1370)
    at com.ibm.ws.runtime.component.DeployedModuleImpl.start(DeployedModuleImpl.java:639)
    at com.ibm.ws.runtime.component.DeployedApplicationImpl.start(DeployedApplicationImpl.java:968)
    at com.ibm.ws.runtime.component.ApplicationMgrImpl.startApplication(ApplicationMgrImpl.java:774)
    at com.ibm.ws.runtime.component.ApplicationMgrImpl.start(ApplicationMgrImpl.java:2182)
    at com.ibm.ws.runtime.component.CompositionUnitMgrImpl.start(CompositionUnitMgrImpl.java:445)
    at com.ibm.ws.runtime.component.CompositionUnitImpl.start(CompositionUnitImpl.java:123)
    at com.ibm.ws.runtime.component.CompositionUnitMgrImpl.start(CompositionUnitMgrImpl.java:388)
    at com.ibm.ws.runtime.component.CompositionUnitMgrImpl.access$500(CompositionUnitMgrImpl.java:116)
    at com.ibm.ws.runtime.component.CompositionUnitMgrImpl$CUInitializer.run(CompositionUnitMgrImpl.java:994)
    at com.ibm.wsspi.runtime.component.WsComponentImpl$_AsynchInitializer.run(WsComponentImpl.java:502)
    at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1862)
Caused by: javax.servlet.servletexception: org.apache.axis2.deployment.DeploymentException: org.apache.commons.fileupload.FileUploadException
    at org.apache.axis2.transport.http.AxisServlet.initConfigContext(AxisServlet.java:576)
    at org.apache.axis2.transport.http.AxisServlet.init(AxisServlet.java:457)
    ... 25 more
Caused by: org.apache.axis2.deployment.DeploymentException: org.apache.commons.fileupload.FileUploadException
    at org.apache.axis2.deployment.AxisConfigBuilder.processMessageBuilders(AxisConfigBuilder.java:774)
    at org.apache.axis2.deployment.AxisConfigBuilder.populateConfig(AxisConfigBuilder.java:234)
    at org.apache.axis2.deployment.DeploymentEngine.populateAxisConfiguration(DeploymentEngine.java:859)
    at org.apache.axis2.deployment.WarBasedAxisConfigurator.<init>(WarBasedAxisConfigurator.java:156)
    at org.apache.axis2.transport.http.AxisServlet.initConfigContext(AxisServlet.java:569)
    ... 26 more
Caused by: java.lang.NoClassDefFoundError: org.apache.commons.fileupload.FileUploadException
    at java.lang.J9VMInternals.verifyImpl(Native Method)
    at java.lang.J9VMInternals.verify(J9VMInternals.java:93)
    at java.lang.J9VMInternals.initialize(J9VMInternals.java:170)
    at java.lang.J9VMInternals.newInstanceImpl(Native Method)
    at java.lang.class.newInstance(Class.java:1564)
    at org.apache.axis2.deployment.DescriptionBuilder.processMessageBuilders(DescriptionBuilder.java:230)
    at org.apache.axis2.deployment.AxisConfigBuilder.processMessageBuilders(AxisConfigBuilder.java:771)
    ... 30 more
Caused by: java.lang.classNotFoundException: org.apache.commons.fileupload.FileUploadException
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:506)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:422)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410)
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
    at java.lang.classLoader.loadClass(ClassLoader.java:650)
    ... 37 more

我对此问题进行了非常详细的研究,发现Websphere具有自己的Axis库,并且为了对此进行扩展,应该将Class loader配置为Last。我还尝试按照url中给出的步骤部署示例Axis2 1.6.2应用程序,以确保Axis2 1.6.2可以正常工作: http://manishcusat68.blogspot.com/2015/08/axis2-installation-in-websphere.html

示例应用程序已部署,我能够看到wsdl文件。 我在我的应用程序中使用了相同版本的axis2,即1.6.2,但我总是遇到上述异常,并且应用程序从未启动。 我已经搜索了每个论坛,尝试了在IBM Websphere网站/ stackoverflow上找到的每个步骤,但是我找不到任何解决方案。 我尝试通过将commons-fileupload jar放在lib / ext中,但是没有用。 我试图在系统环境路径中添加commom-fileupload jar补丁,但它也不起作用。 我还尝试按照许多论坛中的建议从IBM安装/插件文件夹中删除jar,并将commons-fileupload jar放入我的应用程序/库中,但Websphere并未启动。 我非常需要该解决方案,并请任何专家帮助。

解决方法

有一个JVM属性可以禁用WAS内置的JAXWS引擎。它不是完美的,但是如果您还没有的话,值得一试。 https://www.ibm.com/support/knowledgecenter/SSAW57_9.0.5/com.ibm.websphere.nd.multiplatform.doc/ae/twbs_thirdparty.html