标签:
故障情况说明
系统简称 | 基于osgi业务应用系统 |
故障名称 | 系统在客户生产环境:websphere7.0,基于osgi的应用系统,外部系统调用本系统提供的webservice服务时发生SOAPMessageFactory类加载异常,导致webservice服务不能被正常调用。 |
故障功能点 | Webservice服务 |
关键异常 | Caused by: java.lang.NoClassDefFoundError: com.sun.xml.internal.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl (initialization failure) ????at java.lang.J9VMInternals.initialize(J9VMInternals.java:140) ~[na:1.6.0] ????at java.lang.J9VMInternals.newInstanceImpl(Native Method) ~[na:1.6.0] ????at java.lang.Class.newInstance(Class.java:1345) ~[na:1.6.0] ????at javax.xml.soap.FactoryFinder.newInstance(FactoryFinder.java:70) ~[na:1.6.0] ????at javax.xml.soap.FactoryFinder.find(FactoryFinder.java:109) ~[na:1.6.0] ????at javax.xml.soap.MessageFactory.newInstance(MessageFactory.java:119) ~[na:1.6.0] ????at org.apache.cxf.binding.soap.saaj.SAAJInInterceptor.getFactory(SAAJInInterceptor.java:88) ~[cxf-bundle-minimal-2.2.9.jar:2.2.9] ????at org.apache.cxf.binding.soap.saaj.SAAJInInterceptor.handleMessage(SAAJInInterceptor.java:100) ~[cxf-bundle-minimal-2.2.9.jar:2.2.9]。 |
影响范围 | 本系统提供的webservice功能外部无法调用。 |
故障发生时间 | 2016-02-18 16:31:34.608 |
故障级别 | 严重 |
?
在调用服务,cxf处理消息时,会通过此抽象类javax.xml.soap.MessageFactory加载此MessageFactory的实现类,加载逻辑是:
com.sun.xml.internal.*包是sun jdk提供的一个默认实现,在提供webservice的工程中,需要引用saaj的相关包,并根据中间件环境来加载此类配置文件:
如websphere环境下可采用以下配置:
????websphere_ws.context.properties
javax.xml.soap.MessageFactory=com.sun.xml.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl
而weblogic环境则:
????weblogic_ws.context.properties
javax.xml.soap.MessageFactory=com.sun.xml.internal.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl
????在业务系统初始化、启动时,根据中间件加载以上文件,并读取其配置将其设置到系统属性中:System.setProperty(key,value)
websphere OSGi应用环境下服务调用saaj包加载问题分析报告
标签:
原文地址:http://www.cnblogs.com/bingjava/p/5254302.html