Java SOAPFactory创建';空';'的值;肥皂';地址头标记中的命名空间
在JBoss4.2.3中运行的J2EE应用程序中,我们正在创建一个SOAPConnection来调用第三方的web服务。在SOAP头中,我们必须将Addressing to和Action标记设置为“1”,并将“mustUnderstand”设置为“1”。此“mustUnderstand”属性位于Java SOAPFactory创建';空';'的值;肥皂';地址头标记中的命名空间,java,soap,namespaces,Java,Soap,Namespaces,在JBoss4.2.3中运行的J2EE应用程序中,我们正在创建一个SOAPConnection来调用第三方的web服务。在SOAP头中,我们必须将Addressing to和Action标记设置为“1”,并将“mustUnderstand”设置为“1”。此“mustUnderstand”属性位于http://www.w3.org/2003/05/soap-envelope名称空间。我们通过调用: SOAPFactory#createName(“mustUnderstand”、“soap”、”ht
http://www.w3.org/2003/05/soap-envelope
名称空间。我们通过调用:
SOAPFactory#createName(“mustUnderstand”、“soap”、”http://www.w3.org/2003/05/soap-envelope");代码>
当我们在WEB-INF/lib文件夹中包含saaj.jar和saaj-impl.jar时,这是正确的。如果去掉这些,名称空间将显示为null:xmlns:soap='null',而不是xmlns:soap=”http://www.w3.org/2003/05/soap-envelope“
”。下面是整个坏标签:
http://domain/web-service.url
但如果我们在应用程序中部署了这两个jar文件,我们自己的托管web服务在创建错误时会失败(由于类强制转换异常:
javax.xml.soap.SOAPException:java.lang.ClassCastException:com.sun.xml.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl)
我们的J2EE应用程序是一个JBossWS web服务,它本身调用第三方web服务。与jar文件存在明显的冲突
关于如何获取http://www.w3.org/2003/05/soap-envelope
要在生成的SOAP标记中写出的名称空间?我最终直接使用API调用SOAPHeaderElement#mustUnderstand(true)。这似乎解决了这个问题,因为不需要另一个名称空间声明(它使用来自信封本身的soap env名称空间声明)
我还有另一个问题(JBoss想要发送一个分块的HTTP请求,第三方web服务不喜欢它,但我还没有深入研究这个问题)