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

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

websphere OSGi应用环境下服务调用saaj包加载问题分析报告的更多相关文章

  1. webpack4下import()模块按需加载,打包按需切割模块,减少包体积,加快首页请求速度

    一:背景 因为项目功能越加越多,打包后的体积越来越大,导致首页展示的时候速度比较慢,因为要等压缩的js的包加载完毕. 首页展示的时候只需要对应的js,并不需要全部的js模块,所以这里就可以用按需加载, ...

  2. 带你实现开发者头条APP(五)--RecyclerView下拉刷新上拉加载

    title: 带你实现开发者头条APP(五)--RecyclerView下拉刷新上拉加载 tags: -RecyclerView,下拉刷新,上拉加载更多 grammar_cjkRuby: true - ...

  3. JS+CSS实现的下拉刷新/上拉加载插件

    闲来无事,写了一个当下比较常见的下拉刷新/上拉加载的jquery插件,代码记录在这里,有兴趣将代码写成插件与npm包可以留言. 体验地址:http://owenliang.github.io/pull ...

  4. MaterialRefreshLayout+ListView 下拉刷新 上拉加载

    效果图是这样的,有入侵式的,非入侵式的,带波浪效果的......就那几个属性,都给出来了,自己去试就行. 下拉刷新 上拉加载 关于下拉刷新-上拉加载的效果,有许许多多的实现方式,百度了一下竟然有几十种 ...

  5. listview下拉刷新和上拉加载更多的多种实现方案

    listview经常结合下来刷新和上拉加载更多使用,本文总结了三种常用到的方案分别作出说明. 方案一:添加头布局和脚布局        android系统为listview提供了addfootview ...

  6. Android 5.X新特性之为RecyclerView添加下拉刷新和上拉加载及SwipeRefreshLayout实现原理

    RecyclerView已经写过两篇文章了,分别是Android 5.X新特性之RecyclerView基本解析及无限复用 和 Android 5.X新特性之为RecyclerView添加Header ...

  7. jQuery 滚动条 滚动到底部(下拉到底部) 加载数据(触发事件、处理逻辑)、分页加载数据

    1.针对浏览器整个窗口滚动 主要代码: <script type="text/javascript"> ; function GetProductListPageFun ...

  8. android ListView下拉刷新 上拉加载更多

    背景 最近在公司的项目中要使用到ListView的下拉刷新和上拉加载更多(貌似现在是个项目就有这个功能!哈哈),其实这个东西GitHub上很多,但是我感觉那些框架太大,而且我这个项目只用到了ListV ...

  9. 包加载失败 未能正确加载包“xxx”...

    打开vs2008或者2005如果弹出一个警告对话框 包加载失败 未能正确加载包“xxx” ...... 的字样,就可以用以下方法解决. 在cmd下运行带参数的devenv.exe: "d(盘 ...

随机推荐

  1. PHP基础笔记汇总

    一.PHP简介PHP:超文本预处理器(译者注:PHP: Hypertext Preprocessor,递归命名)PHP 是一种服务器端的脚本语言,类似 ASPPHP 文件的文件后缀是 ".p ...

  2. DataGridView取消默认选中行

    DataGridView在添加数据后会默认选中第 一个单元格或者第一行,我就想取消它的默认选中行.在DataGridView绑定数据之后加上了ClearSelection().这样一来,不论是启动窗体 ...

  3. Entity Framework中的多个库操作批量提交、事务处理

    在Entity Framework 中使用SaveChanges()是很频繁的,单次修改或删除数据后调用SaveChanges()返回影响记录数. 要使用批量修改或者批量删除数据,就需要SaveCha ...

  4. 复习后台代码(与前面clentHttp连接网络结合)

    package com.zzw.LoginServelt; import java.io.IOException; import java.io.PrintWriter; import javax.s ...

  5. Delphi 泛型对象类

    { 很早就写了. 只针对delphixe 以上的版本可用. 希望不是自己在造轮子. } 1 unit U_ClassUtility; interface uses generics.defaults, ...

  6. 下一代NoSQL:最终一致性的末日

    相比关系型数据库,NoSQL解决方案提供了shared-nothing.容错和可扩展的分布式架构等特性,同时也放弃了关系型数据库的强数据一致性和隔离性,美其名曰:"最终一致性". ...

  7. C#条件编译,发布多平台和多种选择性的项目

    http://www.cnblogs.com/chengulv/p/4579528.html 界面操作参考 这样正对不同环境就可以编译出不同的exe或者dll,做到一个项目的灵活多变.条件编译还可以满 ...

  8. tomcat生成ssl证书

    转载:http://www.cnblogs.com/sixiweb/p/3339698.html 1.1 生成keystore文件及导出证书 打开控制台: 运行: %JAVA_HOME%\bin\ke ...

  9. 包装类(Wrapper Class)

    1)包装类.针对于原生数据类型的包装.所有的包装类(8个)对位于java.lang包下.java中的8个包装类分别是:Byte,Short,Integer,Long,Float.Double,Char ...

  10. C# ArrayList的用法总结

    C# ArrayList的用法总结 System.Collections.ArrayList类是一个特殊的数组.通过添加和删除元素,就可以动态改变数组的长度. 一.优点 1. 支持自动改变大小的功能 ...