zoukankan      html  css  js  c++  java
  • webServices学习二(小试牛刀。jdk 方式发布一个应用)

    一、前提

      1.用Jdk1.6.0_21以后的版本发布一个WebService服务.
      2.与Web服务相关的类,都位于javax.jws.*包中。
     1.主要类有:
      1.@WebService - 它是一个注解,用在类上指定将此类发布成一个ws.
      2.Endpoint – 此类为端点服务类,它的方法publish用于将一个已经添加了@WebService注解对象绑定到一个地址的端口上。
     
    如何发布一个web服务:
     1 package cn.leaf.two;
     2 import java.util.Date;
     3 import javax.jws.WebMethod;
     4 import javax.jws.WebService;
     5 import javax.xml.ws.Endpoint;
     6 /**
     7  * 发布第一个web服务
     8  * @author 王健
     9  */
    10 @WebService
    11 public class OneService{
    12     //以下方法由于是final的,所以不会对外公开
    13     public final String sayHi(String name){
    14         return name+",你好,现在时间是:"+new Date();
    15     }
    16     //通过exclude=true,设置在发布时不包含此方法
    17     @WebMethod(exclude=true)
    18     public String sayHi1(String name){
    19         return name+",你好,现在时间是:"+new Date();
    20     }
    21     public String sayHi2(String name){
    22         return name+",你好,现在时间是:"+new Date();
    23     }
    24     public static void main(String[] args)  throws Exception{
    25         //发布服务
    26         Endpoint end = Endpoint.publish("http://127.0.0.1:9999/one",new OneService());
    27         System.out.println(“服务发布成功”);
    28                   Thread.sleep(2000);
    29                   end.stop();
    30     }
    31 }
        l1、在类上添加@WebService注解。
        •这是jdk1.6提供的一个注解。它位于:javax.jws.*包中。
        l2、通过EndPoint(端点服务)发布一个webService。
        •Endpoint也是jdk提供的一个专门用于发布服务的类,它的publish方法接收两个参数,一个是本地的服务地址,二是提供服务的类。它位于javax.xml.ws.*包中。
        •static Endpoint.publish(String address, Object implementor)
     在给定地址处针对指定的实现者对象创建并发布端点。
        •stop方法用于停止服务。
        •EndPoint发布完成服务以后,将会独立的线程运行。所以,publish之后的代码,可以正常执行。
    l其他注意事项:
        •给类添加上@WebService注解后,类中所有的非静态方法都将会对外公布。
        •不支持静态方法,final方法。-
        •如果希望某个方法(非static,非final)不对外公开,可以在方法上添加@WebMethod(exclude=true),阻止对外公开。
        •如果一个类上,被添加了@WebService注解,则必须此类至少有一个可以公开的方法,否则将会启动失败。
     
     
     
     
     二、服务发布成功了,如何调用呢?请看说明书-WSDL:
        l在地址栏输入(注意后面的参数?wsdl)
        •http://127.0.0.1:9999/helloworld?wsdl
        l目前不是访问webService,只是获取一个用于描述WebService的说明文件,即:wsdl文件.
          lwsdl- WebService Description Language,是以XML文件形式来描述WebService的”说明书”,有了说明书,我们才可以知道如何使用或是调用这个服务.
     

    1:在MyEclipse中新建立一个项目.在此项目中,将调用另一个项目中发布的WebService

    2:步骤如下:

      1:首先要根据http://127.0.0.1:9999/helloworld?wsdl获取WebService的使用说明书.

             2:在Jdk的当前版本下,Jdk1.6.0_24,通过wsimport这个工具来生成远程调用的源代码.(建议生成扩展名为.java的文件)

             3:在本项目中,通过调用生成代码的形式调用远程服务.成功返回”helloWorld”.

    三、生成java代码 (使用说明说)-----使用wsimport生成本地调用代码:

       

    wsimport是jdk自带的,可以根据wsdl文档生成客户端调用代码的工具.当然,无论服务器端的WebService是用什么语言写的,都将在客户端生成Java代码.服务器端用什么写的并不重要.
    wsimport.exe位于JAVA_HOMEin目录下.
    常用参数为:
    -d<目录>  - 将生成.class文件。默认参数。
    -s<目录> - 将生成.java文件。
    -p<生成的新包名> -将生成的类,放于指定的包下。
    (wsdlurl) - http://server:port/service?wsdl,必须的参数。
    示例:
    C:/> wsimport –s . http://192.168.0.100/one?wsdl
    注意:-s不能分开,-s后面有个小点,用于指定源代码生成的目录。点即当前目录。
    
    如果使用了-s参数则会在目录下生成两份代码,一份为.class代码。一份为.java代码。
    .class代码,可以经过打包以后使用。.java代码可以直接Copy到我们的项目中运行

    7:wsimport其他参数说明,我们经常使用的参数为-d,-s,-p

    -d<目录>将会生成.class文件.

    示例:wsimport –d . http://127.0.0.1:9999/helloworld?wsdl

    -s<目录>将会生成.java文件.

    示例:wsimport –s . http://127.0.0.1:9999/helloworld?wsdl

    -p<包名>将生成的文件(.java或是.class修改成指定的包名)

    示例:wsimport -s . -p com.beijing.itcast http://127.0.0.1:9999/helloworld?wsdl

    对于-p参数,注意包名的修改,它将所生成类,全部置于通过-p指定的包下.(演示)

    需要说明的是,当仅使用-p参数时,它也将同时使用-d即编译成.class文件. –d参数写或不写,它都在那里,不离不弃.

     生成以后代码如下图所示:
       ----生成两份代码,一份是java 另一个份是.classs.  把java 文件放在自己的项目中,对照着wsdl找到文件 应该如何调用
     
  • 相关阅读:
    1058 A+B in Hogwarts (20)
    1036. Boys vs Girls (25)
    1035 Password (20)
    1027 Colors in Mars (20)
    1009. Product of Polynomials (25)
    1006. Sign In and Sign Out
    1005 Spell It Right (20)
    1046 Shortest Distance (20)
    ViewPager页面滑动,滑动到最后一页,再往后滑动则执行一个事件
    IIS7.0上传文件限制的解决方法
  • 原文地址:https://www.cnblogs.com/mengyuxin/p/5066251.html
Copyright © 2011-2022 走看看