最近两天自己简单了解了一下关于WebService的知识,在此做下笔记,以备今后查找。
环境:Windows 7、JDK 1.6.25
1.首先建立Web工程JWS,创建包com.project.ws.
2.新建接口IWebService.java,代码如下:
package com.project.ws;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;
@WebService(targetNamespace="http://ws.project.com")
@SOAPBinding(style = SOAPBinding.Style.RPC)
public interface IWebService {
@WebMethod(action="toGetName",operationName="toGetName",exclude=false)
@WebResult(name="returnName")//自定义该方法返回值在WSDL中相关的描述
public String getName(@WebParam(name="name")String name);//获取名字
@WebMethod(action="toGetResult",operationName="toGetResult",exclude=false)
@WebResult(name="returnResult")
public int getResult(@WebParam(name="a")int a,@WebParam(name="b")int b);//求和
}
3.新建类WebServiceServer.java并实现IWebService接口,代码如下:
package com.project.ws;
import javax.jws.WebService;
@WebService(endpointInterface = "com.project.ws.IWebService")
public class WebServiceServer implements IWebService {
/**
* 获取名称
*/
public String getName(String name) {
if("huawuying".equals(name)){
return "花无影";
}else{
return name;
}
}
/**
* 获取计算结果
*/
public int getResult(int a, int b) {
return (a+b);
}
}
4.新建发布WebService类WebService.java,代码如下:
/**
* 服务发布类
*/
package com.project.ws;
import javax.xml.ws.Endpoint;
/**
* @author Administrator
* @category 发布服务
*/
public class WebService {
public static void main(String[] args){
try{
WebServiceServer server = new WebServiceServer();
Endpoint.publish("http://127.0.0.1:8080/JWS", server);
System.out.println("WebService发布成功!");
}catch(Exception e){
System.out.println("发布WebService发生异常!"+e.getMessage());
}
}
}
5.编写客户端调用类WSClient.java,代码如下:
package com.project.ws;
import java.net.MalformedURLException;
import java.net.URL;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
public class WSClient {
public static void main(String[] args){
try {
URL url = new URL("http://127.0.0.1:8080/JWS/?wsdl");
// 第一个参数是服务的URI
// 第二个参数是在WSDL发布的服务名//此处QName参数说明:param1[IWebService中指定的targetNamespace命名空间URI];param2[IWebService实现类名称+Service] 此处为本人参考JDK API文档所添加的注释,如有错误,请各位指正。
QName qname = new QName("http://ws.project.com/","WebServerService"); // 创建服务
Service service = Service.create(url, qname);
// 提取端点接口,服务“端口”。
IWebService webService = service.getPort(IWebService.class);
System.out.println(webService.getName("huawuying"));
System.out.println(webService.getResult(15, 20));
} catch (MalformedURLException e) {
System.out.println("调用WebService发生异常!"+e.getMessage());
e.printStackTrace();
}
}
}
6、运行WebService.java发布WebService服务,再运行WSClient.java,掉用服务端进行测试输出。
参考:http://web.chinaitlab.com/web/874096.html
PS:由于本人水平有限,文中如有不足指出,还请各位指正。