概念理解:
Web Service
一、定义
-----不是框架,也不是一种技术。
而是一种跨平台、跨语言的规范。
二、应用场景
-----为了解决这样的需求场景:不同平台、不同语言所编写的应用之间如何相互调用。
Web Service集中解决:
--1、远程调用;
--2、跨平台调用;
--3、跨语言调用。
实际中用途:
1、同一个公司的新旧系统的整合。
例如:Linux上的Java应用,去调用windows平台的Delphi应用。
2、不同公司的业务整合。
业务的整合就要带来:不同公司的系统整合,不同公司的系统可能存在平台、语言不同德问题。
例如:淘宝和当当 都调用京东物流系统的订单信息方法。
3、内容聚合:
一个应用, 比如需要提供天气情况(气象局)、股票行情(证监会)、黄金行情(某基金系统)、编程语言行情......
这种内容聚合的应用,需要调用大量不同平台、不同语言编写的应用的方法。。。
三、实现技术
CXF
1、 Axis(Apache)-->>Axis 2(Apache)
2、 XFIre-->>CXF(XFire + Celtrix)
XFire --(Web Service框架)
Celtrix--(ESB框架)
3、CXF
SOA(面向服务的架构)
Service1,Service2,Service3---所有组件都是“即插即用”的。
IBM提倡的SOA架构, 希望以“组装电脑”的方式来开发软件。
1、各种提供服务的组件。(Web Service)
2、企业服务总线(Enterprise Service Bus, ESB)
CXF号称是SOA框架,核心SOAP--描述(XML)wsdl--被调用(服务的接口)--客户端
CXF(Apache)
CXF内置了一个Jetty Web服务器。
------------------------------------------------
使用CXF开发Web Service服务器端:
/*****
每个Web Service组件需要2个部分:接口和实现类。
*****/
(1)开发一个Web Service业务接口
该接口要用@WebService修饰
(2)开发一个Web Service实现类
实现类也需要@WebService(endpointInterface="完整接口名称",serviceName="实现类名称")修饰
(3)使用Endpoint类的静态方法来发布Web Service.
例如:HelloWorld hw = new HelloWorldWs(); //接口类
//调用Endpoint的publish方法发布Web Service
//Endpoint.publish(address,implementor);
Endpoint.publish("http://192.168.40.62/crazyit",hw);
查看WSDL文档的浏览器路径:http://192.168.40.62/crazyit?wsdl
--------------------------------------------------------------
使用CXF开发Web Service客户端:
(1)调用CXF提供的wsdl2java工具,根据WSDL文档生成相应的Java代码。
(命令行:wsdl2java http://192.168.40.62/crazyit?wsdl)
WSDL - Web Service Definition Language
任何语言实现了Web Service,都需要提供并暴露WSDL文档。
(2)找到wsdl2jaba所生成类中,一个继承了Service的类。
该类的实例可当成工厂来使用。
(3)调用Service子类实例的getXxxPort()方法(无参数的),返回Web Service的代理。
形参、返回值
1、当形参、返回值的类型是String、基本数据类型时,CXF肯定可以轻松处理。
2、当形参、返回值类型是JavaBean的复合类、List集合、数组等时,
CXF也可以很好的处理。
3、还有一些像Map、非JavaBean式的复合类,CXF是处理不了的。
WebService基础
猜你喜欢
转载自451640893.iteye.com/blog/2276330
今日推荐
周排行