·天新网首页·加入收藏·设为首页·网站导航
数码笔记本手机摄像机相机MP3MP4GPS
硬件台式机网络服务器主板CPU硬盘显卡
办公投影打印传真
家电电视影院空调
游戏网游单机动漫
汽车新车购车试驾
下载驱动源码
学院开发设计
考试公务员高考考研
业界互联网通信探索
您现在的位置:天新网 > 软件开发 > Java开发 > Servlet/JSP
实战 JDK 6.0 自带web service
http://www.21tx.com 2009年01月22日 Blog -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了。

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

  首先选择项目,右键新建 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的时候也许并不能顺利访问。

上一篇: JSTL和EL开发JSP页面的优势及实现
下一篇: 在WebSphere sMash中集成Java和PHP

关于我们 | 联系我们 | 加入我们 | 广告服务 | 投诉意见 | 网站导航
Copyright © 2000-2011 21tx.com, All Rights Reserved.
晨新科技 版权所有 Created by TXSite.net