zoukankan      html  css  js  c++  java
  • websphere OSGi应用环境下服务调用saaj包加载问题分析报告

    websphere OSGi应用环境下服务调用saaj包加载问题分析报告

    作者:bingjava

    版权声明:本文为博主原创文章,转载请说明出处:http://www.cnblogs.com/bingjava/p/5254302.html

     

     

    今天业务部门的开发同事在客户现场部署系统时,出现了saaj类加载问题,本楼主经过一番java代码的翻阅,最终问题得到解决,在此进行记录。

      故障情况说明

    系统简称

    基于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

    故障级别

    严重

    1. 分析及解决

    在调用服务,cxf处理消息时,会通过此抽象类javax.xml.soap.MessageFactory加载此MessageFactory的实现类,加载逻辑是:

    1. System.getProperty("javax.xml.soap.MessageFactory")获取指定的实现类。
    2. 如从第一步未取到则从java_home/lib/ jaxm.properties属性文件中取javax.xml.soap.MessageFactory项的配置。
    3. 如以上两步取到,则在当前classloader加载的非系统jar文件中(META-INF/services/javax.xml.soap.MessageFactory
    4. 如以上方式都未取到,则默认加载:com.sun.xml.internal.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl

    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.MessageFactorycom.sun.xml.internal.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl

        在业务系统初始化、启动时,根据中间件加载以上文件,并读取其配置将其设置到系统属性中:System.setProperty(key,value)

  • 相关阅读:
    v-chart使用的相关实例
    v-chart从后台获取数据
    算法题-单词搜索
    关于前端开发的一些小经验总结
    element的input中加入可点击的按钮
    vue.js的入门
    链表问题(算法题)
    同构词分类
    最长不降序子列的改编(dp数组的使用)
    Ubuntu安装Git
  • 原文地址:https://www.cnblogs.com/bingjava/p/5254302.html
Copyright © 2011-2022 走看看