1.新建一个JDK开发webservice的服务端maven项目JDKWebServiceServer
2. 定义一个接口,使用@WebService注解标注接口,使用@WebMethod注解标注接口中定义的所有方法
1 package com.study.webservice.ws;
2
3 import javax.jws.WebMethod;
4 import javax.jws.WebService;
5
6 /**
7 * 定义一个接口,使用@WebService注解标注接口,使用@WebMethod注解标注接口中定义的所有方法
8 *
9 */
10 //使用@WebService注解标注IWebService接口
11 @WebService
12 public interface IWebService {
13
14 //使用@WebMethod注解标注IWebService接口中的方法
15 @WebMethod
16 String sayHello(String name);
17
18 @WebMethod
19 String save(String name,String pwd);
20 }
3. 编写接口的实现类,使用@WebService注解标注实现类,实现接口中定义的所有方法
package com.study.webservice.ws.impl;
import javax.jws.WebService;
import com.study.webservice.ws.IWebService;
/**
* 编写接口的实现类,使用@WebService注解标注实现类,实现接口中定义的所有方法
*
*/
//使用@WebService注解标注IWebService接口的实现类WebServiceImpl
@WebService
public class WebServiceImpl implements IWebService {
@Override
public String sayHello(String name) {
System.out.println("WebService sayHello "+name);
return "sayHello "+name;
}
@Override
public String save(String name, String pwd) {
System.out.println("WebService save "+name+", "+pwd);
return "save Success";
}
}
4. 使用Endpoint(终端)类发布webservice
package com.study.webservice.ws.publish;
import javax.xml.ws.Endpoint;
import com.study.webservice.ws.impl.WebServiceImpl;
/**
* 使用Endpoint(终端)类发布webservice
*
*/
public class WebServicePublish {
public static void main(String[] args) {
//定义WebService的发布地址,这个地址就是提供给外界访问Webervice的URL地址,URL地址格式为:http://ip:端口号/xxxx
//String address = "http://192.168.152.1:8989/";这个WebService发布地址的写法是合法的
//String address = "http://192.168.152.1:8989/Webservice";这个WebService发布地址的是合法的
String address = "http://192.168.152.1:8989/WS_Server/Webservice";
//使用Endpoint类提供的publish方法发布WebService,发布时要保证使用的端口号没有被其他应用程序占用
Endpoint.publish(address , new WebServiceImpl());
System.out.println("发布webservice成功!");
}
}
6. 启动主程序WebServicePublish,效果如下
7.在浏览器中输入地址http://192.168.152.1:8989/WS_Server/Webservice?wsdl,可看到webservice发布成功
1. 新建一个JDK开发webservice的客户端maven项目JDKWebServiceClient
2. 借助jdk的wsimort.exe工具生成客户端代码,wsimort.exe工具位于Jdk的bin目录下
3. 执行命令:wsimport -keep url(url为wsdl文件的路径)生成客户端代码。
打开命令行窗口,切换到src/main/java目录,执行"wsimport -keep http://192.168.152.1:8989/WS_Server/Webservice?wsdl"生成客户端代码,如下图所示:
4. 借助生成的代码编写调用WebService对外提供的方法
package com.study.webservice.ws.client;
import com.study.webservice.ws.impl.WebServiceImpl;
import com.study.webservice.ws.impl.WebServiceImplService;
/**
* 调用WebService的客户端
*
*/
public class WSClient {
public static void main(String[] args) {
//创建一个用于产生WebServiceImpl实例的工厂,WebServiceImplService类是wsimport工具生成的
WebServiceImplService factory = new WebServiceImplService();
//通过工厂生成一个WebServiceImpl实例,WebServiceImpl是wsimport工具生成的
WebServiceImpl wsImpl = factory.getWebServiceImplPort();
//调用WebService的sayHello方法
String resResult = wsImpl.sayHello("小不点");
System.out.println("调用WebService的sayHello方法返回的结果是:"+resResult);
System.out.println("---------------------------------------------------");
//调用WebService的save方法
resResult = wsImpl.save("小不点","123");
System.out.println("调用WebService的save方法返回的结果是:"+resResult);
}
}
5. 启动客户端主程序WSClient,效果如下
1.新建一个使用CXF框架开发webservice的服务端maven项目CXFWebServiceServer
2. 在pom.xml中引入相关依赖
UTF-8
3.1.4
org.apache.cxf
cxf-rt-frontend-jaxws
${cxf.version}
org.apache.cxf
cxf-rt-transports-http
${cxf.version}
org.apache.cxf
cxf-rt-transports-http-jetty
${cxf.version}
2. 定义一个接口,使用@WebService注解标注接口
package com.study.webservice.ws;
import javax.jws.WebService;
/**
* 定义一个接口,使用@WebService注解标注接口
*
*/
//使用@WebService注解标注IWebService接口
@WebService
public interface IWebService {
String sayHello(String name);
String save(String name,String pwd);
}
3. 编写接口的实现类,使用@WebService注解标注实现类,实现接口中定义的所有方法,注意代码标红色的地方
package com.study.webservice.ws.impl;
import javax.jws.WebService;
import com.study.webservice.ws.IWebService;
/**
* 编写接口的实现类,使用@WebService注解标注实现类,实现接口中定义的所有方法
*
*/
//使用@WebService注解标注IWebService接口的实现类WebServiceImpl
@WebService(serviceName = "IWebService",
endpointInterface = "com.study.webservice.ws.IWebService"
)
public class WebServiceImpl implements IWebService {
@Override
public String sayHello(String name) {
System.out.println("WebService sayHello "+name);
return "sayHello "+name;
}
@Override
public String save(String name, String pwd) {
System.out.println("WebService save "+name+", "+pwd);
return "save Success";
}
}
4. 使用CXF的JaxWsServerFactoryBean发布webservice
package com.study.webservice.ws.publish;
import org.apache.cxf.jaxws.JaxWsServerFactoryBean;
import com.study.webservice.ws.IWebService;
import com.study.webservice.ws.impl.WebServiceImpl;
/**
* 使用CXF的JaxWsServerFactoryBean发布webservice
*
*/
public class WebServicePublish {
public static void main(String[] args) {
//定义WebService的发布地址,这个地址就是提供给外界访问Webervice的URL地址,URL地址格式为:http://ip:端口号/xxxx
//String address = "http://192.168.152.1:8989/";这个WebService发布地址的写法是合法的
//String address = "http://192.168.152.1:8989/Webservice";这个WebService发布地址的是合法的
String address = "http://192.168.152.1:8989/WS_Server/Webservice";
//使用Endpoint类提供的publish方法发布WebService,发布时要保证使用的端口号没有被其他应用程序占用
/*Endpoint.publish(address , new WebServiceImpl());*/
JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean();
factory.setServiceClass(IWebService.class);
//服务发布地址
factory.setAddress(address);
factory.setServiceBean(new WebServiceImpl());
factory.create();
System.out.println("发布webservice成功!");
}
}
5. 启动服务端主程序WebServicePublish
6. 在浏览器中输入地址http://192.168.152.1:8989/WS_Server/Webservice?wsdl,可看到webservice发布成功
1. 新建一个使用CXF框架开发webservice的客户端maven项目CXFWebServiceClient
2. 在pom.xml中引入相关依赖
UTF-8
3.1.4
org.apache.cxf
cxf-rt-frontend-jaxws
${cxf.version}
org.apache.cxf
cxf-rt-transports-http
${cxf.version}
3. 借助jdk的wsimort.exe工具生成客户端代码,wsimort.exe工具位于Jdk的bin目录下
4. 执行命令:wsimport -keep url(url为wsdl文件的路径)生成客户端代码。
打开命令行窗口,切换到src/main/java目录,执行"wsimport -keep http://192.168.152.1:8989/WS_Server/Webservice?wsdl"生成客户端代码,如下图所示:
5. 使用CXF的JaxWsProxyFactoryBean调用WebService的服务端
package com.study.webservice.ws.client;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
import com.study.webservice.ws.IWebService;
/**
* 使用CXF的JaxWsProxyFactoryBean调用WebService的服务端
*
*/
public class WSClient {
public static void main(String[] args) {
JaxWsProxyFactoryBean jwpfb = new JaxWsProxyFactoryBean();
jwpfb.setServiceClass(IWebService.class);
String address = "http://192.168.152.1:8989/WS_Server/Webservice";
jwpfb.setAddress(address);
IWebService hs = (IWebService) jwpfb.create();
//调用WebService的sayHello方法
String resResult = hs.sayHello("小不点");
System.out.println("调用WebService的sayHello方法返回的结果是:"+resResult);
System.out.println("---------------------------------------------------");
//调用WebService的save方法
resResult = hs.save("小不点","123");
System.out.println("调用WebService的save方法返回的结果是:"+resResult);
}
}
6.启动客户端主程序,效果如下:
源代码获取地址:
https://github.com/leeSmall/WebService
参考文章:
http://www.cnblogs.com/xdp-gacl/p/4259481.html
https://www.cnblogs.com/luangeng/p/6575061.html