在用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 获取返回数据。搞定。
分享到:
相关推荐
SOAP 1.2是该协议的一个版本,相较于早期的SOAP 1.1,它提供了更强大的功能和更好的性能。本文将详细介绍在发布SOAP 1.2版本Web服务时所需的一些关键知识点。 1. **SOAP协议**:SOAP是一种基于XML的协议,用于在...
1. 创建`SOAPMessage`对象,这可以通过CXF的`MessageFactory`类完成,它可以根据SOAP规范版本(如SOAP 1.1或1.2)创建消息工厂。 2. 使用`MessageFactory`加载SOAP消息的XML字符串或流,生成`SOAPMessage`实例。 3. ...
CXF支持多种SOAP规范,包括SOAP 1.1和1.2,以及WSDL(Web服务描述语言)用于服务的描述和发现。 在实际应用中,CXF RT Bindings SOAP组件可以用于以下场景: 1. **服务提供者**:开发者可以使用CXF定义Java接口,...
- CXF支持SOAP 1.1和1.2版本,提供了完整的SOAP处理能力,包括消息编码、处理WS-Security等。 - 使用CXF,开发者可以通过JAX-WS(Java API for XML Web Services)来创建SOAP服务。JAX-WS是Java中定义Web服务的...
Soap1.1和soap1.2区别: 跟踪soap协议 综合案例: 使用webservice传输xml数据(重点掌握) 第二天: Jaxws的深入开发: 常用注解 测试jaxws传输复杂对象类型 CXF开发webservice: CXF入门程序 Spring+...
主要有SOAP 1.1和SOAP 1.2两个主要版本,其中SOAP 1.2对消息结构进行了改进,并支持更多的WS-*规范。 9. **SOAP与Java编程**: 在Java中,JAX-WS(Java API for XML Web Services)是用于创建SOAP Web服务的标准...
1. **SOAP支持**:CXF能够处理SOAP 1.1和1.2消息,并且支持WS-I Basic Profile 1.1和1.2,确保了与不同平台和服务之间的互操作性。 2. **RESTful服务**:CXF不仅限于SOAP,还支持Representational State Transfer ...
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,...
三、SOAP1.1规范Arrays 在SOAP 1.1中,数组可以通过几种方式表示,包括SOAP数组(SOAP Array)、数组类型(Array Type)和数组元素(Array Element)。这些方式允许服务处理不同类型和维度的数组数据。 四、WSDL...
CXF支持SOAP 1.1和1.2,并能处理各种安全、事务和消息传递模式。 - **RESTful**:REST(Representational State Transfer)是一种轻量级的架构风格,通常用于构建Web服务。CXF提供了强大的工具来支持RESTful服务,...
1. **SOAP支持**:CXF支持完整的SOAP 1.1和1.2规范,包括WSDL(Web Services Description Language)和XSD(XML Schema Definition)。这使得开发者可以定义服务接口和服务数据模型,并生成相应的Java代码。 2. **...
它支持SOAP、REST、WS-*规范(如WS-Security和WS-ReliableMessaging)以及数据绑定技术,如JAXB,帮助开发者轻松地实现Web服务功能。 2. **neethi-2.0.1.jar**: Neethi是Apache软件基金会的一个项目,提供了一个...
7. **SOAP版本**: SOAP有多个版本,如SOAP 1.1和SOAP 1.2。每个版本都对协议进行了改进和扩展,例如,SOAP 1.2引入了更多的XML Schema支持和更精确的错误处理。 8. **SOAP与WS-*标准**: SOAP是Web服务标准化的一...
1. **SOAP支持**:CXF能够处理SOAP 1.1和1.2消息,支持WSDL(Web服务描述语言)的第一和第二版本,用于定义服务接口。 2. **RESTful服务**:除了传统的SOAP服务,CXF也支持Representational State Transfer(REST)...
1. **SOAP支持**:CXF允许开发者创建符合SOAP规范的服务,包括SOAP 1.1和1.2。它支持WSDL(Web服务描述语言)第一和第二版,用于定义服务接口。 2. **RESTful支持**:CXF也支持REST(Representational State ...
这个JAR包包含了处理SOAP 1.1和SOAP 1.2的消息解析和生成所需的所有类和接口,使得CXF可以方便地进行SOAP服务的实现和调用。 2. `cxf-rt-ws-addr-3.0.2`:此组件实现了WS-Addressing规范,这是一种用于标识Web服务...
CXF支持SOAP 1.1和1.2版本。 2. **WSDL (Web Services Description Language)**:WSDL文件定义了Web服务的接口,包括输入、输出、操作以及如何调用服务。CXF提供了WSDL第一和第二版的生成和解析能力。 3. **JAX-WS...
1. **SOAP支持**:CXF支持SOAP 1.1和1.2,以及WSDL 1.1和2.0。它提供了一个强大的工具集来生成客户端和服务端代码,这些代码可以直接与WSDL文件交互。 2. **RESTful服务**:除了SOAP,CXF还支持基于HTTP的RESTful...