1、什么是Web Service
Web Service 可以与平台和编程语言无关的方式相互通信 即 应用程序是跨平台 跨语言
2、Web Service 用什么方法访问
在网络上通过标准化的 XML 消息传递访问;
使用基于 XML 语言的协议来描述要执行的操作或者要与另一个 Web 服务交换的数据
3、什么是SOA
面向服务的体系结构(Service-Oriented Architecture,SOA)
4、Web Service 的组成部分
Web Service 最基本的组成部分为服务的提供者(Service Provider)和服务的请求者(Service Requester)
与C/S 不同的是,Web Service 两端的应用是通过基于标准的 XML 格式的协议进行通信的,这种最常用的协议就是 SOAP(Simple Object Access Protocol)
5、Web Service 的相关标准描述,服务的提供者应该首先通过 WSDL(Web Service Definition Language)和 UDDI (Universal Description, Discovery, and Integration)发布它所提供的服务到一个统注册这些服务信息的存储库中去
以 X Fire 为例
1.创建 Web 服务接口 ---- HelloWorldService
清单 1-3 WEB-INF/classes/org/vivianj/xfire/pojo/HelloWorldService.java
1.package org.vivianj.xfire.pojo; 2. 3. /** 4. * HelloWorldService 中声明需要发布成 Web 服务的所有 Java 方法 5. * HelloWorldService 作为Web服务接口 6. */ 7. public interface HelloWorldService { 8. /** 9. * sayHello 方法声明了 Web 服务对外暴露的接口 10. * 11. * @return 返回给客户端的字符串 12. */ 13. public String sayHello(); 14.}
2.创建 Web 服务实现类 ”HelloWorldServiceImpl”
清单 1-4 WEB-INF/classes/org/vivianj/xfire/pojo/HelloWorldServiceImpl.java
1.package org.vivianj.xfire.pojo; 2. 3./** 4. * HelloWorldServiceImpl 中为 Web 服务接口中声明的所有 Java 方法提供具体实现 5. * HelloWorldServiceImpl 作为 Web 服务的实现类 6. */ 7.public class HelloWorldServiceImpl implements HelloWorldService { 8. 9. /* 10. * sayHello 方法为 HelloWorldService 服务接口定义的 sayHello 方法提供具体实现 11. * 12. * @see org.vivianj.XFire.pojo.HelloWorldService#sayHelloToXFire() 13. */ 14. public String sayHello() { 15. return "Hello World!"; 16. } 17. 18.}
3.修改 services.xml,将 POJO 发布成 Web 服务
在 WEB-INF/classes/META-INF/XFire/services.xml 文件中的 <beans …> 和 </beans> 元素中间加入如下的 xml 内容将上面创建的 HelloWorldService 发布成 Web 服务
1.<service> 2. <name>HelloWorldService</name> 3. <namespace>http://vivianj.org/HelloWorldService</namespace> 4. <serviceClass> 5. org.vivianj.xfire.pojo.HelloWorldService 6. </serviceClass> 7. <implementationClass> 8. org.vivianj.xfire.pojo.HelloWorldServiceImpl 9. </implementationClass> 10.</service>
其中各元素的功能如下:
- service
service 标签和它所包含的 xml 内容为发布成 Web 服务的 POJO 提供完整的描述。
- name
Web 服务被发布时所采用的唯一名称。
- namespace
Web 服务发布时所使用的命名空间。
- serviceClass
Web 服务接口类的全名,包括包名和类名。
- implemetationClass
Web 服务实现类的全名,包括包名和类名。
成功后能看到如下结果