`

CXF SOAP 1.2 SOAP 1.1 问题

 
阅读更多

在用cxf 做webservice客户端的时候碰到的:

 

javax.xml.ws.soap.SOAPFaultException: A SOAP 1.2 message is not valid when sent to a SOAP 1.1 only endpoint.

 

在网上上找了一些资料但是还是不能解决我的问题,但是还是要感谢下, 不然太不厚道了

 写道
看来是soap协议不匹配
在接口或实现类上声明
@BindingType(value = "http://www.w3.org/2003/05/soap/bindings/HTTP/")
或者
@BindingType(value = SOAPBinding.SOAP12HTTP_BINDING)
注意要引入geronimo-jaxws_2.2_spec-1.0.jar包
生成的wsdl文件我们可以看到
xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/
 
在这些前提下 依然返回 同样的错误
于是我试着找源码,发现原来是这里 version 默认的就是 Soap11 instance 。 
Java代码  收藏代码
  1. if (soapVersion == Soap12.getInstance()  
  2.     && version == Soap11.getInstance()) {  
  3.     throw new SoapFault(new Message("INVALID_11_VERSION", LOG, ns, xmlReader.getLocalName()),  
  4.                         Soap11.getInstance().getVersionMismatch());                      
  5. }  
 
回头看看CXF 在初始化的是否可以将 Soap12 设置进去 , ok 。
Java代码  收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:jaxws="http://cxf.apache.org/jaxws" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xsi:schemaLocation="  
  5.           http://www.springframework.org/schema/beans   
  6.           http://www.springframework.org/schema/beans/spring-beans.xsd  
  7.           http://cxf.apache.org/jaxws   
  8.           http://cxf.apache.org/schemas/jaxws.xsd">  
  9.               
  10.     <bean id="jaxWsProxyFatory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">  
  11.         <property name="bindingId" value="http://www.w3.org/2003/05/soap/bindings/HTTP/" />  
  12.         <property name="serviceClass" value="net.carefx.cds.v1.services.core.CdsCoreServices" />  
  13.         <property name="address" value="http://localhost:8181/cxf/coreServices" />  
  14.     </bean>  
  15.   
  16.     <bean id="soapSerivces" class="net.carefx.cds.testtool.proxy.SoapServices">  
  17.         <property name="factory" ref="jaxWsProxyFatory" />  
  18.     </bean>  
  19.       
  20. </beans>    
 
 
Java代码  收藏代码
  1. <span style="font-weight: normal;">  
  2. public class SoapServices  
  3. {  
  4.   
  5.     private static final Logger logger = new Logger (SoapServices.class.getName ());  
  6.   
  7.     private JaxWsProxyFactoryBean m_factory;  
  8.   
  9.     private CdsCoreServices cdsCoreServices;  
  10.   
  11.     public JaxWsProxyFactoryBean getFactory ()  
  12.     {  
  13.         return m_factory;  
  14.     }  
  15.   
  16.     public void setFactory (JaxWsProxyFactoryBean factory)  
  17.     {  
  18.         m_factory = factory;  
  19.     }  
  20.   
  21.     public CdsCoreServices getCdsCoreServices ()  
  22.     {  
  23.         if (cdsCoreServices == null)  
  24.         {  
  25.             cdsCoreServices = (CdsCoreServices) m_factory.create ();  
  26.         }  
  27.         return cdsCoreServices;  
  28.     }  
  29.   
  30.       
  31. }</span>  
 
将 bindingId 设置进去就可以了 告诉 cxf 需要用 Soap12 获取返回数据。搞定。
分享到:
评论
1 楼 zhangy888 2014-04-12  
你好,我正好也遇到了这个问题,按照您的设置有如下几个问题,请帮忙解答一下:
1、net.carefx.cds.testtool.proxy.SoapServices是属于哪个jar包的?
2、SOAPBinding.SOAP12HTTP_BINDING 这个常量设置似乎现有jar包中没有
请帮忙看看,谢谢!

相关推荐

    发布soap1.2版本webservice时所需要的包

    SOAP 1.2是该协议的一个版本,相较于早期的SOAP 1.1,它提供了更强大的功能和更好的性能。本文将详细介绍在发布SOAP 1.2版本Web服务时所需的一些关键知识点。 1. **SOAP协议**:SOAP是一种基于XML的协议,用于在...

    cxf-soap内容解析、更改(助记)

    1. 创建`SOAPMessage`对象,这可以通过CXF的`MessageFactory`类完成,它可以根据SOAP规范版本(如SOAP 1.1或1.2)创建消息工厂。 2. 使用`MessageFactory`加载SOAP消息的XML字符串或流,生成`SOAPMessage`实例。 3. ...

    cxf-rt-bindings-soap-2.7.6.zip

    CXF支持多种SOAP规范,包括SOAP 1.1和1.2,以及WSDL(Web服务描述语言)用于服务的描述和发现。 在实际应用中,CXF RT Bindings SOAP组件可以用于以下场景: 1. **服务提供者**:开发者可以使用CXF定义Java接口,...

    cxf-uw-ws-soap

    - CXF支持SOAP 1.1和1.2版本,提供了完整的SOAP处理能力,包括消息编码、处理WS-Security等。 - 使用CXF,开发者可以通过JAX-WS(Java API for XML Web Services)来创建SOAP服务。JAX-WS是Java中定义Web服务的...

    Webservice笔记含使用cxf和jaxws两种方式开发webservice【源代码+笔记】

    Soap1.1和soap1.2区别: 跟踪soap协议 综合案例: 使用webservice传输xml数据(重点掌握) 第二天: Jaxws的深入开发: 常用注解 测试jaxws传输复杂对象类型 CXF开发webservice: CXF入门程序 Spring+...

    SOAP编程

    主要有SOAP 1.1和SOAP 1.2两个主要版本,其中SOAP 1.2对消息结构进行了改进,并支持更多的WS-*规范。 9. **SOAP与Java编程**: 在Java中,JAX-WS(Java API for XML Web Services)是用于创建SOAP Web服务的标准...

    cxf-1.1.x 所需jar包

    1. **SOAP支持**:CXF能够处理SOAP 1.1和1.2消息,并且支持WS-I Basic Profile 1.1和1.2,确保了与不同平台和服务之间的互操作性。 2. **RESTful服务**:CXF不仅限于SOAP,还支持Representational State Transfer ...

    WebService-CXF学习.doc

    CXF支持多种标准,如JAX-WS、JSR-181、SAAJ、JAX-RS等,以及SOAP 1.1和1.2、WSDL 1.1等协议,并具备WS-Security、WS-Addressing等企业级服务质量(QoS)功能。 CXF支持多种数据绑定和传输方式,如SOAP、REST/HTTP,...

    SOAP框架跨平台通信.pdf

    三、SOAP1.1规范Arrays 在SOAP 1.1中,数组可以通过几种方式表示,包括SOAP数组(SOAP Array)、数组类型(Array Type)和数组元素(Array Element)。这些方式允许服务处理不同类型和维度的数组数据。 四、WSDL...

    cxf框架包 apache-cxf-3.4.3.tar.gz

    CXF支持SOAP 1.1和1.2,并能处理各种安全、事务和消息传递模式。 - **RESTful**:REST(Representational State Transfer)是一种轻量级的架构风格,通常用于构建Web服务。CXF提供了强大的工具来支持RESTful服务,...

    webService的CXF框架jar包

    1. **SOAP支持**:CXF支持完整的SOAP 1.1和1.2规范,包括WSDL(Web Services Description Language)和XSD(XML Schema Definition)。这使得开发者可以定义服务接口和服务数据模型,并生成相应的Java代码。 2. **...

    cxf-2.1.jar neethi-2.0.1.jar xml-resolver-1.2.jar XmlSchema-1.1.jar

    它支持SOAP、REST、WS-*规范(如WS-Security和WS-ReliableMessaging)以及数据绑定技术,如JAXB,帮助开发者轻松地实现Web服务功能。 2. **neethi-2.0.1.jar**: Neethi是Apache软件基金会的一个项目,提供了一个...

    soap 文档,pdf 格式的

    7. **SOAP版本**: SOAP有多个版本,如SOAP 1.1和SOAP 1.2。每个版本都对协议进行了改进和扩展,例如,SOAP 1.2引入了更多的XML Schema支持和更精确的错误处理。 8. **SOAP与WS-*标准**: SOAP是Web服务标准化的一...

    CXF-3.1.11jar包

    1. **SOAP支持**:CXF能够处理SOAP 1.1和1.2消息,支持WSDL(Web服务描述语言)的第一和第二版本,用于定义服务接口。 2. **RESTful服务**:除了传统的SOAP服务,CXF也支持Representational State Transfer(REST)...

    cxf的jar包

    1. **SOAP支持**:CXF允许开发者创建符合SOAP规范的服务,包括SOAP 1.1和1.2。它支持WSDL(Web服务描述语言)第一和第二版,用于定义服务接口。 2. **RESTful支持**:CXF也支持REST(Representational State ...

    cxf 常用jar包

    这个JAR包包含了处理SOAP 1.1和SOAP 1.2的消息解析和生成所需的所有类和接口,使得CXF可以方便地进行SOAP服务的实现和调用。 2. `cxf-rt-ws-addr-3.0.2`:此组件实现了WS-Addressing规范,这是一种用于标识Web服务...

    apache-cxf 2.2.8版本下载

    CXF支持SOAP 1.1和1.2版本。 2. **WSDL (Web Services Description Language)**:WSDL文件定义了Web服务的接口,包括输入、输出、操作以及如何调用服务。CXF提供了WSDL第一和第二版的生成和解析能力。 3. **JAX-WS...

    apache-cxf-2.1.1.zip

    1. **SOAP支持**:CXF支持SOAP 1.1和1.2,以及WSDL 1.1和2.0。它提供了一个强大的工具集来生成客户端和服务端代码,这些代码可以直接与WSDL文件交互。 2. **RESTful服务**:除了SOAP,CXF还支持基于HTTP的RESTful...

Global site tag (gtag.js) - Google Analytics