目录

JAX-WS之旅一

JAX-WS之旅(一)

JAX-WS 之旅 ( 一 )

——作者: Angel

注意:

1> 需要开发工具 Eclipse

2> 有注解编程的基础

3>JDK 需要 1.6 以上

4> 附带完整源码

5> 学习的时候建议和作者起相同的名称

6> 测试环境 Window Xp

7>图片在附件中。

资源参考:

目录

[1. 什么是WebService

.

1](/admin/blogs/#_Toc306194909)

[2. 为什么需要WebService

.

2](/admin/blogs/#_Toc306194910)

[3. 主流WebService 框架

2](/admin/blogs/#_Toc306194911)

[4

利用JAX-WS 开发Web 服务

2](/admin/blogs/#_Toc306194912)

1.

什么是 WebService

Web Service 是有企业发布的完成其特定商务需求的在线应用服务,其他公司或者应用软件可以能够通过 Internet 来访问这项在线服务。

更多资源访问:

2.

为什么需要 WebService

我们知道如果我们要把一个桌面程序发布成 web 程序的话,在以前并不是一件很简单的事情,当然在最早的时候有一项分布式开发技术 RMI 技术就实现了桌面程序 web 化。现在使用 WebService 就能够很简单的解决这个问题。其次使用 WebService 能够让两门语言进行通信,也就是说,你可以服务端是 Java 语言,而客户端是其他语言,比如 Rubby 语言。

当然以上只是简单的说明,如果要连接更多的 webService 还需要您自己细心的体会。

3.

主流 WebService 框架

Axis2 ——全称 Apache EXtensible Interaction System 即阿帕奇可扩展交互系统。

JAX-WS —— Java API for XML Web Services (JAX-WS) 是 Java 程序设计语言一个用来创建 Web 服务的 API 。

等等。

更多资源:

4

. 利用 JAX-WS 开发 Web 服务

接下来将以一个实例讲解 JAX-WS 。

在讲解之前我们大体了解下要开发一个 JAX-WS 的步骤:

(1) 编写能够发布成 webservice 的接口

(2) 实现接口,并指定客户端访问的 WSDL ( Web Service Description Language )服务名

(3) 发布服务

( 4 )编写客户端访问

第一步:启动工具

打开开发工具 Eclipse ,这一步对于编程人员都是 very easy 的一件事件,直接过。

第二步:新建工程 ( 演示工程名为 WebService)

新建一个 Java Project. 相信能够学习 WebService 这项技术的人,这个应该不是问题。为了照顾一些部分家人,我们还是稍微讲讲,会的家人这步可以跳过。

【菜单栏】

【 File 】

【 New 】

【 Project 】

【 Java Project 】

– 【 Next 】输入【 Project name 】

【 Finish 】。

这样我们就创建了一个工程。

图示:

完成的效果图:

第三步:建包(演示包为 webservice )

在刚才建立的工程建立包结构。

操作如下:

点击工程 src 目录【右键】

【 New 】

【 package 】

【输入包名】

【 Finish 】。

第四步:新建接口 ( 演示接口名为 IMyServer)

在刚才建立的包下新建一个接口。

代码如下:

package

webservice;

import

javax.jws.WebService;

/**

接口类

@author

Administrator

*/

@WebService

// 此代码说明该接口可以进行 Web 化

public

interface

IMyServer {

/**

在接口里有一个获取作者姓名的方法

@param

name: 姓名

@return

:String

*/

public

String getMyName(String name);

}

注:此接口和我们平时写接口是一样的,只是增加了一条

@WebService 这样的代码,这条代码的主要作用是允许我们这个接口交给 WebService 进行管理。

第五步:实现接口(演示实现类名为 MyServerImpl )

让我们写一个实现我们刚才接口的类,写法和我们平时的大差不差。

代码如下:

package

webservice;

import

javax.jws.WebService;

// 以下这句代码的作用是:定义客户端访问的 WSDL 服务名

@WebService

(endpointInterface =

“webservice.IMyServer”

)

public

class

MyServerImpl implements

IMyServer{

@Override

public

String getMyName(String name) {

// TODO

Auto-generated method stub

System. out

.println(

“Called by the client”

);

return

“Hello,”

+name+

“,I’m happy to learn webservice with you.”

;

}

}

注意:这个实现类比一般实现类多了以下代码:

@WebService

(endpointInterface =

“webservice.IMyServer”

)

这句代码作用是:定义客户端访问的 WSDL 服务名

webservice 是包名 ,IMyServer 是接口。

现在的文件目录结构如下:

第六步:发布服务(演示名为: PublishServer )

我们需要将我们的类进行发布。

代码如下:

package

webservice;

import

javax.xml.ws.Endpoint;

/**

此类的作用是:发布我们要让客户端访问的类

@author

Administrator

*/

public

class

PublishServer {

/**

启动程序

@param

args

*/

public

static

void

main(String[] args) {

/*

参数说明:

第一个参数

http

:127.0.0.1:2011

这是

url 地址,需要指定端口

第二个参数 new MyServerImpl()

这个就是我们要让客户端访问的实现类

不能是接口(嘎嘎,接口也不允许 new 呀。)

*/

Endpoint. publish (

“http://127.0.0.1:2011/myweb”

, new

MyServerImpl());

System. out

.println(

“The Server is started.”

);

}

}

文件目录结构图:

让我们运行 PublishServer

运行成功之后控制台显示:

这表示发布成功了,我们可以打开浏览器进行访问(因为是 web ,所以网页当然能访问了,嘎嘎)

【打开浏览器】

在地址栏输入

【 】

效果图:

至此说明以上操作基本上是没有问题了。

第七步:编写客户端程序(演示名为 MyClient )

用浏览器访问并不是我们的最终目的,我们是希望通过 Java 代码去访问服务器。那么接下来让我们编写一下客户端程序。

代码如下:

package

webservice;

import

java.net.MalformedURLException;

import

java.net.URL;

import

javax.xml.namespace.QName;

import

javax.xml.ws.Service;

public

class

MyClient {

/**

启动程序

@param

args

@throws

MalformedURLException

*/

public

static

void

main(String[] args) throws

MalformedURLException {

// 服务 URL

URL url

new

URL(

“http://127.0.0.1:2011/myweb”

);

/*

参数说明:

第一参数: http://webservice/

服务的 URI

第二个参数: MyServerImplService

在 WSDL 发布的服务名,这个名称是你的

实现类 连接上 Service

*/

QName qname = new

QName(

“http://webservice/”

,

“MyServerImplService”

);

// 创建服务

Service service = Service. create ( url , qname);

// 提取服务端口

IMyServer myServer = service.getPort(IMyServer. class

);

// 调用方法

System. out

.println(myServer.getMyName(

" 林祥纤 "

));

}

}

文件目录结构:

运行 MyClient:

Dos 窗口显示接口:

注意:服务端不可关闭。

伸伸懒腰,终于可以闭灯休息了。

先告一小段落吧。

源码附上