CXF是一个开源的WebService框架,首先通过一个简单的示例学习CXF的使用
@WebService 注解有多个属性,通过对这些属性的赋值去学习各个属性的作用。
name: 指定服务接口的名称。此属性映射到wsdl:portType元素的属性名称,默认值是实现类的类名。
targetNamespace 指定服务的命名空间,如果该属性未指定则命名空间来自包名。
serviceName :值发布的服务名称,次属性映射到wsdl:service元素的名称。默认值是实现类的名称实现类的名称+Service
portName:指定服务发布点的名称。此属性映射到wsdl:port
wsdlLocation:指定WSDL协议保存的URI。该属性默认值为服务部署的URI
endpointInterface: 指定实现类中服务接口的全名。
/** * CXF 第一个示例 * @author zhangwei * @version $Id: HelloWord.java, v 0.1 2014年9月27日 上午8:28:08 zhangwei Exp $ */ public interface HelloWord { /** * 示例方法,打印“Hello,Word” */ public void sayHello(); } /** *@SOAPBinding(style = SOAPBinding.Style.RPC) * @author zhangwei_david * @version $Id: HelloWordImpl.java, v 0.1 2014年9月27日 上午8:32:20 zhangwei_david Exp $ */ @WebService public class HelloWordImpl implements HelloWord { /** * @see com.cathy.demo.cxf.HelloWord#sayHello() */ @WebMethod public void sayHello() { LoggerUtils.info("Hello,Word"); } }
/** * * @author zhangwei_david * @version $Id: SimpleServer.java, v 0.1 2014年9月27日 上午8:36:45 zhangwei_david Exp $ */ public class SimpleServer { public SimpleServer() { init(); } private void init() { LoggerUtils.info("启动服务。。。"); HelloWord helloWord = new HelloWordImpl(); String address = "http://localhost:9000/HelloWord"; Endpoint.publish(address, helloWord); } public static void main(String[] args) throws Exception { new SimpleServer(); LoggerUtils.info("服务就绪。。。。"); TimeUnit.MINUTES.sleep(10); LoggerUtils.info("关闭服务。。。。"); System.exit(0); } }
浏览器中输入:http://localhost:9000/HelloWord?wsdl
<?xml version="1.0" encoding="UTF-8"?> -<wsdl:definitions xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://impl.cxf.demo.cathy.com/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns1="http://schemas.xmlsoap.org/soap/http" targetNamespace="http://impl.cxf.demo.cathy.com/" name="HelloWordImplService"> -<wsdl:types> -<xs:schema xmlns:tns="http://impl.cxf.demo.cathy.com/" targetNamespace="http://impl.cxf.demo.cathy.com/" xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0" elementFormDefault="unqualified"> <xs:element name="sayHello" type="tns:sayHello"/> <xs:element name="sayHelloResponse" type="tns:sayHelloResponse"/> -<xs:complexType name="sayHello"> <xs:sequence/> </xs:complexType> -<xs:complexType name="sayHelloResponse"> <xs:sequence/> </xs:complexType> </xs:schema> </wsdl:types> -<wsdl:message name="sayHelloResponse"> <wsdl:part name="parameters" element="tns:sayHelloResponse"> </wsdl:part> </wsdl:message> -<wsdl:message name="sayHello"> <wsdl:part name="parameters" element="tns:sayHello"> </wsdl:part> </wsdl:message> -<wsdl:portType name="HelloWordImpl"> -<wsdl:operation name="sayHello"> <wsdl:input name="sayHello" message="tns:sayHello"> </wsdl:input> <wsdl:output name="sayHelloResponse" message="tns:sayHelloResponse"> </wsdl:output> </wsdl:operation> </wsdl:portType> -<wsdl:binding name="HelloWordImplServiceSoapBinding" type="tns:HelloWordImpl"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/> -<wsdl:operation name="sayHello"> <soap:operation style="document" soapAction=""/> -<wsdl:input name="sayHello"> <soap:body use="literal"/> </wsdl:input> -<wsdl:output name="sayHelloResponse"> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> </wsdl:binding> -<wsdl:service name="HelloWordImplService"> -<wsdl:port name="HelloWordImplPort" binding="tns:HelloWordImplServiceSoapBinding"> <soap:address location="http://localhost:9000/HelloWord"/> </wsdl:port> </wsdl:service> </wsdl:definitions>
将实现类修改为:
/** * * @author zhangwei_david * @version $Id: HelloWordImpl.java, v 0.1 2014年9月27日 上午8:32:20 zhangwei_david Exp $ */ @WebService(name = "HelloWord", portName = "HelloPort", serviceName = "HelloWordService", targetNamespace = "http://com.cathy.demo") public class HelloWordImpl implements HelloWord { /** * @see com.cathy.demo.cxf.HelloWord#sayHello() */ @WebMethod public void sayHello() { LoggerUtils.info("Hello,Word"); } }
<?xml version="1.0" encoding="UTF-8"?> -<wsdl:definitions xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://com.cathy.demo" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns1="http://schemas.xmlsoap.org/soap/http" targetNamespace="http://com.cathy.demo" name="HelloWordService"> -<wsdl:types> -<xs:schema xmlns:tns="http://com.cathy.demo" targetNamespace="http://com.cathy.demo" xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0" elementFormDefault="unqualified"> <xs:element name="sayHello" type="tns:sayHello"/> <xs:element name="sayHelloResponse" type="tns:sayHelloResponse"/> -<xs:complexType name="sayHello"> <xs:sequence/> </xs:complexType> -<xs:complexType name="sayHelloResponse"> <xs:sequence/> </xs:complexType> </xs:schema> </wsdl:types> -<wsdl:message name="sayHelloResponse"> <wsdl:part name="parameters" element="tns:sayHelloResponse"> </wsdl:part> </wsdl:message> -<wsdl:message name="sayHello"> <wsdl:part name="parameters" element="tns:sayHello"> </wsdl:part> </wsdl:message> -<wsdl:portType name="HelloWord"> -<wsdl:operation name="sayHello"> <wsdl:input name="sayHello" message="tns:sayHello"> </wsdl:input> <wsdl:output name="sayHelloResponse" message="tns:sayHelloResponse"> </wsdl:output> </wsdl:operation> </wsdl:portType> -<wsdl:binding name="HelloWordServiceSoapBinding" type="tns:HelloWord"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/> -<wsdl:operation name="sayHello"> <soap:operation style="document" soapAction=""/> -<wsdl:input name="sayHello"> <soap:body use="literal"/> </wsdl:input> -<wsdl:output name="sayHelloResponse"> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> </wsdl:binding> -<wsdl:service name="HelloWordService"> -<wsdl:port name="HelloPort" binding="tns:HelloWordServiceSoapBinding"> <soap:address location="http://localhost:9000/HelloWord"/> </wsdl:port> </wsdl:service> </wsdl:definitions>
可以发现上面的SOAP的方式都一直地document 如果想改为RPC又该如何呢?
** * * @author zhangwei_david * @version $Id: HelloWordImpl.java, v 0.1 2014年9月27日 上午8:32:20 zhangwei_david Exp $ */ @SOAPBinding(style = SOAPBinding.Style.RPC) @WebService public class HelloWordImpl implements HelloWord { /** * @see com.cathy.demo.cxf.HelloWord#sayHello() */ @WebMethod public void sayHello() { LoggerUtils.info("Hello,Word"); } }
结果可以看到WSDL是:
<?xml version="1.0" encoding="UTF-8"?> -<wsdl:definitions xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://impl.cxf.demo.cathy.com/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns1="http://schemas.xmlsoap.org/soap/http" targetNamespace="http://impl.cxf.demo.cathy.com/" name="HelloWordImplService"> <wsdl:message name="sayHelloResponse"> </wsdl:message> <wsdl:message name="sayHello"> </wsdl:message> -<wsdl:portType name="HelloWordImpl"> -<wsdl:operation name="sayHello"> <wsdl:input name="sayHello" message="tns:sayHello"> </wsdl:input> <wsdl:output name="sayHelloResponse" message="tns:sayHelloResponse"> </wsdl:output> </wsdl:operation> </wsdl:portType> -<wsdl:binding name="HelloWordImplServiceSoapBinding" type="tns:HelloWordImpl"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="rpc"/> -<wsdl:operation name="sayHello"> <soap:operation style="rpc" soapAction=""/> -<wsdl:input name="sayHello"> <soap:body namespace="http://impl.cxf.demo.cathy.com/" use="literal"/> </wsdl:input> -<wsdl:output name="sayHelloResponse"> <soap:body namespace="http://impl.cxf.demo.cathy.com/" use="literal"/> </wsdl:output> </wsdl:operation> </wsdl:binding> -<wsdl:service name="HelloWordImplService"> -<wsdl:port name="HelloWordImplPort" binding="tns:HelloWordImplServiceSoapBinding"> <soap:address location="http://localhost:9000/HelloWord"/> </wsdl:port> </wsdl:service> </wsdl:definitions>
相关推荐
【标题】"CXF Webservice+Mybatis" 深度解析 在现代软件开发中,集成不同的技术栈以构建高效、可维护的系统是常见的做法。本篇将深入探讨如何利用Apache CXF作为Web服务框架,与Mybatis作为持久层框架进行整合,...
cxf WebService jar包
此"CXF Webservice Demo"是一个实例,展示了如何使用CXF来创建和消费Web服务。CXF允许开发者通过SOAP(简单对象访问协议)和RESTful(Representational State Transfer)接口进行通信,支持多种协议和绑定,如HTTP、...
【标题】"mybatis+spring+cxf Webservice框架"是一个集成性的开发框架,它结合了三个主流的技术组件:MyBatis、Spring和Apache CXF,用于构建高效、灵活且易于维护的Web服务。MyBatis是一个优秀的持久层框架,Spring...
【CXF Webservice Demo】是基于Apache CXF框架的一个示例项目,用于演示如何使用CXF来创建和消费Web服务。Apache CXF是一个开源的Java框架,它允许开发者构建和集成Web服务,支持多种Web服务标准,如SOAP、RESTful ...
实战Web+Service+with+CXF webservice快速入门 webservice快速入门
使用jdk1.6、cxf2.3和tomcat开发的一个关于验证码的webservice接口,主要实现对手机验证码的验证。
CXF(CXF: Composite eXtensible Framework)是一个开源的Java框架,它主要用于构建和开发Web服务。CXF使得开发者能够轻松地创建和部署高质量、高性能的SOAP和RESTful Web服务。CXF工具类是CXF框架的一部分,提供了...
【标题】"maven项目 cxf webservice"指的是使用Maven构建的一个项目,该项目集成了Apache CXF框架来开发Web服务。Apache CXF是一个开源的Java框架,它允许开发者创建和消费各种Web服务,包括SOAP和RESTful服务。...
CXF(CXF: XFire Community eXtended)是一个开源的Java框架,用于构建和部署Web服务。它提供了强大的支持,包括SOAP、RESTful API、WS-*规范等多种协议和服务模型。CXF不仅简化了Web服务的开发,而且允许开发者无缝...
C#动态调用CXF WEBSERVICE框架共通类。
例如,可以使用`@WebService`注解标记一个Java类为Web服务接口,并使用`@Path`注解来定义RESTful服务的URL路径。 4. **CXF服务部署**:CXF提供多种部署方式,包括独立服务器、Tomcat等应用服务器,以及Spring容器。...
使用cxf webservice时容易出现的异常
本示例工程是基于CXF框架构建的一个Webservice应用,该应用集成了Spring框架,以实现更高效的服务管理和依赖注入。CXF是一个开源的Web服务框架,它允许开发者创建和部署SOAP和RESTful服务,同时也支持WS-*标准,如...
CXF(CXF: Composite eXtensible Framework)是一个开源的Java框架,它主要用于构建和部署Web服务。CXF使得开发者能够轻松地创建服务端和客户端应用,支持多种Web服务标准,如SOAP、RESTful、WS-*等。在这个主题中,...
CXF WebService整合Spring代码(包含服务,客户端两个工程 和 文档) 需要视频的话,留邮箱
【CXF Webservice初学笔记】 在IT行业中,Web服务是一种允许不同系统之间进行通信和交换数据的方法。Apache CXF是一个流行的开源框架,用于构建和部署Web服务。本笔记将探讨CXF Webservice的基础知识,包括其核心...
Spring框架是Java企业级应用开发的首选,而CXF是一个强大的开源服务框架,支持创建和消费Web服务。本教程将深入探讨如何利用Spring和CXF来实现基于HTTP和HTTPS的Web服务,并且将涉及到HTTPS的证书配置。 1. **...
2.用cxf开发webservice 3.这个服务端和客户端的小demo 在服务端 对外开放接口服务,然后在客户端 调用服务端的方法, 实现客户端(一个javaweb项目)对服务端(javaweb项目)方法的调用, 实际上就是发送和接收消息...
在Java中,创建一个CXF WebService的"HelloWorld"示例通常涉及以下步骤: 1. 定义服务接口:使用Java语言定义一个简单的接口,例如`GreetingService`,其中包含一个返回"Hello, World!"的`sayHello()`方法。 2. 实现...