利用jdk 工具构建webservice 的server 和 client
2016-04-07 18:42
525 查看
1、写个实体类:
2、jdk提供的工具wsgen, 产生sei(service endpoint interface),利用编译的类生成wsdl 、webservice 、xsd,
wsgen -cp <classpath> com.example.soap.Hello -s <source file directory> -wsdl -r <wsdl directory>
3、在WEB-INF 下新建sun-jaxws.xml文件:
注意如果出现java.lang.ClassNotFound:com.sun.xml.ws.transport.http.servlet.WSServlet, 请添加jar ,如果是maven项目 可以通过坐标引入jar:
二、通过wsdl 文件生成客户端代码:
新建一个java项目,将刚才生成的wsdl 和 xsd 文件拷贝到项目根路径/wsdl/HelloService.wsdl, /wsdl/HelloService_schema1.xsd,执行cmd命令:
wsimport -keep -s src wsdl/HelloService.wsdl
刷新java项目可以看到已经生成了客户端java文件,需要修改生成的service类的URL 将wsdlLocation 和URL 定义都修改为 http协议的(比如http://localhost:8080/helloSOAP/HelloService?wsdl)
新建一个类,测试是否能够调用service 端的方法:
@WebService public class Hello { @WebMethod public String sayHello(String name){ return "Hello, "+name; } }
2、jdk提供的工具wsgen, 产生sei(service endpoint interface),利用编译的类生成wsdl 、webservice 、xsd,
wsgen -cp <classpath> com.example.soap.Hello -s <source file directory> -wsdl -r <wsdl directory>
3、在WEB-INF 下新建sun-jaxws.xml文件:
<?xml version="1.0" encoding="UTF-8"?> <endpoints xmlns='http://java.sun.com/xml/ns/jax-ws/ri/runtime' version='2.0'> <endpoint name='Hello' implementation='com.example.soap.Hello' url-pattern='/HelloService' /> </endpoints>4、在web.xml中添加如下配置:
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <servlet> <servlet-name>Hello</servlet-name> <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class> <load-on-startup>2</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Hello</servlet-name> <url-pattern>/HelloService</url-pattern> </servlet-mapping> </web-app>5、然后部署到web server (比如tomcat)上, 启动服务后,访问http://localhost:8080/helloSOAP/HelloService?wsdl 可以看到之前定义的服务都已经以xml 方式表示出来。
注意如果出现java.lang.ClassNotFound:com.sun.xml.ws.transport.http.servlet.WSServlet, 请添加jar ,如果是maven项目 可以通过坐标引入jar:
<dependency> <groupId>com.sun.xml.ws</groupId> <artifactId>jaxws-rt</artifactId> <version>2.2.10</version> </dependency>比较原始的构建webservice 的方法到此结束。
二、通过wsdl 文件生成客户端代码:
新建一个java项目,将刚才生成的wsdl 和 xsd 文件拷贝到项目根路径/wsdl/HelloService.wsdl, /wsdl/HelloService_schema1.xsd,执行cmd命令:
wsimport -keep -s src wsdl/HelloService.wsdl
刷新java项目可以看到已经生成了客户端java文件,需要修改生成的service类的URL 将wsdlLocation 和URL 定义都修改为 http协议的(比如http://localhost:8080/helloSOAP/HelloService?wsdl)
新建一个类,测试是否能够调用service 端的方法:
public class WSDLClientTest { public static void main(String[] args) { HelloService service = new HelloService(); Hello hello = service.getHelloPort(); System.out.println(hello.sayHello("webservice.")); } }最后可以成功调用。
相关文章推荐
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- android之定时器AlarmManager
- GUI - Web前端开发框架
- Extjs4.0 最新最全视频教程
- MyEclipse Web Project转Eclipse Dynamic Web Project
- axis备忘
- Erlang实现的一个Web服务器代码实例
- 防止网页脚本病毒执行的方法-from web
- 自学成才的秘密:115个 web Develop 资源
- 使用批处理修改web打印设置笔记 适用于IE
- Apache Web让JSP“动”起来
- web下载的ActiveX控件自动更新
- 推荐六款WEB上传组件性能测试与比较第1/10页
- 关于三种主流WEB架构的思考
- Windows XP Service Pack 3 RC1 v.3244 winxp补丁3 提供下载
- Run As Service runassrv.exe 详细参数第1/2页
- 安装MySQL在最后的start service停住了解决方法
- 使用 Iisext.vbs 列出 Web 服务扩展文件的方法