WebService技术总结(一):jdk自带的WebService API:jaxws
来源:互联网 发布:大富翁3.4棋牌源码 编辑:程序博客网 时间:2024/04/30 15:32
WebService的调用,一般存在服务端和客户端,由服务端编写接口和实现类,并发布成服务,生成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); } }
运行结果:
yy1yy2yy3
- WebService技术总结(一):jdk自带的WebService API:jaxws
- 使用jdk自带的webservice
- java jdk自带的WebService
- 使用jdk自带webservice发布webservice
- jdk自带webservice 应用
- 从jdk自带的jax-ws说WebService
- WebService技术总结(二):使用jaxws注解发布服务
- webservice之jdk自带wsimport
- jaxws webservice
- webservice使用JDK自带的jax-ws创建并发布一个简单的webservice
- Java6自带的WebService
- jaxws-webservice webservice初试
- Java自带webservice
- moss webservice调用(Moss自带的webservice)
- CXF动态客户端调用JDK自带Webservice安全校验
- webservice客户端使用jdk自带wsimport实现方案
- webservice(java自带的demo)
- webservice知识一、SOAP风格的webservice——通过JDK的API发布一个webservice服务和创建一个webservice客户端用于访问该服务
- X-Plane 10 wing flex dataref
- permission denied for this window type
- 网络通信错误码转换
- PCB布局,布线技巧总结
- Spring使用技巧
- WebService技术总结(一):jdk自带的WebService API:jaxws
- JPA用法
- 岁末-2016
- 欢迎使用CSDN-markdown编辑器
- SNMP高速扫描器braa
- 冒泡排序
- POJ 1830 开关问题(高斯消元法)
- Angular双向数据绑定
- mongodb in中嵌套regex