WebService到底是什么?
Web Service
也叫XML Web Service。
WebService
是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。
一言以蔽之:WebService
是一种跨编程语言和跨操作系统平台的远程调用技术。
所谓跨编程语言和跨操作平台,就是说服务端程序采用java编写,客户端程序则可以采用其他编程语言编写,
反之亦然!跨操作系统平台则是指服务端程序和客户端程序可以在不同的操作系统上运行。
SOAP:
WebService
通过HTTP协议发送请求和接收结果时,发送的请求内容和结果内容都采用XML格式封装,
并增加了一些特定的HTTP消息头,以说明HTTP消息的内容格式,这些特定的HTTP消息头和XML内容格式就是SOAP协议。
SOAP提供了标准的RPC(远程过程调用协议)方法来调用Web Service
。
SOAP协议 = HTTP协议 + XML数据格式
打个比喻:
HTTP就是普通公路,XML就是中间的绿色隔离带和两边的防护栏,SOAP就是普通公路经过加隔离带和防护栏改造过的高速公路。
WebService开发:
Java方面的典型WebService
框架包括:axis,xfire,cxf等,java ee服务器通常也支持发布WebService服务,例如JBoss。
java开发webservice的几种方式
1.Axis2
2.Apche CXF
3.JDK开发webservice
详情请访问以下地址
http://blog.sina.com.cn/s/blog_a0e7e34c0101959p.html
下面是一个简单的例子:
写在前面的话:
当两个人碰面后,产生了好感,如果需要得到双方的信息,那么双方的交流是必不可少的!应用程序也如此,
各个应用程序之间的交流就需要WebService
来作为相互交流的桥梁!
(1)新建WebService服务端,并编写相应的方法,以供客户端调用,此处为getName()方法 |
(1)、新建WebService服务端 (2)、编写main方法,发布WebService服务
package WebService; import javax.jws.WebService; import javax.xml.ws.Endpoint; /** * Created by Paul on 2016/3/28. */ @WebService public class Function { /** * 该方法就是要暴露给其他应用程序调用的方法 * 供客户端调用的方法 * @param name 传入参数 * @return String 返回结果 */ public String getName(String name){ return "My name is "+name; } public static void main(String[] args) { /** * ↓↓ 第一句很重要,用于发布服务端localhost为地址指向地址 * ↓↓ 9001为任意端口,但必须未被占用 * ↓↓ 第二个参数new的为本类的类名 * 运行main方法相当于发布WebService服务 */ Endpoint.publish("http://localhost:9001/Service/Function",new Function()); System.out.println("Publish Success~"); } }
(3)浏览器访问地址(这里是http://localhost:9001/Service/Function?wsdl),确定WebService服务发布成功
WebService服务发布成功的截图:
(4)命令窗口,执行命令,生成相关类
格式:wsimport -s <src目录> -p <生成类所在包名> -keep <wsdl发布地址>
示例:
wwsimport -s D:\IdeaWork\src -p WebServiceClient.com.jin -keep
http://localhost:9001/Service/Function?wsdl
注意:
1)<src目录>地址不可含空格
2)<wsdl发布地址>不要漏了'?wsdl'
命令提示窗口执行命令截图:
执行完命令,生成的包结构截图:
(5)编写客户端测试类,调用服务端方法
测试类
package WebServiceClient.com.jin.test;
import WebServiceClient.com.jin.client.Function;
import WebServiceClient.com.jin.client.FunctionService;
/**
* Created by Paul on 2016/3/28.
*/
public class TestClient {
public static void main(String[] args) {
//初始化对象
Function function = new FunctionService().getFunctionPort();
//调用对象中的方法
String name = function.getName("Paul");
//打印返回结果
System.out.println(name);
}
}