CXF初步教程
来源:互联网 发布:淘宝金牌卖家 编辑:程序博客网 时间:2024/06/06 01:35
今天,又水了一天,上午起来看了看动漫,看了看视频,下午调了一会儿程序。这两天将总结的文档整理到博客上才发现,写的好像很2.,毕竟,总结是给自己看的,而博客就会有其他同学看到,以后一定要写一些有意义的东西。今天依然是以前的总结,关于CXF的,主要是参考的官方文档和网上的资料。
1 CXF概述
1.1 CXF介绍
Apache CXF =Celtix + XFire,Apache CXF 的前身叫 Apache CeltiXfire,现在已经正式更名为 Apache CXF 了,以下简称为 CXF。CXF 继承了 Celtix 和 XFire 两大开源项目的精华,提供了对 JAX-WS 全面的支持,并且提供了多种 Binding 、DataBinding、Transport 以及各种 Format 的支持,并且可以根据实际项目的需要,采用代码优先(Code First)或者 WSDL 优先(WSDL First)来轻松地实现 Web Services 的发布和使用。Apache CXF已经是一个正式的Apache顶级项目。
Apache CXF 是一个开源的Services 框架,CXF 帮助您利用 Frontend 编程 API 来构建和开发 Services ,像 JAX-WS 。这些 Services 可以支持多种协议,比如:SOAP、XML/HTTP、RESTful HTTP 或者 CORBA ,并且可以在多种传输协议上运行,比如:HTTP、JMS 或者 JBI,CXF 大大简化了 Services 的创建,同时它继承了 XFire 传统,一样可以天然地和 Spring 进行无缝集成。
2 CXF版的HelloWorld
我们使用MyEclipse集成开发环境学习CXF。
2.1 新建WebProject,并加入依赖包
图1 依赖包
2.2 写一个服务接口
首先是服务接口:
这里的接口需要使用Annotation @WebService 描述,接口中的方法如果有参数,需要使用@WebParam来修饰,并使用属性name来定义名字,不然发布后,参数会使用默认的args0…
package org.ygy.service;import javax.jws.WebParam;import javax.jws.WebService;@WebServicepublic interface HelloWorldService {public String sayHello();public String sayHelloWithName(@WebParam(name="name") String name);}
接下来写一个接口的实现类:
package org.ygy.service.impl;import org.ygy.service.HelloWorldService;public class HelloWorldServiceImpl implements HelloWorldService {@Overridepublic String sayHello() {System.out.println("sayHello()");return "Hello World !";}@Overridepublic String sayHelloWithName(String name) {System.out.println("sayHello(" + name + ")");return "Hello , " + name;}}
2.3 声明服务
在WEB-INF文件夹下新建一个beans.xml。
这是一个Spring的配置文件,首先要导入几个cxf使用的xml文件,然后定义我们刚才写好的服务。
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"><import resource="classpath:META-INF/cxf/cxf.xml" /><import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" /><import resource="classpath:META-INF/cxf/cxf-servlet.xml" /><jaxws:endpoint id="hello" implementor="org.ygy.service.impl.HelloWorldServiceImpl" address="/HelloWorldService" /></beans>
2.4 配置Servlet
我们来看一下web.xml的配置
<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"><listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><context-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/beans.xml</param-value></context-param><servlet><servlet-name>HelloWorldService</servlet-name> <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>HelloWorldService</servlet-name><url-pattern>/services/*</url-pattern></servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list></web-app>
2.5 写一个测试程序
package org.ygy.test;import java.net.MalformedURLException;import java.net.URL;import javax.xml.namespace.QName;import javax.xml.ws.Service;import org.junit.Test;import org.ygy.service.HelloWorldService;public class HelloClient {@Testpublic void testSayHello() throws MalformedURLException {URL wsdlURL = new URL("http://localhost:8080/CXFTest_HelloWorld/services/HelloWorldService?wsdl");QName SERVICE_NAME = new QName("http://impl.service.ygy.org/", "HelloWorldServiceImplService");Service service = Service.create(wsdlURL, SERVICE_NAME);HelloWorldService client = service.getPort(HelloWorldService.class);String result = client.sayHello();System.out.println("result==>" + result);}@Testpublic void testSayHelloWithName() throws MalformedURLException {URL wsdlURL = new URL("http://localhost:8080/CXFTest_HelloWorld/services/HelloWorldService?wsdl");QName SERVICE_NAME = new QName("http://impl.service.ygy.org/", "HelloWorldServiceImplService");Service service = Service.create(wsdlURL, SERVICE_NAME);HelloWorldService client = service.getPort(HelloWorldService.class);String result = client.sayHelloWithName("路飞");System.out.println("result-->" + result);result = client.sayHello();System.out.println(result);}}
至此,我们的项目结构如图 2所示。
图2 项目目录结构
2.6 将项目部署到Tomcat
将项目成功部署到Tomcat后,启动Tomcat,访问
http://localhost:8080/CXFTest_HelloWorld/services,会看到如图 3所示的页面
图3 发布的WebService
单击链接,可以打开WSDL。图4 WSDL文件
至此,我们的第一个WebService发布完成。
- CXF初步教程
- CXF初步教程(续)
- Apache CXF快速上手教程
- CXF 简单教程初级版
- webservice入门之CXF教程
- webservice入门之CXF教程
- webservice入门之CXF教程
- Apache CXF快速上手教程
- webService教程之cxf框架
- webservice入门之CXF教程
- Css初步教程
- DirectSound初步教程
- python初步学习教程
- 【BootStrap】初步教程
- git初步教程
- JNI初步教程
- cxf初步开发---转载http://tianjun309.iteye.com/blog/848776
- Web Service笔记(一):WS简介与CXF初步
- 黑马程序员_java基础加强-枚举和反射
- eclipse怎么部署项目到tomcat
- 文件描述符和文件系统和设备文件
- iframe跨域javascript访问
- ACM-杭电 HDOJ-1216 模拟,链表
- CXF初步教程
- 模拟音频接口详解
- java类的构造器
- 【VC编程技巧】动态链接库☞1.4进程间共享数据
- xwiki
- bash history的设置
- FOSSology 安装文档
- 通过 URL 协议实现从 Safari 等浏览器中跳转打开你的 app
- LIS算法(最长上升子序列)