上篇博文我们介绍了Web Service的基本概念,了解它的基本概念之后,我们这篇博文介绍一个开源的WebService框架-Apache CXF,并实现一个HelloWorld实例。

一、开始之前

SOA目前已经成为了人人皆知的热点,SOA是面向服务的架构,SOA的重点在于服务的重用,即Service1+Service2+Service3,所有的组件都是“即插即用”的。SOA是由IBM提倡的架构,希望以“组装电脑”的方式开发软件。SOA涉及到两个重要的技术:

  1. 各种提供服务的组件(web service)
  2. 企业服务总线(Enterprise Service Bus ——> ESB )(后面的博文介绍)

二、CXF介绍

CXF号称是SOA框架,也是Apache旗下的开源框架,由Celtix + XFire这两门经典的框架合成,是一套非常流行的web service框架。提供了对 JAX-WS 全面的支持,并且提供了多种 Binding 、DataBinding、Transport 以及各种 Format 的支持,并且可以根据实际项目的需要,采用代码优先(Code First)或者 WSDL 优先(WSDL First)来轻松地实现 Web Services 的发布和使用。对于CXF的功能特性,以及支持标准,传输方式,不再过多的介绍,大家看一下网上的内容即可。

CXF下载地址:

下载地址

安装CXF+配置:

  1. 下载CXF,将压缩包解压
  2. 找到bin目录,例如:D:\apache-cxf-2.5.9\bin,将这个目录配置到电脑的环境变量的path下。
  3. 验证是否成功。 
    在命令界面dos下,输入wsdl2java,例如: 

可以看到有相应的信息输出,就是我们的命令缺少参数而已,表明可以执行这个命令,已经成功。

三、开发Web Service

1、开发准备

  1. jdk安装
  2. eclipse开发环境
  3. CXF安装+配置

2、服务器端

万事俱备只欠东风,我们先开发服务器端。

1、目录: 

每个WebService组建需要2个部分:接口和实现类。

2、服务器端的代码:

接口:HelloWorld

package com.tgb.ws;

import javax.jws.WebService;

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

实现类:

package com.tgb.ws.impl;

import java.util.Date;
import javax.jws.WebService;
import com.tgb.ws.HelloWorld; @WebService(endpointInterface="com.tgb.ws.HelloWorld",
serviceName="HelloWorldWs")
public class HelloWorldWs implements HelloWorld { @Override
public String sayHi(String name) {
return name + ".您好" + "现在时间是:"
+ new Date();
}
}

接口和实现我们都写好了,下面我们暴露我们的服务:

package service;

import javax.xml.ws.Endpoint;

import com.tgb.ws.HelloWorld;
import com.tgb.ws.impl.HelloWorldWs; public class ServerMain { public static void main(String[] args) { HelloWorld hw = new HelloWorldWs(); //调用EndPoint的publish方法发布WebService
//调用Endpoint的publish方法发布web service 第一个参数为ip地址 ,第二v参数就是服务的提供者
Endpoint.publish("http://192.168.3.3:8989/crazyit", hw); System.out.println("WebService调用成功了");
}
}

运行main方法,我们就可以发现我们暴露的服务了: 

由上图我们已经成功的暴露服务,我们使用了WebService的注解,但是好像我们到现在还没有使用CXF, 为什么呢?

因为WebService是Java的规范,CXF是WebService的实现。

3、服务器端小结

开发服务器端的步骤,总共分为三步: 
(1)开发一个Web Service业务接口。 
该接口要用@WebService修饰 
(2)开发一个Web Service实现类 
实现类也需要用@WebService修改 
(3)使用EndPoint类的静态方法来发布WebService

3、客户端

1、目录 

2、使用CXF生成客户端代码 
首先,新建java项目,在命令行窗口中,切换到此java项目src目录。使用CXF的命令,wsdl2java+服务暴露地址?wsdl 

[注]生成客户端代码时,服务器端一定要运行,否则会保持,如下图: 

3、客户端代码:

package client;

import com.tgb.ws.HelloWorld;
import com.tgb.ws.impl.HelloWorldWs; public class ClientMain { public static void main(String[] args) {
HelloWorldWs hw = new HelloWorldWs();
HelloWorld helloWorld = hw.getHelloWorldWsPort();
System.out.println(helloWorld.sayHi("HelloWorld")); }
}

运行客户端,如下图: 

好的,恭喜你,我们已经成功的调用了我们的服务。

4、客户端小结:

使用CXF开发Web Service客户端得步骤也分三步: 
(1)调用CXF提供的wsdl2java工具 
WSDL-Web Service Definition Language任何语言实现了Web Service,都需要提供、并暴露WSDL文档。 
(2)找到wsdl2java所生成类中,一个继承了Service的类。 
该类的实例可当成工厂使用。 
(3)调用Service子类的实例的getxxxPort方法,返回webService的代理。

总结:

恭喜你,使用CXF开发Web Service的简单实例到此结束。

源码下载

下篇博文,我们深入的讲解WSDL文档。

使用CXF开发简单的Web Service-HelloWorld(二)的更多相关文章

  1. eclipse下开发简单的Web Service

    service部分 在eclipse下新建一个动态web项目 在项目中新建一个service类 编写SayHello类的代码 package org.sunny.service; //包不要引用错了 ...

  2. C#开发和调用Web Service

    http://blog.csdn.net/h0322/article/details/4776819 1.1.Web Service基本概念 Web Service也叫XML Web Service ...

  3. 【Java学习笔记】如何写一个简单的Web Service

    本Guide利用Eclipse以及Ant建立一个简单的Web Service,以演示Web Service的基本开发过程: 1.系统条件: Eclipse Java EE IDE for Web De ...

  4. 最简单的Web Service实现

    概述 这里提供一个最简单的Web Service的实现,基于JAX-WS.除了jdk不需要任何其他jar包,使用Eclipse提供的Web Services Explorer访问服务. 服务端的实现 ...

  5. 用Spring MVC开发简单的Web应用程序

    1 工具与环境 借助Eclipse4.3 + Maven3.0.3构建Java Web应用程序.使用Maven内置的servlet 容器jetty,不需手工集成Web服务器到Eclipse.还帮我们自 ...

  6. 使用JDK自带功能,实现一个简单的Web Service接口发布

    万事开头难,本篇文章的目的就是使用JDK自带的功能,实现一个最简单的Web Service接口的发布. 下图是项目的组成,主要有三个部分,一个接口(WS),一个接口的实现类(WSImp),还有一个接口 ...

  7. Android开发之使用Web Service进行网络编程

    使用Web Service进行网络编程 Android应用通常都是执行在手机平台上.手机系统的硬件资源是有限的,无论是存储能力还是计算能力都有限.在Android系统上开发.执行一些单用户.小型应用是 ...

  8. 用Spring MVC开发简单的Web应用

    这个例子是来自于Gary Mak等人写的Spring攻略(第二版)第八章Spring @MVC中的一个例子,在此以学习为目的进行记录. 问题:想用Spring MVC开发一个简单的Web应用, 学习这 ...

  9. Web Service(二):cxf 实现

    1. cxf简介 Web Services 的一种实现方式. Apache CXF = Celtix + XFire,后更名为 Apache CXF ,简称为 CXF. CXF 继承了 Celtix ...

随机推荐

  1. python入门-简单的文件备份程序

    由于备份的需要,需要经常备份一些重要的文件,但是又不能逐个比较,所以就度了一下,找到了这篇博文,在此表示感谢,下面是python3版的写法,其中有一些改变,重要的改变之处作出了简要注释,完整注释请参考 ...

  2. mysql学习之旅

    1,mysql安装脚本 #!/bin/bash RSYNC='10.39.2.120::wenhui/database/install' CMAKE='cmake-2.8.6.tar.gz' MYSQ ...

  3. Mac安装MySQLdb遇到的坑

    最近项目移植, 再进行virtualenv环境安装的时候遇到mysql-python死活安装失败 首先是这个错误: sh: /usr/local/bin/mysql_config: No such f ...

  4. SQL 添加字段

    制定添加在那个字段后面 ALTER TABLE `szq`.`org_sales_daily` ADD COLUMN `trade_id_onl_count` int(11) NOT NULL DEF ...

  5. 【zznu-夏季队内积分赛3-G】2333

    题目描述 “别人总说我瓜,其实我一点也不瓜,大多数时候我都机智的一批“ 宝儿姐考察你一道很简单的题目.给你一个数字串,你能判断有多少个连续子串能整除3吗? 输入 多实例输入,以EOF结尾,每行一个数字 ...

  6. 转载:【Oracle 集群】RAC知识图文详细教程(七)--Oracle 11G RAC集群安装

    文章导航 集群概念介绍(一) ORACLE集群概念和原理(二) RAC 工作原理和相关组件(三) 缓存融合技术(四) RAC 特殊问题和实战经验(五) ORACLE 11 G版本2 RAC在LINUX ...

  7. APUE学习笔记——10.18 system函数 与waitpid

    system函数 system函数用方便在一个进程中执行命令行(一行shell命令). 用法如下: #include <stdio.h> #include <stdlib.h> ...

  8. (转) MapReduce Design Patterns(chapter 5 (part 1))(九)

    Chapter 5. Join Patterns 把数据保存成一个巨大的数据集不是很常见.例如,用户信息数据频繁更新,所以要保存到关系数据库中.于此同时,web日志以恒定的数据流量增加,直接写到HDF ...

  9. jq的.off解绑事件

    .off( events [, selector ] [, handler ] ) 描述:移除一个事件处理函数 events 类型: String 一个或多个空格分隔的事件类型和可选的命名空间,或仅仅 ...

  10. 【Java实战】源码解析Java SPI(Service Provider Interface )机制原理

    一.背景知识 在阅读开源框架源码时,发现许多框架都支持SPI(Service Provider Interface ),前面有篇文章JDBC对Driver的加载时应用了SPI,参考[Hibernate ...