你好,游客 登录 注册 搜索
背景:
阅读新闻

WebService入门之CXF教程

[日期:2014-11-25] 来源:Linux社区  作者:longshengguoji [字体: ]

1.CXF简介

Apache CXF是一个开源的Service框架,可以用于简化用户的service开发,基于CXF开发的应用可提供SOAP、XML/HTTP、RESTFUL HTTP或CORBA等服务。CXF底层页可以使用不同的传输协议,包括HTTP、JMS或JBI等。

根据CXF官方的说明,CXF包含以下特性:

支持大量的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.    说了这么多,下面来看看如何使用CXF。

2.CXF下载和安装

下载并安装CXF步骤如下:

(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包添加到项目中。

3.使用CXF开发web service

由于是初学,这里先写一个最简单的hello world。

(1)eclipse下创建一个新的java项目CXFTest

(2)把CXF解压缩目录下bin文件夹中的jar包添加到项目中

(3)在src目录下新建一个package包,命名为test,然后新建一个接口HelloWorld.java,源码为:

package test;

import javax.jws.WebService;

@WebService
public interface HelloWorld
{
 public String sayHello(String name);
}

(4)在test包中创建HelloWorld接口的实现类HelloWorldImpl,代码为:

package test;

import javax.jws.WebService;

@WebService
public class HelloWorldImpl implements HelloWorld
{

 @Override
 public String sayHello(String name)
 {
 
  System.out.println("sayHello方法被调用");
  return ("Hello"+name);
 
 }

}

(5)创建主类MainServer,用来发布webservice

package test;


import javax.xml.ws.Endpoint;


import org.apache.cxf.endpoint.Server;
import org.apache.cxf.jaxws.JaxWsServerFactoryBean;


public class MainServer
{


 public static void main(String[] args)
 {
//  //第一种发布方式:通过CXF提供的JaxWsServerFactoryBean来发布webservice
//  JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean();
//  factory.setServiceClass(HelloWorldImpl.class);
//  factory.setAddress("http://localhost:8080/HelloWorld");
// 
//  Server server = factory.create();
//  server.start();
 
  //第二种方式,通过JAX-WS提供的Endpoint来发布webservice
  //首先创建webservice服务提供类的实例
  HelloWorldImpl implementor = new HelloWorldImpl();
  String address = "http://localhost:8080/HelloWorld";
  Endpoint.publish(address, implementor);

 }

}

执行服务端代码,可以看到eclipse输出如下,说明webservice成功发布

WebService入门之CXF教程

在浏览器输入如下地址http://localhost:8080/HelloWorld?wsdl,可以访问该webservice服务的WSDL

(6)创建调用webservice的客户端代码

package test;

import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;

public class HelloWorldClient
{

 public static void main(String[] args)
 {
  JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
  factory.setAddress("http://localhost:8080/HelloWorld");
  factory.setServiceClass(HelloWorld.class);
  HelloWorld helloWorld = (HelloWorld) factory.create();
  System.out.println(helloWorld.sayHello("zhuwei"));

 }

}

就可以通过客户端访问webservice服务了。

Apache CXF快速入门基础教程 http://www.linuxidc.com/Linux/2014-05/101383.htm

Apache CXF实战 http://www.linuxidc.com/Linux/2012-05/59887.htm

Apache CXF 的详细介绍请点这里
Apache CXF 的下载地址请点这里

本文永久更新链接地址http://www.linuxidc.com/Linux/2014-11/109830.htm

linux
相关资讯       CXF 
本文评论   查看全部评论 (2)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款
第 2 楼
* 匿名 发表于 2017/3/23 16:07:47
2.7版本可以用jdk6,3.1版本要用jdk7
第 1 楼
* 匿名 发表于 2017/3/23 16:10:30
有用