`
okey9
  • 浏览: 16256 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

CXF SOAP 1.2 SOAP 1.1 问题

    博客分类:
  • CXF
 
阅读更多

在用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 。 
                if (soapVersion == Soap12.getInstance()
                    && version == Soap11.getInstance()) {
                    throw new SoapFault(new Message("INVALID_11_VERSION", LOG, ns, xmlReader.getLocalName()),
                                        Soap11.getInstance().getVersionMismatch());                    
                }
 
回头看看CXF 在初始化的是否可以将 Soap12 设置进去 , ok 。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:jaxws="http://cxf.apache.org/jaxws" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="
          http://www.springframework.org/schema/beans 
          http://www.springframework.org/schema/beans/spring-beans.xsd
          http://cxf.apache.org/jaxws 
          http://cxf.apache.org/schemas/jaxws.xsd">
          	
    <bean id="jaxWsProxyFatory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
        <property name="bindingId" value="http://www.w3.org/2003/05/soap/bindings/HTTP/" />
        <property name="serviceClass" value="net.carefx.cds.v1.services.core.CdsCoreServices" />
        <property name="address" value="http://localhost:8181/cxf/coreServices" />
    </bean>

    <bean id="soapSerivces" class="net.carefx.cds.testtool.proxy.SoapServices">
        <property name="factory" ref="jaxWsProxyFatory" />
    </bean>
    
</beans>  
 


public class SoapServices
{

    private static final Logger logger = new Logger (SoapServices.class.getName ());

    private JaxWsProxyFactoryBean m_factory;

    private CdsCoreServices cdsCoreServices;

    public JaxWsProxyFactoryBean getFactory ()
    {
        return m_factory;
    }

    public void setFactory (JaxWsProxyFactoryBean factory)
    {
        m_factory = factory;
    }

    public CdsCoreServices getCdsCoreServices ()
    {
        if (cdsCoreServices == null)
        {
            cdsCoreServices = (CdsCoreServices) m_factory.create ();
        }
        return cdsCoreServices;
    }

    
}
 
将 bindingId 设置进去就可以了 告诉 cxf 需要用 Soap12 获取返回数据。搞定。

 

分享到:
评论

相关推荐

    发布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 常用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...

    cxf的jar包

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

    Soap方式调用WebService

    SOAP有1.1和1.2两个主要版本,WSDL则是用来描述WebService接口的XML格式文件,包含了服务地址、操作名称、输入/输出消息格式等信息。SOAP 1.2提供了更强大的错误处理和更高效的编码机制。 5. **SOAP与REST对比** ...

    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