开发了一个web service服务,客户居然不认,查看客户发过来的请求,其soap header是
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope">
但我们给回的响应soap header是
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
查了一下资料,发现客户发过来的是soap1.1的header,我们的响应却是soap1.2的header,所以怀疑是不是这里出了问题
由于我们的服务端是根据wsdl证书反向生成的,所以就先查了一下原始wsdl
<wsdl:service name="inbound.webServices.ticket.saService">
<wsdl:port name="inbound.webServices.ticket.saServiceSoap" binding="tns:inbound.webServices.ticket.saServiceSoap">
<soap:address location="http://localhost:49169/saService.asmx" />
</wsdl:port>
<wsdl:port name="inbound.webServices.ticket.saServiceSoap12" binding="tns:inbound.webServices.ticket.saServiceSoap12">
<soap12:address location="http://localhost:49169/saService.asmx" />
</wsdl:port>
</wsdl:service>
可以看到,wsdl同时声明了soap11和soap12,上网查了一下,在cxf的配置文件里增加了以下的配置
<jaxws:endpoint id="sp" implementor="xxx" address="/WebServiceSP">
<jaxws:binding>
<soap:soapBinding version="1.1" />
</jaxws:binding>
</jaxws:endpoint>
重启应用以后,发现没有生效,不知道是为什么
于是又检查了web service实现类的代码,发现类开头的注解是这么写的:
@WebService(serviceName = "xxx", portName = "inbound.webServices.ticket.saServiceSoap12", targetNamespace = "xxx", wsdlLocation = "xxx/saService.wsdl", endpointInterface = "xxx")
看来看去,觉得就是portName最为可疑,把这里改成:
@WebService(serviceName = "xxx", portName = "inbound.webServices.ticket.saServiceSoap", targetNamespace = "xxx", wsdlLocation = "xxx/saService.wsdl", endpointInterface = "xxx")
再重启应用就OK了
分享到:
相关推荐
通过上述步骤,我们成功实现了使用CXF打印SOAP报文的功能,并能够有效地记录WebService的日志信息。这对于调试和维护基于CXF的服务来说是非常有用的。此外,通过扩展此类自定义拦截器,还可以添加更多的功能,如安全...
在使用CXF和Spring发布SOAP服务时,我们首先需要在Spring配置文件中声明CXF的Servlet或Endpoint。例如,你可以使用`JaxWsServerFactoryBean`来创建和启动SOAP服务。下面是一个基本的配置示例: ```xml ...
Apache CXF是一个开源的Java框架,它允许创建和消费Web服务,支持多种协议和标准,如SOAP、RESTful、WS-*等。下面我们将详细讨论这四个核心JAR文件在CXF客户端中的作用以及相关知识点。 1. **wsdl2java.jar**:这个...
总的来说,这个项目展示了如何使用Eclipse和CXF来快速搭建和运行一个Web服务,这对于理解和实践Java Web服务开发是非常有价值的。通过学习和实践这个项目,你可以深入理解Web服务的工作机制,以及如何利用CXF和...
这些jar包对于创建、部署和消费Web服务至关重要,特别是对于使用命令行生成Web服务客户端的开发者来说。 Apache CXF允许开发者通过多种协议如SOAP、RESTful HTTP、XML/HTTP等来实现Web服务。在2.7.7版本中,CXF提供...
在IT行业中,尤其是在Java Web开发领域,CXF框架是一个广泛使用的工具,用于构建和实现Web服务,包括SOAP和RESTful API。"cxf所需jar包(内含配置文件)"这个压缩包,正如其名,提供了SpringMVC与CXF整合所需的依赖...
2. **@SOAPBinding**:这个注解用于定义SOAP协议和消息格式,比如SOAP 1.1或SOAP 1.2,以及参数风格(如RPC或Document)。 3. **@WebMethod**:它定义了一个服务操作,`operationName`属性对应于WSDL文档中的`wsdl:...
本文将深入探讨如何使用Spring和CXF来创建RESTful Web服务和SOAP Web服务,以及这两个技术结合的一些核心概念。 首先,Spring是一个开源的Java框架,主要用于简化企业级应用开发。它提供了依赖注入(Dependency ...
本文将深入探讨如何使用CXF来生成Web服务接口,包括客户端和服务端的实现,帮助开发者更高效地进行Web服务的开发。 首先,我们需要了解什么是CXF。Apache CXF是一个强大的开源Java框架,它支持多种Web服务标准,如...
总之,使用CXF框架在SOAP协议下开发Web服务,不仅可以享受到Java语言的强大功能,还能充分利用CXF提供的便利性和灵活性。通过深入学习和实践,开发者可以高效地构建跨平台、安全可靠的分布式系统。
在协议和数据绑定方面,CXF支持SOAP 1.1和1.2,以及WS-I Basic Profile、WS-Security等标准。它能处理WSDL 1.1和2.0,还支持MTOM(Message Transmission Optimization Mechanism)。CXF的Data Bindings目前支持JAXB ...
- **SOAP支持**:CXF提供SOAP 1.1和1.2的支持,可以处理各种SOAP消息。 - **RESTful服务**:通过JAX-RS,CXF可以轻松创建和消费RESTful服务,支持JSON和XML数据格式。 - **WSDL第一**:开发者可以基于WSDL文件...
1. **SOAP支持**:CXF提供了完整的SOAP栈,支持SOAP 1.1和1.2,能够处理WS-I Basic Profile兼容的服务,以及WSDL到Java或Java到WSDL的绑定。 2. **RESTful服务**:CXF不仅限于SOAP,还支持RESTful服务的创建。...
通过这个官方完整jar包,开发者可以获得CXF的核心功能,使用bin目录中的工具进行服务部署,查阅api文档学习和理解框架,借助simple示例快速上手,并且能与Spring 3.2.0框架紧密结合,实现高效的服务开发和管理。
1. **CXF简介**:CXF是一个开源的Java框架,它支持基于标准的Web服务,包括SOAP 1.1/1.2,RESTful HTTP,以及WS-Security等安全标准。它提供了从Java类直接生成WSDL文档的能力,反之亦然,即Java-to-WSDL(JAX-WS)...
1. SOAP 1.1和1.2:用于XML基础的Web服务通信。 2. WSDL(Web Services Description Language):用于定义服务接口和消息交换模式。 3. JAXB(Java Architecture for XML Binding):将Java对象和XML文档相互转换。 ...
Cxf,另一方面,是一个开源的Web服务框架,它支持WS-*标准,可以创建和消费SOAP以及RESTful Web服务。 集成Spring和Cxf的步骤通常包括以下几个关键部分: 1. **配置Spring**:首先,我们需要创建一个Spring配置...
Apache CXF则是一个开源的Web服务框架,它支持SOAP、RESTful等多种通信协议,使得开发者可以方便地创建和消费Web服务。在Spring项目中整合CXF,可以实现服务的发布与调用,提升系统的可扩展性和互操作性。 在IDEA中...
CXF允许开发者通过多种Web服务标准来创建和消费Web服务,包括SOAP和RESTful服务。然而,在使用CXF时,可能会遇到各种编码问题,特别是当处理非ASCII字符集,如GBK时。本篇将深入探讨"cxf3.2.0编码GBK的不可映射字符...
1. **SOAP和RESTful服务支持**:CXF提供了全面的支持,用于创建和消费SOAP 1.1和1.2服务,同时也能处理RESTful服务,利用JAX-RS规范。 2. **多种协议和绑定支持**:CXF能够处理HTTP、HTTPS、JMS、SMTP等多种协议,...