苏州网站建设开发公司,工程招标信息在哪看,凡科轻站小程序制作平台,python制作网站开发一.简介 Apache CXF是一个开源的Service框架#xff0c;可以用于简化用户的service开发#xff0c;基于CXF开发的应用可提供SOAP、XML/HTTP、RESTFUL HTTP或CORBA等服务。CXF底层页可以使用不同的传输协议#xff0c;包括HTTP、JMS或JBI等。 特性#xff1a; 支持大量的Web… 一.简介 Apache CXF是一个开源的Service框架可以用于简化用户的service开发基于CXF开发的应用可提供SOAP、XML/HTTP、RESTFUL HTTP或CORBA等服务。CXF底层页可以使用不同的传输协议包括HTTP、JMS或JBI等。 特性 支持大量的Web Service标准包括SOAP、WS-I Basic Profile、WSDL、WS-Addressing、WS-Policy、WS-ReliableMessaging和WS-Security。 CXF支持大量的前端(frontend)编程模型。CXF实现了标准的JAX-WS API它也包括一种被称为简单前端(simple frontend)的模型这种模型无需annotation支持。CXF支持web service的两种开发模式①规则(contract)优先的开发模式即通过编写WSDL来开发web service;②代码优先的开发模式即通过编写java代码来开发webservice. 二.下载与安装(非maven) (1)登陆CXF官方站点http://cxf.apache.org/,下载CXF最新版。笔者下载的为3.0.1版。 (2)将下载得到的压缩包解压得到apache-cxf-3.0.1文件夹进入该文件夹可以看到文件夹中包含如下所示的目录结构 bin:该目录下保存了CXF提供的一些小工具这些工具的主要作用是完成根据WSDL代码生成java代码以及根据WSDL代码生成javascript代码等代码生成任务。 docs:该目录下有一个api子目录其中保存了CXF的API文档。 etc:该目录主要存放了CXF框架的一些杂项。 lib:该目录存放了CXF的核心类库以及编译和运行所依赖的第三方类库。 licenses:该目录下存放CXF以及第三方框架的授权文件。 modules:该目录下存放CXF按模块打包的jar包。 samples:该目录下存放了CXF的大量示例应用。这些应用是学习CXF极好的资料。 license和readme等文档 (3)将解压路径下的bin目录添加到系统的path环境变量以便操作系统能找到bin目录下的命令方便以后使用CXF提供的小工具。 (4)为了在项目中使用CXF框架需要将lib文件夹下的jar包添加到项目中。 三.Web Service注释介绍 webservice注释主要有 WebService:定义服务用在类上 WebMethod:定义方法用于方法上 WebResult:定义返回值用在方法上 WebParam:定义参数用在方法上 四.入门案例(maven方法) 1.新建一个maven项目在pom中添加依赖和jetty作为测试的web service的web容器。 xsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd 4.0.0 cn.outofmemory hello-apache-cxf 0.0.1-SNAPSHOT jar hello-apache-cxf http://maven.apache.org 2.2.7 org.apache.cxf cxf-rt-frontend-jaxws ${cxf.version} org.apache.cxf cxf-rt-transports-http ${cxf.version} org.apache.cxf cxf-rt-transports-http-jetty ${cxf.version} org.apache.cxf cxf-rt-ws-security ${cxf.version} org.apache.cxf cxf-rt-ws-policy ${cxf.version} org.apache.cxf cxf-bundle-jaxrs ${cxf.version} javax.ws.rs jsr311-api 1.1.1 org.slf4j slf4j-api 1.5.8 org.slf4j slf4j-jdk14 1.5.8 commons-httpclient commons-httpclient 3.0 commons-io commons-io 2.3 junit junit 4.8.1 test hello-apache-cxf src/main/resources src/main/java ** **/*.java org.mortbay.jetty maven-jetty-plugin / 9000 org.apache.maven.plugins maven-compiler-plugin 1.5 1.5 2.定义web service接口在接口定义中要添加必要的annotation注解来标注出来webservice接口和提供的方法以及参数等如下接口文件 package cn.outofmemory.hello.apache.cxf; import javax.jws.WebMethod; import javax.jws.WebParam; import javax.jws.WebResult; import javax.jws.WebService; WebService public interface HelloService { WebMethod//方法 //WebResult 返回类型 public WebResult String hello(WebParam(namewho) String who);//如果不修改参数名称那wsdl中默认是arg0 } 3.实现接口package cn.outofmemory.hello.apache.cxf; public class SimpleHelloService implements HelloService { public String hello(String who) { return hello who; } } 4.在web容器中运行web Servicepackage cn.outofmemory.hello.apache.cxf; import org.apache.cxf.jaxws.JaxWsServerFactoryBean; public class Server { public static void main(String[] args) throws Exception { JaxWsServerFactoryBean factory new JaxWsServerFactoryBean(); factory.setServiceClass(SimpleHelloService.class); factory.setAddress(http://localhost:9000/ws/HelloService); factory.create(); System.out.println(Server start...); } } 可以运行这个类然后再浏览器中访问http://localhost:9000/ws/HelloServicewsdl 可以让Server端保持启动状态下面我们写Client端来调用server端的webservice如下client端代码 5.客户端代码如下package cn.outofmemory.hello.apache.cxf; import org.apache.cxf.jaxws.JaxWsProxyFactoryBean; public class ServiceClient { public static void main(String[] args) { JaxWsProxyFactoryBean factory new JaxWsProxyFactoryBean(); factory.setServiceClass(HelloService.class); factory.setAddress(http://localhost:9000/ws/HelloService); HelloService helloworld (HelloService) factory.create(); System.out.println(helloworld.hello(outofmemory.cn)); System.exit(0); } }运行client可以得到hello outofmemory.cn的输出。