一 编写jdk的webservice的服务器代码
package com.atguigu.day01_ws.ws;
import javax.jws.WebMethod;
import javax.jws.WebService;
/*
* SEI
* @author Erica
*
*/
@WebService
public interface HelloWS {
@WebMethod
public String sayHello(String name);
}
@WebService 表示这个是一个webservice 的服务端
@WebMethod表示这个是一个webservice 的服务端的方法。
它的实现类如下
package com.atguigu.day01_ws.ws;
import javax.jws.WebService;
@WebService
public class HelloWSImpl implements HelloWS {
@Override
public String sayHello(String name) {
System.out.println("server sayhello() "+name);
return "hello "+name;
}
}
编写webservice 的服务器的注册代码
package com.atguigu.day01_ws.ws.server;
import javax.xml.ws.Endpoint;
import com.atguigu.day01_ws.ws.HelloWSImpl;
public class ServerTest {
public static void main(String[] args) {
String address="http://192.168.0.106:8989/day01_ws/hellows";
Endpoint.publish(address, new HelloWSImpl());
}
}
address地址是发布webservice的服务的地址,客户端可以根据这个地址来访问
运行该main方法,看到该运行台一直是红色的,表明一直在运行。自此服务器已经完成。
二 编写webservice 的客户端
1 得到wsdl文件
得到服务器地址:http://192.168.0.106:8989/day01_ws/hellows 在后面加入?wsdl,得到这个地址http://192.168.0.106:8989/day01_ws/hellows?wsdl,在浏览器输入,得到如下
2 建立一个webservice的客户端工程,并通过wsdl文件生成客户端关于wsdl客户端代码
进入cmd,进入客户端代码src目录下面,输入命令 wsimport -keep 服务器地址?wsdl
会看到生成的客户端代码如下图:
编写客户端调用服务器的代码:
package com.atguigu.day01_ws_client.test;
import com.atguigu.day01_ws.ws.*;
/* 第一步 进入客户端代码 src wsimport -keep http://192.168.0.106:8989/day01_ws/hellows?wsdl
*
*/
public class ClientTest {
/*
* 调用webservice
*
*/
public static void main(String[] args) {
HelloWSImplService factory =new HelloWSImplService();
HelloWSImpl helloWS = factory.getHelloWSImplPort();
System.out.println(helloWS.sayHello("Erica"));
}
}
客户端访问服务端webservice成功!!!
还有另外一种webservice生成客户端代码的方式
把上面浏览器访问wsdl文件保存下来,重命名位.wsdl后缀。放到客户端工程下面
设置tomcat 里面的tcp/ip端口转发,并启动
8080是自己设置的本地端口号
8989是服务器端口号
修改拷贝到客户端工程下面的wsdl文件的地址,因为本地端口设置的是8080,所以改为8080
进入cmd,根据这个wsdl文件,生成客户端代码:
运行客户端程序,访问成功,并且这次有tcp的信息出来
可以看出请求的是post方法,方法体是xml格式的文件,返回的也是xml格式的文件.走的是soap协议。