JDK 6.0中web service的使用浅析
创始人
2024-04-13 03:01:44
0

首先我们来认识一下JDK 6.0中web service,Java 6.0 之后,其中JDK自带有个轻量级的web service 服务器。如果你比较细心一定发现在你安装Java的路径下,有Java webservice 的示例代码。

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

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

package WebServices;

  1. import javax.jws. * ;  
  2. import javax.xml.ws.Endpoint;  
  3. /**  
  4. * @author hecm  
  5. */ 
  6. @WebService(targetNamespace = " http://www.blogjava.net/JAVA-HE " ,   
  7. serviceName = " HelloService " )  
  8. public class WSProvider  
  9. {  
  10. // @WebResult(name = "Greetings") // 自定义该方法返回值在WSDL中相关的描述  
  11.  
  12. @WebMethod(action = " sayHi " , operationName = " sayHi " )  
  13. public String sayHi(@WebParam(name = " MyName " ) String name)  
  14. {  
  15. return " Hi, " + name; // @WebParam是自定义参数name在WSDL中相关的描述  
  16.  
  17. }  
  18. @Oneway // 表明该服务方法是单向的,既没有返回值,也不应该声明检查异常  
  19.  
  20. @WebMethod(action = " printSystemTime " , operationName = " printSystemTime " )   
  21. // 自定义该方法在WSDL中相关的描述  
  22.  
  23. public void printTime()  
  24. {  
  25. System.out.println(System.currentTimeMillis());  
  26. }  
  27. public static void main(String[] args)  
  28. {  
  29. Thread wsPublisher = new Thread( new WSPublisher());  
  30. wsPublisher.start();  
  31. }  
  32. private static class WSPublisher implements Runnable  
  33. {  
  34. public void run()  
  35. {  
  36. // 发布WSProvider到http: // localhost:8888/hechangmin/WSProvider这个地址,之前必须调用wsgen命令  
  37. // 生成服务类WSProvider的支持类,命令如下:  
  38. // wsgen -cp . WebServices.WSProvider  
  39.  
  40. Endpoint.publish("http://localhost:8888/JAVA-HE/WSProvider", new WSProvider());  
  41. }  
  42. }  


在JDK 6.0中web service建立对应的包,就不用说了。

然后编译文件。

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

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

现在要做的是发布ws到http://localhost:8888/chinajash/WSProvider

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

当然直接运行WSProvider 。

然后输入http://localhost:8888/JAVA-HE/WSProvider?wsdl

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

也就是服务端就OK了。

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

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

http://localhost:8888/JAVA-HE/WSProvider?wsdl

(实际上:和wsimport http://localhost:8888/JAVA-HE/WSProvider?wsdl 一样的效果)

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

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

  1. /*  
  2. * To change this template, choose Tools | Templates  
  3. * and open the template in the editor.  
  4. */ 
  5. package client;  
  6. import net.blogjava.java_he. * ;  
  7. /**  
  8. *  
  9. * @author hecm  
  10. */ 
  11. public class Test {  
  12. public static void main(String args[])  
  13. {  
  14. HelloService hs = new HelloService();  
  15. WSProvider ws = hs.getWSProviderPort();  
  16. System.out.println(ws.sayHi( " hechangmin " ));  
  17. ws.printSystemTime();  
  18. }  

运行这个测试类:

Hi,hechangmin

输出了。

JDK 6.0中web service的使用顺利完成!

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

【编辑推荐】

  1. JDK1.5中新的语言特征浅析
  2. JDK的安装图解与环境变量设置详解
  3. JDK与JRE的关系和path的作用浅谈
  4. JDK、SDK、JRE、JVM概念详解
  5. JDK1.6的十大技术浅谈

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...