通过jaxws-ri创建webservice服务端和客户端
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 class HelloWorld {
public String getHello(String name) {
return "Hello " + name + "!";
}
}
十分简单的代码对吧,不过做一个helloworld这个完全够了!不过既然是webservice当然有点不同咯!需要根据jdk5+的特性加入一些@符号的注释。完整代码如下
@WebService
/*
* 如果出现找不到符号
* 在eclipse中按 ctrl+shift+o 导入对应包即可
*/
public class HelloWorld {
public String 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 class Main {
public static void main(String[] args) {
Endpoint.publish("http://localhost:8001/HelloWorld", new HelloWorld());
}
}
写好运行就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方法,能够让你传入一个字符串并返回一个字符串。这是服务端的方法,现在以下代码将实现客户端的调用!
package client; import client.jaxws.HelloWorld;
import client.jaxws.HelloWorldService; public class Main {
public static void main(String[] args) {
HelloWorld hw = new HelloWorldService().getHelloWorldPort();
System.out.println(hw.getHello("agate"));
}
}
在
保证你server.Main正在运行的前提下执行这个client.Main你会发现你的控制栏中出现了”hello agate”的输出。
通过jaxws-ri创建webservice服务端和客户端的更多相关文章
- MyEclipse创建WebService服务端和客户端
1.新建立一个javaWeb项目,一个java类,如图: 2.接下来我们就要将项目中的TestService的这个类生成WebService服务端,选择new Web Service,如图: Next ...
- IDEA创建WebService服务端与客户端
创建服务端 一.file–>new–>project 二.点击next后输入服务端名,点击finish,生成目录如下 三.在 HelloWorld.Java 文件中右击,选 Tools 的 ...
- idea创建WebService服务端和客户端
创建服务端 1.file–>new–>project 2.点击next后输入服务端名,点击finish,生成目录如下 3.在 HelloWorld.Java 文件中右击,选 WebServ ...
- eclipse使用CXF3.1.*创建webservice服务端客户端以及客户端手机APP(一)
eclipse使用CXF3.1.*创建webservice服务端客户端以及客户端手机APP(一) 本篇博客主要包含五个内容: 1.CXF换将搭建以及eclipse配置CXF. 2.eclipse创建w ...
- eclipse使用CXF3.1.*创建webservice服务端客户端以及客户端手机APP(二)
eclipse使用CXF3.1.*创建webservice服务端客户端以及客户端手机APP(二) 接上篇博客,本篇博客主要包含两个内容: 4.使用Android studio创建webservice客 ...
- myeclipse-建立webservice服务端和客户端
一.建立webservice服务端: 1.新建一个web service project,名称为webservice_server截图如下,点击finish. 2.选择工程,点击右键,选择new-&g ...
- swoole创建TCP服务端和客户端
服务端: server.php <?php //创建Server对象,监听 127.0.0.1:9501端口 $serv = new swoole_server("127.0.0 ...
- [gRPC] 在 .NET Core 中创建 gRPC 服务端和客户端
gRPC 官网:https://grpc.io/ 1. 创建服务端 1.1 基于 ASP.NET Core Web 应用程序模板创建 gRPC Server 项目. 1.2 编译并运行 2. 创建客户 ...
- DelphiXE7中创建WebService(服务端+客户端)
相关资料: http://www.2ccc.com/news/Html/?1507.html http://www.dfwlt.com/forum.php?mod=viewthread&tid ...
随机推荐
- SSM框架搭建问题
环境: 1.eclipse Kepler Service Release 2 2.jdk 1.8 64 3.maven 3.5 4.tomcat 8 问题:
- HDU 2089 不要62(数位DP·记忆化搜索)
题意 中文 最基础的数位DP 这题好像也能够直接暴力来做 令dp[i][j]表示以 j 开头的 i 位数有多少个满足条件 那么非常easy有状态转移方程 dp[i][j] = sum{ dp[ ...
- C#程序集系列07,篡改程序集
以下几个方面用来区分不同的程序集:○ 程序集名称:Name○ 程序集版本:Version○ 程序集公匙: Public Token○ 程序集文化:Culture 如果没有很严格地按照上面的几个方面来创 ...
- 如何使用==操作符,Equals方法,ReferenceEquals方法,IEquatable接口比较2个对象
"世界上不会有两片完全相同的树叶",这句话适用于现实世界.而在软件世界中,这句话变成了"世界上必须有两片完全相同的树叶",否则,很多事情无以为继. 当比较2个对 ...
- android中反射机制
本文介绍Android反射机制实现与原理,在介绍之前,要和Java进行比较,所以先看下Java中的反射相关知识: 一.反射的概念及在Java中的类反射 反射主要是指程序可以访问.检测和修改它本身状态或 ...
- Android实例剖析笔记(三)
摘要:点介绍Activity的生命周期,通过一个简单的实验来摸索状态转换的机制 Activity的生命周期 Activity类中有许多onXXX形式的函数可以重载,比如onCreate,onStart ...
- Pycharm配置autopep8让Python代码更符合pep8规范
一.何为pep8? PEP 8官方文档 -- Style Guide for Python Code PEP8中文翻译(转) 二.Pycharm中配置pep8 Pycharm本身是有pep8风格检测的 ...
- wrap ConcurrentDictionary in BlockingCollection
ConcurrentDictionary<int, BlockingCollection<string>> mailBoxes = new ConcurrentDictiona ...
- 如何在JTable中动态添加一行
JTable tbImage = new JTable(5,5);//create a dummy tableDefaultTableModel dtm=(DefaultTableModel)tbIm ...
- iOS:NSDate的主要几种时间形式
NSDate:时间的获取和操作 1.获取当前时间 //获取当前日期 NSDate *date = sender.date; NSLog(@"%@",date); 2.将date转换 ...