1、WebService工作原理-SOAP
?????? 当客户端调用一个WebService的方法时,首先将方法名称和需要传递的参数包装成XML,也就是SOAP包,通过HTTP协议传递到服务器端,然后服务器端解析这段XML,得到被调用的方法名称和传递过来的参数,进而调用WebService相应的方法,方法执行完毕后,将返回结果再次包装为XML,也就是SOAP响应,发送到客户端,最后客户端解析这段XML,最终得到返回结果。
2、WebService实现
?????? 创建WebService 项目
?????????????

?????? 创建WebService类
[java]
?
package service;?
?
import javax.jws.WebMethod;?
import javax.jws.WebService;?
import javax.xml.ws.Endpoint;?
??
@WebService?
public class Hello {?
?????
??? @WebMethod(operationName="sayHello1")?
??? public String sayHello(String userName)?
??? {?
??????? return "Hello,"+userName+"!";?
??? }?
?????
??? @WebMethod(operationName="sayHello2")?
??? public String sayHello(){?
??????? return "Hello World!";?
??? }?
??? public static void main(String[] args){?
??????? //将WebService发布到指定地址??
??????? Endpoint.publish("http://192.168.24.170:8888/WebServiceTest/Hello",new Hello());????????????
??? }?
}?
??
??package service;
??
??import javax.jws.WebMethod;
??import javax.jws.WebService;
??import javax.xml.ws.Endpoint;
??
??@WebService
??public class Hello {
???
???@WebMethod(operationName="sayHello1")
???public String sayHello(String userName)
???{
????return "Hello,"+userName+"!";
???}
???
???@WebMethod(operationName="sayHello2")
???public String sayHello(){
????return "Hello World!";
???}
???public static void main(String[] args){
????//将WebService发布到指定地址
????Endpoint.publish("http://192.168.24.170:8888/WebServiceTest/Hello",new Hello());???
???}
??}
?
?????? 编译Hello.java
?????????????

?????? 测试WebService是否发布成功
?????????????
?????????????
?????? 使用wsimport 生成客户端?
???

?????????? 使用如下:wsimport -p client -keep???????????????
???????????? 这时,会在当前目录中生成如下文件:
?????????????
?

?????? 创建客户端类[java]
public class HelloClient {?
??????????? public static void main(String args[]) {????
??????????????? HelloService service = new HelloService();????
??????????????? Hello helloProxy = service.getHelloPort();????
??????????????? String hello = helloProxy.sayHello1("世界");?
??????????????? System.out.println(hello);?
??????????????? String hello1 = helloProxy.sayHello2("");?
??????????????? System.out.println(hello1);??
??????????? }?
??????? }?
?????????
public class HelloClient {
???public static void main(String args[]) {??
????HelloService service = new HelloService();??
????Hello helloProxy = service.getHelloPort();??
????String hello = helloProxy.sayHello1("世界");
????System.out.println(hello);
????String hello1 = helloProxy.sayHello2("");
????System.out.println(hello1);
???}
??}
??
????????????? 运行结果如下
?????????????
?
