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 |
|
故障级别 |
严重 |
分析及解决
在调用服务,cxf处理消息时,会通过此抽象类javax.xml.soap.MessageFactory加载此MessageFactory的实现类,加载逻辑是:
- 从System.getProperty("javax.xml.soap.MessageFactory")获取指定的实现类。
- 如从第一步未取到则从java_home/lib/ jaxm.properties属性文件中取javax.xml.soap.MessageFactory项的配置。
- 如以上两步取到,则在当前classloader加载的非系统jar文件中(META-INF/services/javax.xml.soap.MessageFactory)
- 如以上方式都未取到,则默认加载: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包加载问题分析报告的更多相关文章
- webpack4下import()模块按需加载,打包按需切割模块,减少包体积,加快首页请求速度
一:背景 因为项目功能越加越多,打包后的体积越来越大,导致首页展示的时候速度比较慢,因为要等压缩的js的包加载完毕. 首页展示的时候只需要对应的js,并不需要全部的js模块,所以这里就可以用按需加载, ...
- 带你实现开发者头条APP(五)--RecyclerView下拉刷新上拉加载
title: 带你实现开发者头条APP(五)--RecyclerView下拉刷新上拉加载 tags: -RecyclerView,下拉刷新,上拉加载更多 grammar_cjkRuby: true - ...
- JS+CSS实现的下拉刷新/上拉加载插件
闲来无事,写了一个当下比较常见的下拉刷新/上拉加载的jquery插件,代码记录在这里,有兴趣将代码写成插件与npm包可以留言. 体验地址:http://owenliang.github.io/pull ...
- MaterialRefreshLayout+ListView 下拉刷新 上拉加载
效果图是这样的,有入侵式的,非入侵式的,带波浪效果的......就那几个属性,都给出来了,自己去试就行. 下拉刷新 上拉加载 关于下拉刷新-上拉加载的效果,有许许多多的实现方式,百度了一下竟然有几十种 ...
- listview下拉刷新和上拉加载更多的多种实现方案
listview经常结合下来刷新和上拉加载更多使用,本文总结了三种常用到的方案分别作出说明. 方案一:添加头布局和脚布局 android系统为listview提供了addfootview ...
- Android 5.X新特性之为RecyclerView添加下拉刷新和上拉加载及SwipeRefreshLayout实现原理
RecyclerView已经写过两篇文章了,分别是Android 5.X新特性之RecyclerView基本解析及无限复用 和 Android 5.X新特性之为RecyclerView添加Header ...
- jQuery 滚动条 滚动到底部(下拉到底部) 加载数据(触发事件、处理逻辑)、分页加载数据
1.针对浏览器整个窗口滚动 主要代码: <script type="text/javascript"> ; function GetProductListPageFun ...
- android ListView下拉刷新 上拉加载更多
背景 最近在公司的项目中要使用到ListView的下拉刷新和上拉加载更多(貌似现在是个项目就有这个功能!哈哈),其实这个东西GitHub上很多,但是我感觉那些框架太大,而且我这个项目只用到了ListV ...
- 包加载失败 未能正确加载包“xxx”...
打开vs2008或者2005如果弹出一个警告对话框 包加载失败 未能正确加载包“xxx” ...... 的字样,就可以用以下方法解决. 在cmd下运行带参数的devenv.exe: "d(盘 ...
随机推荐
- [系统]制作老毛桃U盘WinPE
准备工作,1G以上的U盘一个, Winpe 工具一个,个人推荐老毛桃winpe Ghost镜像文件(这个不用说了吧,能想到U盘装系统肯定都知道的) 可以开始了:插入U盘(最好把U盘里的东西清空,自己保 ...
- VS2010 /VC/bin/rcdll.dll 无法找到资源编译器
把C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin 目录下的rcdll.dll拷贝到 C:\Program Files(x86)\Micr ...
- CSS计数器与动态计数呈现
代码: CSS代码: body { counter-reset: icecream; } input:checked { counter-increment: icecream; } .total:: ...
- 【PHP】配置环境变量
使用Zend Framework的zf.bat创建项目时,出现如下提示:"php.exe"不是内部或外部命令,也不是可运行的程序或批处理文件. 解决方法: 配置php的环境变量: ...
- 新浪微博登录界面上下拉伸图片--第三方开源--PullToZoomListViewEx(二)
这是PullZoomView在ScrollView实现,Android PullZoomView在ScrollView的实现是:PullToZoomScrollViewEx 下载地址:https:// ...
- Java命名:
如果没有public类,就和遵循文件名命名规则: 1.一个.java文件只能有1个public class(暗示可以没有) 2.如果有public class,那么文件名必须与修饰符为public的类 ...
- 创业日记-关于学习Python
2015年7月2日 深圳 阴天 学习Python有一个月了,总整感觉Python是一个比较小而灵活的语言. 为什么要学习Python 今年我已入行有9年了,一直在写C#,关于微软的集成环境也用的比较顺 ...
- python杂记-4(迭代器&生成器)
#!/usr/bin/env python# -*- coding: utf-8 -*-#1.迭代器&生成器#生成器#正确的方法是使用for循环,因为generator也是可迭代对象:g = ...
- (转)Linux下用mkisofs制作光盘镜像ISO文件
我们都知道在windows下有winiso可以将光盘制作成光盘镜像ISO文件,在linux下一个命令就搞定了.那就是mkisofs.先看看mkisofs的help. rory@dev:~$ mkiso ...
- python去掉空行
#用strip(),split()两个方法都可以判断空行 infile=open('/.../','r') outfile=open('/.../','w') for li in infile.rea ...