WebService技术总结(一):jdk自带的WebService API:jaxws
2016-12-20 10:47
597 查看
WebService的调用,一般存在服务端和客户端,由服务端编写接口和实现类,并发布成服务,生成wsdl文件,再由客户端去调用。
接下来按照上述步骤实现jaxws远程调用
实现类:注意类和方法上的注解即可
打开浏览器,输入http://10.101.238.173:15008/query?wsdl
显示一个xml配置文件的网页,这就是wsdl文件,即webservice description language
1.从该文件的底部找到service节点,它的子节点port name=”QueryDataImpPort” binding=”tns:QueryDataImpPortBinding”
2.根据binding=”tns:QueryDataImpPortBinding”, 找到binding name=”QueryDataImpPortBinding” type=”tns:QueryDataImp”
3.根据type=”tns:QueryDataImp”,找到portType name=”QueryDataImp”,里面有方法名,输入的参数和返回值信息
总结:通过service找binding,通过binding找到portType,然后找到方法信息
在拿到服务端发布的wsdl文件之后,客户端怎么调用呢?
首先打开cmd命令行,cd到客户端项目路径src下
然后通过wsdl文件生成java类
这时候刷新下客户端项目,会出现以下这些类
如果你的jdk是1.6及以下的,有一个类会报错
而注释里也写的很清楚,需要使用wsdl2java命令并加上”-frontend jaxws21”,即:wsdl2java -d . -frontend jaxws21 http://10.101.238.173:15008/query?wsdl
运行结果:
接下来按照上述步骤实现jaxws远程调用
1.在服务器端编写接口及实现类
接口:package com.yonyou.service; public interface QueryData { public String[] query(int num); }
实现类:注意类和方法上的注解即可
package com.yonyou.service.imp; import javax.jws.WebMethod; import javax.jws.WebService; import javax.jws.soap.SOAPBinding; import com.yonyou.service.QueryData; @WebService @SOAPBinding(style = SOAPBinding.Style.RPC) public class QueryDataImp implements QueryData{ @Override @WebMethod public String[] query(int num) { return new String[]{"yy1","yy2","yy3"}; } }
2.发布服务,生成wsdl文件:
提示,可以使用ipconfig查看自己的Ipv4地址 public static void main(String[] args) { String address = "http://10.101.238.173:15008/query"; //发布服务,传入地址和实现类对象 Endpoint.publish(address, new QueryDataImp()); }
打开浏览器,输入http://10.101.238.173:15008/query?wsdl
显示一个xml配置文件的网页,这就是wsdl文件,即webservice description language
1.从该文件的底部找到service节点,它的子节点port name=”QueryDataImpPort” binding=”tns:QueryDataImpPortBinding”
2.根据binding=”tns:QueryDataImpPortBinding”, 找到binding name=”QueryDataImpPortBinding” type=”tns:QueryDataImp”
3.根据type=”tns:QueryDataImp”,找到portType name=”QueryDataImp”,里面有方法名,输入的参数和返回值信息
总结:通过service找binding,通过binding找到portType,然后找到方法信息
在拿到服务端发布的wsdl文件之后,客户端怎么调用呢?
首先打开cmd命令行,cd到客户端项目路径src下
然后通过wsdl文件生成java类
这时候刷新下客户端项目,会出现以下这些类
如果你的jdk是1.6及以下的,有一个类会报错
而注释里也写的很清楚,需要使用wsdl2java命令并加上”-frontend jaxws21”,即:wsdl2java -d . -frontend jaxws21 http://10.101.238.173:15008/query?wsdl
3.在客户端进行调用
public class Client { public static void main(String[] args) { //在wsdl中<service name="QueryDataImpService"> QueryDataImpService service = new QueryDataImpService(); //获取Port,也就是<portType name="QueryDataImp"> QueryDataImp query = service.getQueryDataImpPort(); StringArray nameArr = query.query(10); List<String> names = nameArr.getItem(); if(names != null && names.size() > 0){ for (String name : names) { System.out.println(name); } } } }
客户端更为灵活的Service调用
QName两个参数说明:public static void main(String[] args) throws MalformedURLException { //wsdl文件地址 URL url = new URL("http://10.101.238.173:15008/query?wsdl"); //namespace和服务类名 QName qName = new QName("http://imp.service.yonyou.com/", "QueryDataImpService"); Service service = Service.create(url, qName); //获取portType QueryDataImp query = service.getPort(QueryDataImp.class); StringArray result = query.query(3); List<String> item = result.getItem(); for (String ele : item) { System.out.println(ele); } }
运行结果:
yy1 yy2 yy3
相关文章推荐
- WebService基本入门(基于jdk自带的jax-ws)
- 从jdk自带的jax-ws说WebService
- webservice使用JDK自带的jax-ws创建并发布一个简单的webservice
- WebService从零到项目开发使用5—技术研究之JAX-WS快速入门
- 基于JDK自带JAX-WS实现的web service
- 基于JDK 1.6的WebService JAX-WS的实现
- 使用JDK1.6的JAX-WS编写WebService(转)
- WebService从零到项目开发使用5—技术研究之JAX-WS快速入门
- Agile PLM --- JAX-WS 2.2 API is required, but an older version was found in the JDK
- JDK 1.6 写Webservice时,runtime modeler error: Wrapper class com.ws.jaxws.DoSomething is not found问题的解决办法
- 使用JDK1.6的JAX-WS编写WebService
- JAX-WS 2.2 API is required, but an older version was found in the JDK.
- JDK 1.6 写Webservice时,runtime modeler error: Wrapper class com.ws.jaxws.DoSomething is not found问题的解决办法
- WebService(二)—JDK内置JAX-WS实现SOAP WebService
- Web Service学习小结——基于JDK自带JAX-WS实现的web service
- JDK1.6集成的JAX-WS开发webservice
- 用JAXWS2.1+Tomcat+Eclipse+JDK开发WebService客户端
- 基于JDK 1.6的WebService JAX-WS的实现
- JDK 1.6 写Webservice时,runtime modeler error: Wrapper class com.ws.jaxws.DoSomething is not found问题的解决
- java自带webservice功能实现Javax.jws.WebService--JAX-WS