打印

WAS部署应用后,类加载问题

WAS部署应用后,类加载问题

框架:spring+struts2+ibatis+axis2
能成功运行的环境:weblogic11G,tomcat6,jdk:1.7.0_25
运行不成功的环境:was8.0.0.5 linux  suse 64bit
在WAS中安装程序的大致步骤:WebSphere 企业应用程序》安装》选择本地安装文件war包路径》详细 - 显示所有的安装选项和参数》一直下一步直到 映射共享库配置自己设置的jar包共享库》配置上下文根路径》完成 安装提示成功


启动报错信息:
复制内容到剪贴板
代码:
[13-12-19 10:33:09:327 UTC] 0000000d ApplicationMg A   WSVR0221I: 应用程序已启动:DefaultApplication
[13-12-19 10:33:09:328 UTC] 0000000d CompositionUn A   WSVR0191I: 已启动 BLA WebSphere:blaname=DefaultApplication 中的组合单元 WebSphere:cuname=DefaultApplication。
[13-12-19 10:33:09:414 UTC] 0000000c webapp        I com.ibm.ws.webcontainer.webapp.WebGroupImpl WebGroup SRVE0169I: 正在装入 Web 模块:ptds。
[13-12-19 10:33:09:427 UTC] 0000000d CompositionUn A   WSVR0190I: 正在启动 BLA WebSphere:blaname=ivtApp 中的组合单元 WebSphere:cuname=ivtApp。
[13-12-19 10:33:09:423 UTC] 0000000c AbstractInjec W   CWNEN0070W: 将不识别 javax.xml.ws.WebServiceRef 注释类,因为该类是从位置 file:/opt/IBM/ptdsLib/geronimo-jaxws_2.2_spec-1.0.jar 而不是从产品类装入器装入的。
[13-12-19 10:33:09:433 UTC] 0000000c AbstractInjec W   CWNEN0070W: 将不识别 javax.annotation.Resource 注释类,因为该类是从位置 file:/opt/IBM/ptdsLib/geronimo-annotation_1.0_spec-1.1.jar 而不是从产品类装入器装入的。
[13-12-19 10:33:09:572 UTC] 0000000d ApplicationMg A   WSVR0200I: 正在启动应用程序:ivtApp
[13-12-19 10:33:09:583 UTC] 0000000d ApplicationMg A   WSVR0203I: 应用程序:ivtApp,应用程序构建级别:WASX.SERV1 [qq0723.30]
[13-12-19 10:33:09:709 UTC] 0000000d AbstractEJBRu I   WSVR0037I: 正在启动 EJB JAR:ivtEJB.jar
[13-12-19 10:33:09:718 UTC] 0000000d EJBContainerI I   CNTR0167I: 服务器正在绑定 ivtApp 应用程序 ivtEJB.jar 模块中的 ivtEJBObject 企业 bean 的 com.ibm.websphere.ivt.ivtEJB.ivtEJBHome 接口。绑定位置为:ejb/ivtEJBObject
[13-12-19 10:33:09:729 UTC] 0000000d AbstractEJBRu I   CNTR0167I: 服务器正在绑定 ivtApp 应用程序 ivtEJB.jar 模块中的 ivtEJBObject 企业 bean 的 com.ibm.websphere.ivt.ivtEJB.ivtEJBHome 接口。绑定位置为:java:global/ivtApp/ivtEJB/ivtEJBObject!com.ibm.websphere.ivt.ivtEJB.ivtEJBHome
[13-12-19 10:33:09:752 UTC] 0000000d AbstractEJBRu I   WSVR0057I: EJB JAR 已启动:ivtEJB.jar
[13-12-19 10:33:09:845 UTC] 0000000c WASSessionCor I SessionContextRegistry getSessionContext SESN0176I: 将为应用程序键 default_host/ptds 创建新的会话上下文
[13-12-19 10:33:11:225 UTC] 0000000c FfdcProvider  W com.ibm.ws.ffdc.impl.FfdcProvider logIncident FFDC1003I: 已在 /opt/IBM/WebSphere/Profiles/AppSrv01/logs/ffdc/server1_c5c03b20_13.12.19_10.33.11.162772757627173334566.txt com.ibm.ws.webcontainer.webapp.WebAppServletManager.loadServlet 213 发出 FFDC 事件。
[13-12-19 10:33:11:228 UTC] 0000000c webapp        E com.ibm.ws.webcontainer.webapp.WebApp commonInitializationFinally SRVE0266E: 初始化 servlet 时出错:{0}
                                 javax.servlet.UnavailableException: SRVE0201E: Servlet [org.apache.axis2.transport.http.AxisServlet]:不是 servlet 类
        at com.ibm.ws.webcontainer.servlet.ServletWrapper$1.run(ServletWrapper.java:1486)
        at com.ibm.ws.security.util.AccessController.doPrivileged(AccessController.java:118)
        at com.ibm.ws.webcontainer.servlet.ServletWrapper.loadServlet(ServletWrapper.java:1460)
        at com.ibm.ws.webcontainer.servlet.ServletWrapper.loadOnStartupCheck(ServletWrapper.java:1339)
        at com.ibm.ws.webcontainer.webapp.WebApp.doLoadOnStartupActions(WebApp.java:609)
        at com.ibm.ws.webcontainer.webapp.WebApp.commonInitializationFinally(WebApp.java:578)
        at com.ibm.ws.webcontainer.webapp.WebAppImpl.initialize(WebAppImpl.java:421)
        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:422)
        at com.ibm.ws.webcontainer.component.WebContainerImpl.start(WebContainerImpl.java:714)
        at com.ibm.ws.runtime.component.ApplicationMgrImpl.start(ApplicationMgrImpl.java:1160)

[13-12-19 10:33:11:162 UTC]     FFDC Exception:java.lang.ClassCastException SourceId:com.ibm.ws.webcontainer.webapp.WebAppServletManager.loadServlet ProbeId:213 Reporter:com.ibm.ws.webcontainer.servlet.ServletWrapper$1@dbe2dc45
java.lang.ClassCastException: org.apache.axis2.transport.http.AxisServlet incompatible with javax.servlet.Servlet
        at com.ibm.ws.webcontainer.servlet.ServletWrapper$1.run(ServletWrapper.java:1471)
        at com.ibm.ws.security.util.AccessController.doPrivileged(AccessController.java:118)
        at com.ibm.ws.webcontainer.servlet.ServletWrapper.loadServlet(ServletWrapper.java:1460)
        at com.ibm.ws.webcontainer.servlet.ServletWrapper.loadOnStartupCheck(ServletWrapper.java:1339)
        at com.ibm.ws.webcontainer.webapp.WebApp.doLoadOnStartupActions(WebApp.java:609)
        at com.ibm.ws.webcontainer.webapp.WebApp.commonInitializationFinally(WebApp.java:578)
        at com.ibm.ws.webcontainer.webapp.WebAppImpl.initialize(WebAppImpl.java:421)
        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:422)
        at com.ibm.ws.webcontainer.component.WebContainerImpl.start(WebContainerImpl.java:714)
        at com.ibm.ws.runtime.component.ApplicationMgrImpl.start(ApplicationMgrImpl.java:1160)
        at com.ibm.ws.runtime.component.DeployedApplicationImpl.fireDeployedObjectStart(DeployedApplicationImpl.java:1369)
        at com.ibm.ws.runtime.component.DeployedModuleImpl.start(DeployedModuleImpl.java:639)
        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.start(ApplicationMgrImpl.java:2153)
        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:349)
        at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1690)

Reporter BEGIN:com.ibm.ws.webcontainer.servlet.ServletWrapper$1@dbe2dc45
com.ibm.ws.webcontainer.servlet.ServletWrapper$1::val$className:org.apache.axis2.transport.http.AxisServlet
com.ibm.ws.webcontainer.servlet.ServletWrapper$1::val$servletClass:null
com.ibm.ws.webcontainer.servlet.ServletWrapper$1::val$loader BEGIN:com.ibm.ws.classloader.CompoundClassLoader@410c67
java.lang.ClassLoader::defaultCodeSource BEGIN:java.security.CodeSource@925c92b
  java.security.CodeSource::serialVersionUID:4977541819976013951
  java.security.CodeSource::location:null
  java.security.CodeSource::certs:null
  java.security.CodeSource::signers:null
  java.security.CodeSource::sp:null
  java.security.CodeSource::factory:null
  java.security.CodeSource::translated:false
  END:java.security.CodeSource@925c92b

java.lang.ClassLoader::bootstrapClassLoader BEGIN:com.ibm.oti.vm.BootstrapClassLoader@c7e64c40
  java.lang.ClassLoader::defaultCodeSource:java.security.CodeSource@925c92b
  java.lang.ClassLoader::bootstrapClassLoader:com.ibm.oti.vm.BootstrapClassLoader@c7e64c40
访问页面时,页面提示500,找不到相关的过滤器或Action,WAS的报错信息:
复制内容到剪贴板
代码:
[13-12-19 14:53:23:528 UTC] 0000001f webapp        E com.ibm.ws.webcontainer.webapp.WebApp logServletError SRVE0293E: [Servlet 错误]-[com.ibm.ws.webcontainer.extension.DefaultExtensionProcessor]: java.lang.ClassCastException: org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter incompatible with javax.servlet.Filter
        at com.ibm.ws.webcontainer.filter.WebAppFilterManager._loadFilter(WebAppFilterManager.java:533)
        at com.ibm.ws.webcontainer.filter.WebAppFilterManager.loadFilter(WebAppFilterManager.java:475)
        at com.ibm.ws.webcontainer.filter.WebAppFilterManager.getFilterInstanceWrapper(WebAppFilterManager.java:308)
        at com.ibm.ws.webcontainer.filter.WebAppFilterManager.getFilterChain(WebAppFilterManager.java:380)
        at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:892)
        at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1025)
        at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3751)
        at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:304)
        at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:962)
        at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1662)
        at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:195)
        at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:452)
        at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:511)
        at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:305)
        at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:276)
        at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214)
        at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113)
        at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
        at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
        at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
        at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
        at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
        at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)
        at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)
        at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1690)
尝试过的操作:重新安装应用,更改类已装入并且是先使用本地类装入器(父类最后)

目前情况,仍然是这样。
这个人虽然不懒,但也没有留下什么

TOP

首先,将WEB-INF\modules下的.mar文件更名为.jar文件,并放到WEB-INF\lib中
1、创建共享库,类路径为AXIS2示例的WEB-INF\lib那些些解压开的路径,路径自行修改,注意选择上“请对此共享库使用隔离的类装入器”
2、应用程序中引用第1步所创建的共享库,原来的.war包中WEB-INF\lib目录下的就删除之,包也小了,部署也快。
3、重启WAS就可以了。
简单就是美!
我的Java:http://www.Java2Class.net

TOP