webservice入门之CXF教程

简介:

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.Web Service注释介绍

webservice注释主要有:
@WebService:定义服务,用在类上
@WebMethod:定义方法,用于方法上
@WebResult:定义返回值,用在方法上
@WebParam:定义参数,用在方法上

4.使用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成功发布
在浏览器输入如下地址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服务了。

相关文章
|
Java Maven
Springboot整合CXF发布WebService
Springboot整合CXF发布WebService
Springboot整合CXF发布WebService
|
Java Maven Spring
SSM(四)WebService 入门详解
webservice这个不知道大家首次接触的时候是怎么理解的,反正我记得我当时第一次接触这个东西的时候以为又是一个XX框架,觉得还挺高大上。然而这一切在之后我使用过后才发现这些全都是YY。 那么webservice到底是什么呢,根据我自己的理解:简单来说就像是一个公开的接口,其他系统不管你是用什么语言来编写的都可以调用这个接口,并可以返回相应的数据给你。就像是现在很多的天气应用,他们肯定不会自己去搞一个气象局之类的部门去监测天气,大多都是直接调用一个天气接口,然后返回天气数据,相关应用就可以将这些信息展示给用户了。
|
XML Java API
彻底了解|利用Apache CXF框架开发WebService
前言WebService是为了支持网络的机器间操作交互而设计用来开发分布式的交互操作的应用程序组件,通常被定义为一组模块化的API,他们可以通过网络进行调用,来执行远程系统的请求服务,而...
309 0
|
XML Dubbo Java
WebService |学习笔记
快速学习 WebService
140 0
WebService |学习笔记
|
Apache 网络架构
SpringBoot整合cxf发布webService
1. 看看项目结构图 2. cxf的pom依赖 1 2 org.apache.cxf3 cxf-spring-boot-starter-jaxws4 3.2.45 3.
2056 0
|
JavaScript Java 网络架构
|
Web App开发 Java Apache
随笔记,一些WebService知识
CXF Apache CXF = Celtix + XFire,开始叫 Apache CeltiXfire,后来更名为 Apache CXF 了,以下简称为 CXF。CXF 继承了 Celtix 和 XFire 两大开源项目的精华,提供了对 JAX-WS 全面的支持,并且提供了多种 Binding 、DataBinding、Transport 以及各种 Format 的支持
2321 0

热门文章

最新文章

相关实验场景

更多