java cxf教程_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)

(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:schemaLocation="http://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(name="who") 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 Service:package 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/HelloService?wsdl

可以让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的输出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值