快速业务通道

实战JDK 6.0自带web service - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17

实战JDK 6.0自带web service

时间:2011-04-05 BlogJava -274°C

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 StringsayHi(@WebParam(name =  " MyName " )Stringname)   {      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)   {     ThreadwsPublisher =  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("http://localhost:8888/JAVA- HE/WSProvider", new WSProvider());    }   } }

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

然后编译文件。

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

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

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

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

当然直接运行WSProvider 。

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

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

也就是服务端就OK了。

实战JDK 6.0自带web service(2)

时间:2011-04-05 BlogJava -274°C

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

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

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

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

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

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

/* *Tochangethistemplate,chooseTools|Templates *andopenthetemplateintheeditor.  */ package client; import net.blogjava.java_he. * ; /** * * @author hecm  */ public  class Test{    public  static  void main(Stringargs[])   {     HelloServicehs =  new HelloService();     WSProviderws = hs.getWSProviderPort();     System.out.println(ws.sayHi( " hechangmin " ));     ws.printSystemTime();   } }

运行这个测试类:

Hi,hechangmin

输出了。顺利完成!

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

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号