jax ws ri 生成java类_通过jaxws-ri创建webservice服务端和客户端

本文介绍了如何使用JAX-WS RI生成Java类并创建WebService服务端和客户端。首先,下载JAX-WS RI,配置环境变量,然后在Eclipse中创建Java工程并实现服务类。通过wsgen生成服务端Stub类,Endpoint.publish发布服务。接着,使用wsimport生成客户端Stub类,最后编写客户端应用实现RPC调用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 获得开发包

当然是到 SUN 的开发网站下载 JAX-WS RI,或者下载我的网盘备份 ,下载下来的只是一个jar包,参考官网上的方法在命令行调用:

java -jar JAXWS2.1.2-20070917.jar

//注:这里根据你下的版本不同jar包的名字也会不同

这时候会在调用这条命令的文件夹下生成一个文件夹,里头包括了bin、lib、doc等。其中bin中的有两个重要的生成工具!

2. 配置

在你的机器中配置好环境变量JAXWS_HOME以及在Path环境变量中加入%JAXWS_HOME%/bin

3. Start

部署基本完成了,开动我们的eclipse吧!创建一个java工程,导入jaxws下lib中的所有jar包到构建空间中。

4. 实现第一个服务类

让我们建一个包(名字随便啦!)我用server包,在里头建立一个HelloWorld.java类,代码如下:

public classHelloWorld {publicString getHello(String name) {return "Hello " + name + "!";

}

}

十分简单的代码对吧,不过做一个helloworld这个完全够了!不过既然是webservice当然有点不同咯!需要根据jdk5+的特性加入一些@符号的注释。完整代码如下

@WebService/** 如果出现找不到符号

* 在eclipse中按 ctrl+shift+o 导入对应包即可*/

public classHelloWorld {publicString getHello(String name) {return "Hello " + name + "!";

}

}

5. 接下来就是生成服务端所需使用的stub类了。

(庆幸这个完全由jaxws-ri工具包中的bin下的wsgen.bat批处理命令完成了)。我们现在需要的是在工程根目录下建立一个genServer.bat文件(当然也可以进到当前目录下的cmd中进行操作)。

键入下列命令:(dos中相同)

wsgen -cp bin server.HelloWorld -s src -d bin

请注意这里的

-cp 代表你项目的class编译文件存放的位置

(这里的server.HelloWorld就是那个服务类的类全名)

-s 代表你将把生成的stub类的源代码放置到的目录

-d 代表你将把生成的stub编译好的class放置到的目录

6. 发布服务

执行后刷新eclipse中的工程,你将发现多了一个包,以及包中的那些stub类。说明服务器端所需的准备已经完成了,你只需要的是把webservice启动起来(说白了是吧wsdl注册到URL上) 。

在server包中建立一个Main.java(只是为了启动罢了,名字随便)代码如下:

public classMain {public static voidmain(String[] args) {

Endpoint.publish("http://localhost:8001/HelloWorld", newHelloWorld());

}

}

写好运行就ok了!不信?登录 http://localhost:8001/HelloWorld?wsdl

就知道了!看看是不是出现了SOAP的xml节目了?

7. 客户端根据WSDL获取SOAP的服务描述

首先我们知道,一般来说,先要有服务才能调用对吧!但是有什么服务呢?我们需要问一下发布服务的网址,他会给出一个SOAP格式描述的服务来给我们参照实现自己的调用类。

你会说哇!我没学过这些我怎么知道怎么写客户端的stub类啊?(呵呵,我也没学过,我不是也写好了吗)其实啊!是jaxws-ri的另一个生成工具即:wsimport.bat这个命令让这些操作一步完成,自动生成了所以需要的客户端stub类。使用方式如下:

建立genClient.bat(同genws,你也可以在工程目录的cmd下执行)

wsimport -s src -d bin -p client.jaxws http://localhost:8001/HelloWorld?wsdl

再刷新eclipse中的工程,是不是又有一个包出来了?那个就是你的本地包了,RPC全靠它啦!

8. 建立客户端的应用来实现RPC

这里是最后一步了!你将看到如何在客户端调用WebService中提供的方法!

还记得我们前面写的那个HelloWorld类吗?他有个getHello方法,能够让你传入一个字符串并返回一个字符串。这是服务端的方法,现在以下代码将实现客户端的调用!

packageclient;importclient.jaxws.HelloWorld;importclient.jaxws.HelloWorldService;public classMain {public static voidmain(String[] args) {

HelloWorld hw= newHelloWorldService().getHelloWorldPort();

System.out.println(hw.getHello("agate"));

}

}

保证你server.Main正在运行的前提下执行这个client.Main你会发现你的控制栏中出现了”hello agate”的输出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值