WebService基础使用(一)
WebService**
WebService简介
Web Service技术, 能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件, 就可相互交换数据或集成。依据Web Service规范实施的应用之间, 无论它们所使用的语言、 平台或内部协议是什么, 都可以相互交换数据。
服务端实现
1.编写接口及其实现类
public interface HelloService{public String sayHello(String name);
}
public class HelloServiceImpl implements Service{@Overridepublic String sayHello(String name) {return name+"Welcome";}
}
2.发布
public class ServiceServer {public static void main(String[] args) {Endpoint.publish("http://127.0.0.1:8001/user", new ServiceImpl());}
}
访问http://127.0.0.1:8001/user?wsdl 服务发布是否成功
客户端实现
1.创建一个客户端空项目,cmd命令行进入此项目的src目录 使用以下命令生成客户端代码
wsimport -s . http://127.0.0.1:12345/user?wsdl
2.编写客户端
创建服务视图,视图是从wsdl文件的service标签的name属性获取
获取服务实现类,实现类从wsdl文件的portType的name属性获取
获取查询方法,从portType的operation标签获取
public class Client {public static void main(String[] args) {HelloServiceImplService helloServiceImplService = new HelloServiceImplService();HelloService helloService = helloServiceImplService.getPort(HelloService.class);String result = helloService.sayHello("小明");System.out.println(result);}
}
但是在标准开发中,我们一般采用
//获取wsdl文档资源地址URL wsdlDocumentLocation = new URL("http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl");//获取服务名称//1.namespaceURI - 命名空间地址//2.localPart - 服务视图名QName serviceName=new QName("http://WebXml.com.cn/","MobileCodeWS");Service service=Service.create(wsdlDocumentLocation, serviceName);//获取服务实现类com.project.mobile.MobileCodeWSSoap mobileCodeWSSoap = service.getPort(com.project.mobile.MobileCodeWSSoap.class);//调用方法String result = mobileCodeWSSoap.getMobileCodeInfo("",null);System.out.println(result);String str = null;
**该种方式可以自定义命名空间,服务视图名等元素,方便以后维护,是一种标准的开发方式 **。
WSDL
WSDL(Web Services Description Language), web服务描述语言,他是webservice服务端使用说明书,说明服务端接口、方法、参数和返回值,WSDL是随服务发布成功,自动生成,无需编写。
Service:相关端口的集合,包括其关联的接口、操作、消息等。
Binding:特定端口类型的具体协议和数据格式规范
portType: 服务端点,描述 web service可被执行的操作方法,以及相关的消息,通过binding指向portType
message: 定义一个操作(方法)的数据参数
types: 定义 web service 使用的全部数据类型
阅读方式
WSDL文档应该从下往上阅读。
1.先看service标签,看相应port的binding属性,然后通过值查找上面的binding标签。
2.通过binding标签可以获得具体协议等信息,然后查看binding的type属性
3.通过binding的type属性,查找对应的portType,可以获得可操作的方法和参数、返回值等。
4.通过portType下的operation标签的message属性,可以向上查找message获取具体的数据参数信息。
SOAP
SOAP即简单对象访问协议,他是使用http发送的XML格式的数据,它可以跨平台,跨防火墙,SOAP不是webservice的专有协议。
SOAP=http+xml
SOAP结构
必需的 Envelope 元素,可把此 XML 文档标识为一条 SOAP 消息
可选的 Header 元素,包含头部信息
必需的 Body 元素,包含所有的调用和响应信息
可选的 Fault 元素,提供有关在处理此消息所发生错误的信息
WebService的注解都位于javax.jws包下:
@WebService
定义服务,在类上边
targetNamespace:指定命名空间
name:portType的名称
portName:port的名称 获取服务实现类 集成java接口的实现类
serviceName:服务名称 获取服务 一般对应java中的接口
endpointInterface:SEI接口地址,如果一个服务类实现了多个接口,只需要发布一个接口的方法,可通过此注解指定要发布服务的接口。
@WebMethod
定义方法,在公开方法上边
operationName:方法名
exclude:设置为true表示此方法不是webservice方法,反之则表示webservice方法,默认是false
@WebResult
定义返回值,在方法返回值前边 name:返回结果值的名称
@WebParam
定义参数,在方法参数前边 name:指定参数的名称
@WebService(targetNamespace="http://service.cad.com",portName="WeatherSOAPPort",serviceName="WeatherWSService",name="WeatherSOAP"
)
public class WeatherInterfaceImpl implements WeatherInterface {@Override@WebMethod(operationName="getWeather",exclude=false)public @WebResult(name = "weatherResult") String queryWeather(@WebParam(name = "city") String cityName) {System.out.println("城市名称"+cityName);String weather = "暴雨如画";return weather;}
}
spring项目或者springboot项目中引入了cxf的jar后可以使用
Wsdl2java
命令是CXF提供的生成客户端的工具,他和wsimport类似,可以根据WSDL生成客户端代码
Wsdl2java常用参数:
-d,指定输出目录
-p,指定包名,如果不指定该参数,默认包名是WSDL的命名空间的倒序
Wsdl2java支持SOAP1.1和SOAP1.2
wsdl2java -p com.project.cxf -d . http://127.0.0.1:8001/user?wsdl
集成jax-ws规范,jax-rs规范以及与spring结合的项目实例参考地址:
https://gitee.com/alancci/webservice
WebService基础使用(一)相关推荐
- WebService基础学习
参考 WebService基础学习(一)-基础知识:http://www.cnblogs.com/yangang2013/p/5708647.html WebService基础学习(二)-三要素:ht ...
- WebService 基础
WSDL:Web服务描述语言,它是一个XML文档,用于说明一组SOAP消息以及如何交换这些信息:同时定义了服务的位置以及使用服务的通信协议,还可以提供更高层次的消息 UDDI:统一描述.发现和集成 S ...
- SAP WebService基础知识
Web service 就是一个应用程序,它向外界暴露出一个能够通过Web进行调用的API.也就是说,可以利用编程的方法通过Web来调用这个应用程序. Web service是建立可互操作 ...
- 在原有AXIS WEBSERVICE基础如何制作不依赖AXIS并在WAS发布的WEBSERVICE
必须装有RAD或WSTK(这里只说前者),如果RAD中没有测试环境,则需要安装WAS6 新建WEB工程,并将AXIS相关的东西去掉: 1.所有AXIS相关的配置文件,并将WEB.xml中的AXIS的S ...
- webservice(基础)
目前还有很多商用程序继续在使用C++.Java.Visual Basic和其他各种各样的语言编写.现在,除了最简单的程序之外,所有的应用程序都需要与运行在其他异构平台上的应用程序集成并进行数据交换.这 ...
- C# WebService 基础实例
1.整个Demo结构:如下图: 2.新建项目--选择asp.net web服务应用程序TestWebService 3.重新命名Service1.asmx为MyService.asmx 4.右键MyS ...
- Jersey构建Java RestFul Webservice基础学习教程
1.用Jersey构建RESTful服务1–HelloWorld http://www.waylau.com/jersey-restful-helloworld/ 2.用Jersey构建RESTful ...
- 转:Ajax调用Webservice和后台方法
本次课程内容包括 • 客户端访问WebService基础 • 客户端访问PageMethod基础 • 错误处理 • 复杂数据类型使用基础 • 客户端代理使用细节 ...
- webservice学习
1.Webservice 可返回类型 int,string,double,bool,DataTable,DataSet,ArraList,List<string[]>,string ...
最新文章
- 多模块后带来的问题解决方法 - OSGI原形(.NET)
- [每日一题] OCP1z0-047 :2013-08-17 EXTERNAL TABLE――加载数据 ............................56...
- 新手学逆向,调试abexcm1过程
- Idea打可执行jar包
- linux常用命令-文件处理命令
- 小量数据和海量数据分页显示存储过程
- 向量机和感知机的相同和不同点_感知机(perceptron)和支持向量机(svm)是一种东西吗?
如果不是那他们的区别和关系是什么?...
- win7一键清理系统垃圾Bat脚本
- tracker服务器包含什么信息,tracker服务器
- 基于DLP4500的结构光3DScan应用手册
- 使用Quick BI 制作企业数据分析报表
- Linux环境下ARM开发工具TrueSTUDIO初体验
- 无心插柳OR志在必得?阿里推“来往”的意图
- UG NX 12 控制基准平面的显示大小
- 阿里现场三面+HR面
- 在xp系统电脑上建立宽带连接服务器吗,windows xp系统如何在电脑桌面上创建ADSL连接...
- 在 WPS Word中成功使用zetero
- 2017开发语言排行(本人是搞C#+javascript的)
- Angular5 + Bootstrap4使用示例
- 如何自己搭建一个个人网站?