一、准备工作(以下为本实例使用工具)
1、MyEclipse10.7.1
2、JDK 1.6.0_22
二、创建服务端
1、创建【Web Service Project】,命名为【TheService】。
2、创建【Class】类,命名为【ServiceHello】,位于【com.hyan.service】包下。
这里需要注意两点
1.引包
2.@WebService注释
package com.hyan.servie; import javax.jws.WebService; import javax.xml.ws.Endpoint; @WebService public class ServiceHello { public String getValue(String name){ return "我叫"+name; } /** * @param args */ public static void main(String[] args) { // Todo Auto-generated method stub String uri = "http://localhost:9001/Service/ServiceHello"; Endpoint.publish(uri, new ServiceHello()); System.out.println("service success:"+uri); } }
4、进行编译
说明:编译失败的话,请将该项目引用的jdk设置为1.6.0_17版本或更高版本
5、测试结果
测试地址:http://localhost:9001/Service/ServiceHello?wsdl
This XML file does not appear to have any style @R_282_4045@ion associated with it. The document tree is shown below. <!-- Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.2.4-b01. --> <!-- Generated by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.2.4-b01. --> <deFinitions xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://www.w3.org/ns/ws-policy"xmlns:wsp1_2="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsam="http://www.w3.org/2007/05/addressing/Metadata" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"xmlns:tns="http://servie.hyan.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://servie.hyan.com/" name="ServiceHelloService"> <types> <xsd:schema> <xsd:import namespace="http://servie.hyan.com/" schemaLocation="http://localhost:9001/Service/ServiceHello?xsd=1"/> </xsd:schema> </types> <message name="getValue"> <part name="parameters" element="tns:getValue"/> </message> <message name="getValueResponse"> <part name="parameters" element="tns:getValueResponse"/> </message> <portType name="ServiceHello"> <operation name="getValue"> <input wsam:Action="http://servie.hyan.com/ServiceHello/getValueRequest" message="tns:getValue"/> <output wsam:Action="http://servie.hyan.com/ServiceHello/getValueResponse" message="tns:getValueResponse"/> </operation> </portType> <binding name="ServiceHelloPortBinding" type="tns:ServiceHello"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/> <operation name="getValue"> <soap:operation soapAction=""/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> </binding> <service name="ServiceHelloService"> <port name="ServiceHelloPort" binding="tns:ServiceHelloPortBinding"> <soap:address location="http://localhost:9001/Service/ServiceHello"/> </port> </service> </deFinitions>
三、生成客户端
1、创建【Web Service Project】,命名为【TheClient】。
格式:wsimport -s "src目录" -p “生成类所在包名” -keep “wsdl发布地址”
示例:
wsimport -s G:\\workspace\\webService\\TheClient\\src -p com.hyan.client -keep http://localhost:9001/Service/ServiceHello?wsdl
说明:
1)"src目录"地址不可含空格
2)“wsdl发布地址”不要漏了“?wsdl”
3、刷新项目,检查生成类
四、最终测试
1、创建【Class】类,命名为【ServiceTest】,位于【com.hyan.test】包下。
package com.hyn.test; import com.hyn.client.ServiceHello; import com.hyn.client.ServiceHelloService; public class ServiceTest { /** * @param args */ public static void main(String[] args) { // Todo Auto-generated method stub ServiceHello helloPort = new ServiceHelloService().getServiceHelloPort(); String value = helloPort.getValue(",Hyan"); System.out.println(value); } }
2、运行测试方法,并打印返回的结果。
五、注意事项
1、JDK版本过低问题
报类似如下的异常:runtime modeler error: Wrapper class com.hyan.service.jaxws.GetValue is not found. Have you run APT to generate them?
原因:JDK版本低于1.6.0_17
解决方法:调整该服务端项目所引用的JDK版本为安装的高版本JDK
2、生成命令路径含空格问题
报类似如下的异常:directory not found: G:\SVN_FILE\GB\05
原因:客户端src路径不可含有空格
3、生成命令不完整问题
报类似如下的异常:[ERROR] Failed.noservice=@R_502_5285@ not find wsdl:service in the provided WSDL(s):
原因:生成命令末尾缺少“?wsdl”
解决方法:补上即可。
错误不完整的命令示例:
wsimport -s G:\\workspace\\webService\\TheClient\\src -p com.hyan.client -keep http://localhost:9001/Service/ServiceHello
正确完整的命令示例:
wsimport -s G:\\workspace\\webService\\TheClient\\src -p com.hyan.client -keep http://localhost:9001/Service/ServiceHello?wsdl
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。