Chinaunix首页 | 论坛 | 博客
  • 博客访问: 377466
  • 博文数量: 1051
  • 博客积分: 53280
  • 博客等级: 大将
  • 技术积分: 6670
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-09 13:21
文章分类

全部博文(1051)

文章存档

2011年(1)

2008年(1050)

我的朋友

分类:

2008-09-09 16:33:36

  JAVA 6.0 之后,其中JDK自带有个轻量级的web service 。如果你比较细心一定发现在你安装java的路径下,有java webservice 的示例代码。

  我以前也用java开发过web service ,但是当初用了一个apache 下axis 开源项目。如果axis夜进化了,反正我不认识了。不过java自带有何必舍近求远呢。今天我就把自己创建的最简单java webservice 范例过程记录下来,与大家分享。

  我用的是netbeans 6,首先建立一个java 应用程序工程,名为WebServices。建立一个服务端程序。

  package WebServices;   import javax.jws. * ;   import javax.xml.ws.Endpoint;   /**   * @author hecm   */   @WebService(targetNamespace = " http://www.blogjava.net/JAVA-HE " ,
serviceName = " HelloService " )   public class WSProvider   {   // @WebResult(name = "Greetings") // 自定义该方法返回值在WSDL中相关的描述   @WebMethod(action = " sayHi " , operationName = " sayHi " )   public String sayHi(@WebParam(name = " MyName " ) String name)   {   return " Hi, " + name; // @WebParam是自定义参数name在WSDL中相关的描述   }   @Oneway // 表明该服务方法是单向的,既没有返回值,也不应该声明检查异常   @WebMethod(action = " printSystemTime " , operationName = " printSystemTime " )
// 自定义该方法在WSDL中相关的描述   public void printTime()   {   System.out.println(System.currentTimeMillis());   }   public static void main(String[] args)   {   Thread wsPublisher = new Thread( new WSPublisher());   wsPublisher.start();   }   private static class WSPublisher implements Runnable   {   public void run()   {   // 发布WSProvider到http: // localhost:8888/hechangmin/WSProvider这个地址,之前必须调用wsgen命令   // 生成服务类WSProvider的支持类,命令如下:   // wsgen -cp . WebServices.WSProvider   Endpoint.publish("", new WSProvider());   }   }   }

  当然建立对应的包,就不用说了。

  然后编译文件。

  进入命令提示符下,进入classes目录,运行:wsgen -cp . WebServices.WSProvider

  可以看到将刚才的class 生成了几个java文件和class文件。

  现在要做的是发布ws到

  而实际上的动作就是:Endpoint.publish("",new WSProvider());

  当然直接运行WSProvider 。

  然后输入?wsdl

  就已经查看到生成的wsdl (webservice 描述语言)。

  也就是服务端就OK了。

  保持运行。编写一个客户端:

  首先选择项目,右键新建 web服务客户端。其中ws url填入刚才生成的wsdl地址:

  ?wsdl

  (实际上:和wsimport ?wsdl 一样的效果)

  产生一个效果:在classes下 按照 之前指定的名字空间产生的包下(目录结构)生成了7个帮助class。

  然后我们建立一个包 client 建立文件:

  /*   * To change this template, choose Tools | Templates   * and open the template in the editor.   */   package client;   import net.blogjava.java_he. * ;   /**   *   * @author hecm   */   public class Test {   public static void main(String args[])   {   HelloService hs = new HelloService();   WSProvider ws = hs.getWSProviderPort();   System.out.println(ws.sayHi( " hechangmin " ));   ws.printSystemTime();   }   }

  运行这个测试类:

  Hi,hechangmin

  输出了。顺利完成!

  一点个人经验,你发布的地址最好写成可配置。还有就是wsdl 中会严格按照你指定的url来访问,比如你指定的127.0.0.1 那么你用本机IP的时候也许并不能顺利访问。

【责编:Chuan】

--------------------next---------------------
  /*   * To change this template, choose Tools | Templates   * and open the template in the editor.   */   package client;   import net.blogjava.java_he. * ;   /**   *   * @author hecm   */   public class Test {   public static void main(String args[])   {   HelloService hs = new HelloService();   WSProvider ws = hs.getWSProviderPort();   System.out.println(ws.sayHi( " hechangmin " ));   ws.printSystemTime();   }   }

--------------------next---------------------

阅读(101) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~