WebService是一种跨平台、跨语言的规范。解决远程、跨平台、跨语言应用之间的调用。
JAX-WS(Java API for XML-Web Services)规范是一组XML web services的JAVA API。
二、服务端
1、接口
package com.xilen.ws;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
/**
* Web服务的接口:SEI(Service EndPoint Interface)
* 接口需要添加注解@WebService
*/
@WebService
public interface UserInfoService {
/**
* 接口方法,提供的具体服务
* 通过注解可以指定消息元素的名称为自定义,取代默认的如arg0等
*/
@WebResult(name="checkReturn")
public String check(@WebParam(name="userName")String userName, @WebParam(name="userPass")String userPass);
}
2、实现
package com.xilen.ws;
import javax.jws.WebService;
/**
* Web服务的实现:SIB(Service Implementation Bean)
* 实现需要注解@WebService,并指定实现的接口
*/
@WebService(endpointInterface="com.xilen.ws.UserInfoService", serviceName="UserInfoServiceImplService")
public class UserInfoServiceImpl implements UserInfoService{
@Override
public String check(String userName, String userPass) {
return "Check [ userName:" + userName + "; userPass:" + userPass + " ]";
}
}
3、发布
package com.xilen.ws;
import javax.xml.ws.Endpoint;
public class WsStart {
public static void main(String[] args) {
String address = "http://127.0.0.1:8888/userinfo";
/**
*通过Endpoint的静态方法publish()实现发布
*传入服务的地址和服务的实现对象
*/
Endpoint.publish(address, new UserInfoServiceImpl());
}
}
4、查看
当浏览器访问发布地址得到如下图时成功发布
三、客户端
1、准备
通过wsimport生成WS调用的相关文件,如下:
D:\>wsimport -d D:\JavaWorks\WebServices\JAX-WS_Init_Client\src -keep -verbose http://127.0.0.1:8888/userinfo?wsdl
2、调用
package com.xilen;
import com.xilen.ws.UserInfoService;
import com.xilen.ws.UserInfoServiceImplService;
public class WsClient {
public static void main(String[] args) {
/**
* 在生成的Java类中,继承javax.xml.ws.Service的类可视为一个工厂
* 这个类是的名称即服务端WS实现中注解的serviceName,同时也是wsdl文档definitions中的name
*/
UserInfoServiceImplService uisis = new UserInfoServiceImplService();
//通过这个工厂的实例获取服务接口的代理
UserInfoService uis = uisis.getUserInfoServiceImplPort();
//通过这个接口实现远程调用
System.out.println(uis.check("admin", "12345"));
}
}
3、结果
Check [ userName:admin; userPass:12345 ]
四、补充
wsimport参数:
-d dirName : 指定生成的文件的目录
-p pkgName : 指定自定义的包名,不指定则默认服务端的包名
-keep : 指定是否生成.java的源文件
-verbose : 指定是否显示生成过程的信息
wsdlUrl : 指定wsdl文档的url
五、下载
http://download.youkuaiyun.com/detail/u013379717/7254335