javacxf教程_CXF使⽤教程(⼀)——简介以及⼊门案例⼀.简介
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)
(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容器。
4.0.0
cn.outofmemory
hello-apache-cxf
0.0.1-SNAPSHOT
jar
hello-apache-cxf
2.2.7
f
cxf-rt-frontend-jaxws ${cxf.version}
f
cxf-rt-transports-http ${cxf.version}
f
cxf-rt-transports-http-jetty ${cxf.version}
f
cxf-rt-ws-security ${cxf.version}
f
cxf-rt-ws-policy
${cxf.version}
f
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
maven-jetty-plugin
/
9000
org.apache.maven.plugins
maven-compiler-plugin
1.5
1.5
2.定义web service接⼝,在接⼝定义中要添加必要的annotation注解来标注出来webservice接⼝和提供的⽅法,以及参数等,如下接⼝⽂件:
package cn.outofmemory.f;
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(name="who") String who);//如果不修改参数名称,那wsdl中默认是arg0
}
3.实现接⼝:package cn.outofmemory.f;
public class SimpleHelloService implements HelloService {
public String hello(String who) {
return "hello " + who;
}
}
4.在web容器中运⾏web Service:package cn.outofmemory.f;
import f.jaxws.JaxWsServerFactoryBean;
public class Server {
public static void main(String[] args) throws Exception {
JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean();
factory.setServiceClass(SimpleHelloService.class);
factory.setAddress("localhost:9000/ws/HelloService");
System.out.println("");
}
}
可以让Server端保持启动状态,下⾯我们写Client端来调⽤server端的webservice,如下client端代码:5.客户端代码如下:package cn.outofmemory.f;
import f.jaxws.JaxWsProxyFactoryBean;
public class ServiceClient {
public static void main(String[] args) {
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setServiceClass(HelloService.class);
factory.setAddress("localhost:9000/ws/HelloService");
HelloService helloworld = (HelloService) ate();
System.out.println(helloworld.hello("outofmemory"));
下载it(0);
}
}运⾏client,可以得到hello outofmemory的输出。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论