分享

Webservice部署问题及解决办法

 江江385 2013-01-21

部署问题

如果您的目标应用服务器为Weblogic10.3,那么在使用我们的webservice模块时可能会出现启动或调用时错误问题(This class does not support SAAJ 1.1),如果是这样,请在您的Spring环境当中添加如下bean配置:

<bean id="messageFactory" class="org.springframework.ws.soap.saaj.SaajSoapMessageFactory">
<property name="messageFactory">
<bean class="com.sun.xml.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl"/>
</property>
</bean>

这样Spring WS在初始化时就会采用这里bean中定义的MessageFactory实现类,对进入的消息进行处理。

如果在weblogic10上部署时出现如下异常,

java.lang.LinkageError: loader constraints violated when linking javax/xml/namespace/NamespaceContext class

出现上述异常后,可以通过在工程当中添加下面三个jar应该就可以解决出现的异常

xalan-2.7.x+.jar
xercesImpl-2.8.x+.jar
xml-apis-1.3.x+.jar

在Weblogic11g上,即使添加了上述三个jar包,同时也配置了上述的messageFactory,也还可能出现下面这种类型的异常:

Caused by: com.sun.xml.messaging.saaj.SOAPExceptionImpl: Unable to internalize message
at com.sun.xml.messaging.saaj.soap.MessageImpl.init(MessageImpl.java:470)
at com.sun.xml.messaging.saaj.soap.MessageImpl.<init>(MessageImpl.java:273)
at com.sun.xml.messaging.saaj.soap.ver1_1.Message1_1Impl.<init>(Message1_1Impl.java:68)
at com.sun.xml.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl.createMessage(SOAPMessageFactory1_1Impl.java:62)
at org.springframework.ws.soap.saaj.SaajSoapMessageFactory.createWebServiceMessage(SaajSoapMessageFactory.java:184)
... 27 more
Caused by: java.lang.LinkageError: loader constraint violation: when resolving overridden method "com.sun.xml.messaging.saaj.soap.SOAPDocumentImpl.createAttribute&#40;Ljava/lang/String&#59;&#41;Lorg/w3c/dom/Attr&#59;" the class loader &#40;instance of weblogic/utils/classloaders/ChangeAwareClassLoader&#41; of the current class, com/sun/xml/messaging/saaj/soap/SOAPDocumentImpl, and its superclass loader &#40;instance of <bootloader>&#41;, have different Class objects for the type org/w3c/dom/Attr used in the signature
at com.sun.xml.messaging.saaj.soap.SOAPPartImpl.<init>(SOAPPartImpl.java:88)
at com.sun.xml.messaging.saaj.soap.ver1_1.SOAPPart1_1Impl.<init>(SOAPPart1_1Impl.java:58)
at com.sun.xml.messaging.saaj.soap.ver1_1.Message1_1Impl.getSOAPPart(Message1_1Impl.java:78)
at com.sun.xml.messaging.saaj.soap.MessageImpl.initCharsetProperty(MessageImpl.java:1304)
at com.sun.xml.messaging.saaj.soap.MessageImpl.init(MessageImpl.java:363)

解决办法是添加另外一种类型的messageFactory bean(将原来添加的messageFactory bean删除),添加方法是在spring配置文件当中添加如下配置信息:

<bean id="messageFactory" class="org.springframework.ws.soap.axiom.AxiomSoapMessageFactory">
<property name="payloadCaching" value="true"/>
</bean>

然后将我们的spring-ws升级到2.0.5或以上版本以及axiom升级到1.2.12或以上版本,这样我们的webservice应该就可以正常运行了。


最后,在Spring WS官网上已详细罗列了在各种不同应用服务器当中可能出现的问题,具体请参考http://static./spring-ws/site/faq.html,这里就不再赘述。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多