zoukankan      html  css  js  c++  java
  • 通过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”的输出。

    完整源码下载

  • 相关阅读:
    Python读写ini文件
    MySQL 让主键id 从1开始自增
    python 找字符串中所有包含字符的下标
    centos7防火墙命令
    如何将npm升级到最新版本
    将 Npm 的源替换成淘宝的源
    MySQL 时间格式化/ MySQL DATE_FORMAT
    Python中crypto模块进行AES加密和解密
    windows环境下python3安装Crypto
    Nginx+PHPSTORM+Xdebug 配置
  • 原文地址:https://www.cnblogs.com/sprinng/p/4884765.html
Copyright © 2011-2022 走看看