最近一直在项目组和其他公司做接口,应项目的需求,需要开发webservice接口,于是乎在网上google了一大堆资料和例子,包括axis2,xfire,cxf等等,由于比较紧急没有来得及深入研究,现就java6原生支持webservice的使用做一番记录,以备参考。
测试环境
Eclipse,jdk1.6
首先,jdk的版本要升级到6.0,在eclipse中新建一个java project 工程,工程名我使用service,具体目录参照下图
新建一个普通类JavaService.java代码如下
package cn.com.wsm.service;
import javax.jws.WebService;
import javax.xml.ws.Endpoint;
@WebService
public class JavaService
{
public String doSomething(String s)
{
System.out.println(s);
return "Hello " + s +" !";
}
public static void main(String[] args)
{
Endpoint.publish("http://10.41.109.41:8888/service/", new JavaService());
}
}
截图如下
这里的URL是自己指定的,必须以“/”结束
现在点击运行,OK,可以测试我的webservice了
在浏览器中输入http://10.41.109.41:8888/service/?wsdl
可以看到如下文档
Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.1.6 in JDK 6.
-->
Generated by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.1.6 in JDK 6.
-->
这表明我的service是正确的。
把截图附上
下一步开始编写客户端的调用
首先需要在命令行下进入工程的src目录
运行如下命令
wsimport -p cn.com.wsm.client -keep http://10.41.109.41:8888/service/?wsdl
可以看到有如下输出
parsing WSDL...
generating code...
compiling code...
看到以上信息表明成功了
把图附上
此时返回工程包视图,可以看到,刚才的操作生成了许多类,这些类在指定的cn.com.wsm.client包中
现在开始编写客户端Client.java代码如下
package cn.com.wsm.service;
import cn.com.wsm.client.JavaService;
import cn.com.wsm.client.JavaServiceService;
public class Client
{
/**
* @param args
*/
public static void main(String[] args)
{
JavaService javaService = new JavaServiceService().getJavaServicePort();
String s = javaService.doSomething("wsm");
System.out.println(s);
}
}
注意这里的两个类引用,必须是client包中对应的类
import cn.com.wsm.client.JavaService;
import cn.com.wsm.client.JavaServiceService;
OK,编译运行Client.java
输出 Hello wsm !
测试成功。
这只是一个简单的例子,还没来得及深入研究,在此备忘。