spring-ws在tomcat上运行正常
但部署到websphere总是出现 java.lang.NoClassDefFoundError 或方法未定义异常
比如找不到com/sun/xml/messaging/saaj/soap/ver1_1/BodyElement1_1Impl等等
原因在于websphere的加载机制默认是父级优先,而websphere自带的saaj之类spring-ws用到的类版本很旧
于是出现以上的异常
参见spring-ws的常见问题
http://static.springsource.org/spring-ws/sites/1.5/faq.html
对于解决方法,给出了三种:http://static.springsource.org/spring-ws/sites/1.5/faq.html#saaj-websphere
相对于前两种会影响整个应用的修改加载方式的方法,第三种是最好的选择,即新建类加载器,并且设置为parent-last方式加载,将用来替换websphere中旧包的包放入一个共享库,在新建的加载器里载入共享库就好了,避免因改变整个应用的加载方式而导致其他错误出现。