通过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 ...
随机推荐
- Automate Screen or Button Taps via Tasker : Simulating keypress events
When using Tasker, sometimes we want to do some automation on screen e.g. screen or button taps. At ...
- PJ Naughter CSerialPort
来自:http://www.codeproject.com/Articles/382/CSerialPort-v-Serial-Port-Wrapper 源码下载 Features Simple an ...
- [Unity Editor]10行代码搞定Hierarchy排序
在日常的工作和研究中,当给我们的场景摆放过多的物件的时候,Hierarchy面板就会变得杂乱不堪.比如这样: 过多的层次结构充斥在里面,根层的物件毫无序列可言,整个层次面板显示非常的杂乱不堪,如 ...
- Google In-App Billing 实现(内含Unity 实现经验)
实现内购计费 傻逼目录 Adding the AIDL file Updating Your Manifest Creating a ServiceConnection Making In-app ...
- iOS中alloc与init
面向对象的3大特性,封装继承和多态. 我遇到过封装相关的问题,因为初级封装简单,常常暴露出被你封装的接口,进一步进行高级封装隐藏接口的时候才发现,封装是一门学问,而这门学问得从最基础的alloc与in ...
- 怎么上传自己的代码/项目到自己的github仓库上
创建新的git仓库 设置新仓库 创建完成后 复制git地址 现在已经有window git客户端了(地址:https://desktop.github.com/),但还是建议用git命 ...
- springboot 启动类CommandLineRunner(转载)
在Spring boot项目的实际开发中,我们有时需要项目服务启动时加载一些数据或预先完成某些动作.为了解决这样的问题,Spring boot 为我们提供了一个方法:通过实现接口 CommandLin ...
- 在Spark上运行TopK程序
1. scala程序如下 package com.cn.gao import org.apache.spark.SparkConf import org.apache.spark.SparkConte ...
- Java数据库编程技术
1. 建立数据库连接 例1.1 使用JDBC-ODBC桥来连接一个Access数据库. 该数据库的名称为FirstExample,在ODBC数据源中的名称为forStudy,用户名和密码均为空. pa ...
- data-stream-as-disjoint-intervals
https://leetcode.com/problems/data-stream-as-disjoint-intervals/ /** * Definition for an interval. * ...