WebService
一、简介:
要素:
SOAP:基于HTTP协议 和XML数据格式的接口协议。即:服务于应用层的协议。
SOA:面向服务架构。webservice就是SOA的一种。
二、特点:
相比于SOCKET等通讯方式,webservice由于数据格式是xml这种大文本的格式,所以效率要低。
webservice传输的属性的类型有一定的要求,webservice可以传递 基本类型、Stirng字符串、类、List集合等,但是不能传递Map这种类型的数据。但是开发人员做一个包装类来实现Map 的功能。
webservice使用的是客户/服务器方式,即:请求-相应方式。
最大的优点:相比其他网络通讯方式,webservice最大的优点是跨平台、跨系统的远程调用技术。这是人们选用webservice无法抗拒的地方。跨平台好理解:比如你的程序是java语言编程的,但是要和一个.NET语言编写的程序进行数据通讯。跨服务器:webservice实现了一个强大的RPC(远程调用技术)功能,这种RPC是不分语言和操作系统的远程调用。
很明显,既然是HTTP协议,那么webservice的用武之地就是外网,对于单片机、局域网来说,它的作用不太明显。
三、实现
服务端实现
①服务端定义接口:
import javax.jws.WebService; @WebService public interface HelloWord { public String getName(String name); public String getAge(int age); }
注意 事项: 标签 @WebService必不可少,webservice是Java本身自带的。
②服务器定义接口实现类:
import javax.jws.WebService; import com.nz.test.HelloWord; @WebService public class HelloWordImpl implements HelloWord{ @Override public String getName(String name) { return "My name is "+name; } @Override public String getAge(int age) { return "My age is "+age; } }注意事项: 标签 @WebService必不可少,否则会报错。
③发布服务:
package com.nz.service; import javax.xml.ws.Endpoint; import com.nz.test.HelloWord; import com.nz.test.impl.HelloWordImpl; public class ServiceMain { //发布服务地址 private static String addr = "http://localhost:8080/com/nz/service/HelloWord"; public static void main(String[] args) { //获取具体的实现类 HelloWord hw = new HelloWordImpl(); //发布服务 Endpoint.publish(addr,hw); } }注意事项:此处是使用的java自带的 Endpoint类的静态方法publish发布的。
通过CXF提供的JaxWsServerfactorybean来发布webservice JaxWsServerfactorybean factory = new JaxWsServerfactorybean(); factory.setServiceClass(HelloWorldImpl.class); factory.setAddress("http://localhost:8080/HelloWorld"); Server server = factory.create(); server.start();④查看发布服务
注意事项:地址的后缀名: 要有?WSDL 而且必须大写,否则访问不到。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。