java6开发webservice详解

java6开发webservice详解

<!-- /info -->

本文将向大家讲述如何使用java6自带的webservice功能进行ws开发。

废话不多说,用实例说明问题:

环境:eclipse3.2     jdk6     本例中没有用到web容器

1.服务端代码

服务1

  
  1. package com.jlqu.count.service;  
  2.  
  3. import javax.jws.WebService;  
  4.  
  5. /**   
  6. * Java6开发WebService  
  7. */   
  8. @WebService   
  9. public class J6WS1 {   
  10.     //WS中的业务方法   
  11.     public String echo(String str) {   
  12.         return "J6WS1>echo:"+str;   
  13.     }   

服务2

  
  1. package com.jlqu.count.service;  
  2.  
  3. import javax.jws.WebService;  
  4.  
  5. /**   
  6. * Java6开发WebService  
  7. */   
  8. @WebService   
  9. public class J6WS2 {   
  10.     //WS中的业务方法   
  11.     public String echo(String str) {   
  12.         return "J6WS2>echo:"+str;   
  13.     }   

新建Publish类用来发布服务

 

  
  1. package com.jlqu.count.service;  
  2.  
  3. import javax.jws.WebService;   
  4. import javax.xml.ws.Endpoint;   
  5.  
  6. /**   
  7. * Java6开发WebService  
  8. * Exception in thread "main" com.sun.xml.internal.ws.model.RuntimeModelerException: runtime modeler error: Wrapper class com.ws.jaxws.DoSomething is not found. Have you run APT to generate them?解决办法:apt com/jlqu/count/service/Java6WebService.java  
  9. */   
  10. @WebService   
  11. public class Publish {   
  12.     public static void main(String[] args) {   
  13.         //java6提供了api级别的发布方式   
  14.         Endpoint.publish("http://127.0.0.1:6016/axis/com.jlqu.count.service.J6WS1"new J6WS1());  
  15.         Endpoint.publish("http://127.0.0.1:6016/axis/com.jlqu.count.service.J6WS2"new J6WS2());  
  16.     }   

运行该main方法,发布服务。

这个时候在浏览器中输入http://127.0.0.1:6016/axis/com.jlqu.count.service.J6WS1?wsdl就会看到wsdl了

这里要注意一点,如果报Exception in thread "main" com.sun.xml.internal.ws.model.RuntimeModelerException: runtime modeler error: Wrapper class com.ws.jaxws.DoSomething is not found. Have you run APT to generate them?

解决办法是使用apt编译 

apt com/jlqu/count/service/J6WS1.java

apt com/jlqu/count/service/J6WS2.java
 

2.

Java6自带了生成WebService客户端代码工具,同样的,生成前要启动服务端,即运行上面的main方法,具体用法:
 

在dos下输入

wsimport -p com.jlqu.count.service.wsclient  -keep http://127.0.0.1:6016/axis/com.jlqu.count.service.J6WS1?wsdl

wsimport -p com.jlqu.count.service.wsclient  -keep http://127.0.0.1:6016/axis/com.jlqu.count.service.J6WS2?wsdl

成功后在com.jlqu.count.service包下会多出个文件夹wsclient,里面就是生成的客户端文件了

 

3.接下来就可以写个测试用例来测一下了

新建一个junit4的类,具体测试代码如下:

  
  1. /**  
  2.      *   
  3.      * 测试Java6 WS  
  4.      */ 
  5.     @Test 
  6.     public void testJ6WS() {  
  7.         //创建一个客户端服务对象   
  8.         J6WS1 j6WS1 = new J6WS1Service().getJ6WS1Port();  
  9.         //调用服务方法,并得到方法返回值   
  10.         String ret1 = j6WS1.echo("你好!java6的web服务!");   
  11.         System.out.println(ret1);  
  12.         J6WS2 j6WS2 = new J6WS2Service().getJ6WS2Port();  
  13.         String ret2 = j6WS2.echo("看到我,你的web服务就成功了!");  
  14.         //打印服务的返回值   
  15.         System.out.println(ret2);  
  16.     } 

OK!控制台输出了 

J6WS1>echo:你好!java6的web服务!
J6WS2>echo:看到我,你的web服务就成功了!

你可能感兴趣的:(xml,Web,webservice,dos,sun)