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服务端和客户端的更多相关文章

  1. MyEclipse创建WebService服务端和客户端

    1.新建立一个javaWeb项目,一个java类,如图: 2.接下来我们就要将项目中的TestService的这个类生成WebService服务端,选择new Web Service,如图: Next ...

  2. IDEA创建WebService服务端与客户端

    创建服务端 一.file–>new–>project 二.点击next后输入服务端名,点击finish,生成目录如下 三.在 HelloWorld.Java 文件中右击,选 Tools 的 ...

  3. idea创建WebService服务端和客户端

    创建服务端 1.file–>new–>project 2.点击next后输入服务端名,点击finish,生成目录如下 3.在 HelloWorld.Java 文件中右击,选 WebServ ...

  4. eclipse使用CXF3.1.*创建webservice服务端客户端以及客户端手机APP(一)

    eclipse使用CXF3.1.*创建webservice服务端客户端以及客户端手机APP(一) 本篇博客主要包含五个内容: 1.CXF换将搭建以及eclipse配置CXF. 2.eclipse创建w ...

  5. eclipse使用CXF3.1.*创建webservice服务端客户端以及客户端手机APP(二)

    eclipse使用CXF3.1.*创建webservice服务端客户端以及客户端手机APP(二) 接上篇博客,本篇博客主要包含两个内容: 4.使用Android studio创建webservice客 ...

  6. myeclipse-建立webservice服务端和客户端

    一.建立webservice服务端: 1.新建一个web service project,名称为webservice_server截图如下,点击finish. 2.选择工程,点击右键,选择new-&g ...

  7. swoole创建TCP服务端和客户端

    服务端: server.php <?php //创建Server对象,监听 127.0.0.1:9501端口    $serv = new swoole_server("127.0.0 ...

  8. [gRPC] 在 .NET Core 中创建 gRPC 服务端和客户端

    gRPC 官网:https://grpc.io/ 1. 创建服务端 1.1 基于 ASP.NET Core Web 应用程序模板创建 gRPC Server 项目. 1.2 编译并运行 2. 创建客户 ...

  9. DelphiXE7中创建WebService(服务端+客户端)

    相关资料: http://www.2ccc.com/news/Html/?1507.html http://www.dfwlt.com/forum.php?mod=viewthread&tid ...

随机推荐

  1. 配置NGINX支持中文URL 中文文件名称或文件夹404无法訪问的解决方法

    NGINX不须要象apache那样要单独载入支持中文模块. # cat /etc/sysconfig/i18n  LANG="en_US.UTF-8" SYSFONT=" ...

  2. merge into优化sql(转)

    使用Merge INTO优化SQL,性能提升巨大 分类: Oracle 2017-04-13 10:55:07   说说背景:开发有个需求,需要对新加的一个字段根据特定的业务逻辑更新数据.TPS_TR ...

  3. Major GC 是清理老年代。 Full GC 是清理整个堆空间—包括年轻代和老年代。

    Major GC 是清理老年代. Full GC 是清理整个堆空间—包括年轻代和老年代.

  4. arcgis10.5新功能图形缓冲

    摘要 在输入要素周围某一指定距离内创建缓冲区多边形.在要素周围生成缓冲区时,大部分制图形状对缓冲区末端(端头)和拐角(连接)可用. 插图  

  5. DocumentManager在标签位置显示气泡框 z

    关于DevExpress DockManager下的DocumentManager头部标签如何显示气泡框,类似Visual studio那样显示文件的路径,如下图所示,------- 方式很简单,从工 ...

  6. java单个方法达到了65536字节的限制

    可以使方法更小的一件事是关闭调试.打开调试时,每一行(带代码)都有一个标记该行的语句. 不.重构代码.没有方法应该那么久.永远. Write small methods! 说真的:任何IDE都会指导您 ...

  7. MAC 10.10 开机登录无敌风火轮问题解决方式

    查明是第三方输入法引起的问题,我用的是搜狗输入法.所以把搜狗卸载就好了.(注意是卸载,不是单纯的从输入源里移除) 操作的思路是,首先要进入计算机,才干进行操作. 办法是开机进入单机模式,删除苹果一个文 ...

  8. C++代码文件名标准化处理工具

    工具功能:批量处理C++代码文件,将C++代码文件名中大写字母改为下划线+小写字母. 为了方便代码在不同平台下的移植,代码文件命名规范为:不使用大写字母,单词之间用下划线间隔开.为此写了这个小工具,将 ...

  9. chromium中的性能优化工具syzyProf

    函数性能分析工具SyzyProf 我先开始介绍SyzyProf.这个工具可以捕获每个线程调用每个函数执行的时间,然后把结果生成一个KCacheGrind能够识别的数据格式文件,然后通过KCacheGr ...

  10. 遇到Elements in iteration expect to have 'v-bind:key' directives.' 这个错误

    解决方式一:更改VS Code编辑器的vetur配置 错误提示: [vue-language-server] Elements in iteration expect to have 'v-bind: ...