实战JDK6.0自带webservice,第1张

实战JDK6.0自带webservice,第2张

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("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",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 建立测试文件:
  /*
  * 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的时候也许并不能顺利访问。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 实战JDK6.0自带webservice

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情