主要参考文章:http://www.cnblogs.com/lee0oo0/archive/2013/01/25/2876357.html
主要流程如下:
百度一下即可,网上有中文破解版
注意选择jax-ws和jax-rs(rest)有较大的区别,建议选择jax-ws,更加傻瓜,便于上手。
举例如下:
package webservice_jax_ws;
public class helloworld {
// 以jax-ws的形式创建web service,并发布到tomcat上
public String getMyName(){
return "chen";
}
public float add(float a,float b){
return a+b;
}
}
点击上方图标,选择这个new web service, 选择从java类中创建web service,进入下一个界面,选择generate wsdl in project,其余默认即可。
然后启动tomcat,我选择的是tomcat7,启动成功后点击上方图标中的部署项目,
即可将刚才的webservice发布到tomcat上,如下;
可以在控制台边上的server中进行tomcat和项目的启动、重新部署等操作,右键项目可以打开open in browser,打开平台自带的浏览器,或者自己打开电脑上的浏览器,输入图片中的网址,可以看到欢迎界面。
我们在上面的网址后面加上helloworldPort(就是你的java类名+Port),选择进入。就可以看到下面的界面:
这就说明webservice发布成功了,点击wsdl可以看到项目信息。下面我们来看看刚才的2个方法在网页上的演示效果:
点击这个按钮,打开webservice测试服务,
一开始进入的是UDDI的界面,点击右上角的WSDL page,进入WSDL界面:
测试一下我们的加法函数,输入2个变量的值,点击go,下方会显示方法的返回值。
到此,项目在tomcat的部署工作已经完成。下面讲一下如何在本地调用服务器上的webservice
首先新建一个java工程,注意,此时不需要webservice工程了,只要一个普通的java 工程即可。还是选择工具栏上的如下图标:
这次不选择web service 了,而是选择web service client,即客户端应用。一路next,进入如下界面:
在WSDL URL中选择刚才发布上去的网址,注意tomcat服务器必须保持开启状态,也就是此网址必须能够接通,否则将无法连接应用。如果服务器已经断开,那么之前保存在本地的wsdl文件就派上用场了
我们可以选择使用wsdl file进行连接,找到上一个项目的地址,在webROOT\web-inf中找到之前保存的wsdl文件,也可以成功连接上。
连接完成后,会在当前项目下出现上一个项目的package:
如图所示,我们只需要引入之前的包中类,注意helloworld这个类已经没有了,取而代之的是 helloworldService 和 helloworldDelegate 这2个类,我们调用原先helloworld这个类中的方法时,需要先将 helloworldService 实例化。
然后在用 helloworldService 中的 gethelloworldPort() 这个方法来实例化 helloworldDelegate这个类。最终原先类中的 2个方法都属于 helloworldDelegate 中。
代码如下:
package client_jax_ws;
import webservice_jax_ws.HelloworldDelegate;
import webservice_jax_ws.HelloworldService;
public class test_webservice_on_client {
// 从tomcat上得到相关的web service
public static void main(String[] args) {
// TODO 自动生成的方法存根
// 需要要实例化service,在用 getPort 方法实例化代理服务
HelloworldService myservice = new HelloworldService();
HelloworldDelegate abc = myservice.getHelloworldPort();
System.out.println(abc.getMyName());
System.out.println(abc.add(1.2f, 2.5f));
}
}
运行后控制台成功打印结果如下:
有一点问题就是,上图中的结果是我在使用wsdl url连接得到的,如果使用本地的wsdl file 进行连接,则会报错,目前还不清楚是什么原因