EJB3 Web Service
来源:互联网 发布:宁阳移动宽带网络 编辑:程序博客网 时间:2024/05/21 06:46
EJB3使得创建一个web service是何等的容易。你只需要把一个普通POJO or一个EJB3 stateless session bean加上几个web service的annotation就搞定,根本不需要生成其他配置文件,爽!
创建和使用web service的一个简单流程是:
1.创建一个web service (包括提供WSDL)
2.在UDDI registry注册该service
3.在client side,先从UDDI registry search该service的WSDL
4.然后根据该WSDL来call该web service
Web service传递的data是基于XML,而传递的方式却可以多种多样:如HTTP、JMS、SMTP、FTP都可以。
常用的三种实现web service的方式有3种:
1.REST (Representational State Transfer)
2.XML-RPC (Extensible Markup Language–Remote Procedure Call)
3. SOAP
但最常用的方式是SOAP,原因是SOAP是很多行业(如travel, health care, financial)sharing industry-specific data的标准都是基于SOAP的!!
REST方式也比较常用(如amazon, yahoo都是用它),但J2EE 5不支持它,但GlassFish支持它。
相关概念:
SOAP
英文原文定义:
SOAP is a simple XML based protocol to let applications exchange information over HTTP
Or more simply: SOAP is a protocol for accessing a Web Service
中文定义:SOAP是一种基于协议(protocol)的,使应用程序(application)之间在HTTP基础上相互交换数据的XML。
WSDL:是一种基于XML的,用来描述Web Service的以及如何进入Web Service的标准。它的具体目的是详细说明(specify)Web Service 的位置(Location),和Web Service所执行的操作(operations or methods)
有关SOAP、WSDL的详细讲解,见笔记“SOAP + WSDL笔记.doc”,虽然是N年前写的,和现在的有点出入,但原理还是一样
UDDI:是统一描述、发现和集成(Universal Description, Discovery, and Integration)的缩写。它是一个基于XML的跨平台的描述规范,可以使世界范围内的企业在互联网上发布自己所提供的服务。
如果你的web service想要share出去,别人怎样才能发现到你web service呢?你就要在一家UDDI registry里注册你的web service,这样别人才能够在search UDDI registry时有可能会发现你的web service。这就是UDDI的最重要目的
当然如果你不想你的web service被公开,只希望某几个朋友或某个系统知道,你只需要把你的web service的WSDL的url给他就好,不用去管UDDI。
SOAP Example:
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<addBid xmlns="http://actionbazaar.com/Bidding">
<user-id>viper</user-id>
<item-id>100</user-id>
<bid-price>2000.24</bid-price>
</addBid>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
WSDL Example:略
Web services styles
Web service styles主要有2种type:
1.RPC-oriented
2.document-oriented
在web service刚红的时候用RPC比较受欢迎,但现在基本都是用document-oriented。因为document-oriented web service的xml schema更好用。
Web service的messaging style也有2种type:
1.Literal
2.Encoded
如果使用literal,messages之间的交换是使用plain XML。如果是使用encoded的话,那么encoded message就要包含一个知道如何去decode message的rules。这样message的接收者要根据这些rules来decode message。WS-I Basic Profile 1.1 目前不支持encoded messages..
因此最常用、也是最方便好用的web service style和message style结合的方式就是document + literal。
Introducing J2EE 5 web services platform
Java API for XML-Based Web Services (JAX-WS) 2.0是J2EE 5的web service规范标准。JAX-WS 2.0是 JAX-RPC 1.0的扩展。JAX-WS 2.0的最主要目的就是简化Java对web service的开发。
Why choose EJB over a POJO for a web service?
文章一开始我就提到:在J2EE 5里,POJO和stateless session bean都可以作为web service。而使用stateless session bean作为web service则有更多的优点。
实际上,POJO和EJB 3之间除了EJB 3多了几个annotations之外,其他都是完全一样的。
* POJO web service是被打包到web module(如WAR)里,而EJB 3 web service是被打包到EJB-JAR里。
Both POJO web service and EJB web service都support dependency injection and lifecycle methods (例如@PostConstruct and @PreDestroy)。
但使用EJB 3 web services会有以下几个好处:
1.可以直接利用EJB在transaction和security方面的优点,还可以使用EJB提供的一些功能(例如:time service)
2.EJB 3 web service能够很容易expose your business applications using additional protocols, 例如通过添加一个remote interface来expose to RMI。
下面的列表列出了POJO web service and EJB web service的一些比较:
- EJB3 Web Service
- EJB3.0与Web Service
- WEB project部署EJB3
- EJB3.0 定时服务:Timer Service
- EJB2.1 & EJB3.0: Timer Service三部曲
- EJB2.1 & EJB3.0: Timer Service三部曲
- EJB3
- EJB3
- EJB3
- web项目调用Ejb3.0组件学习
- EJB3 helloworld 以web形式发布
- Web Service
- Web Service
- web-service
- Web Service
- web service
- Web Service
- WEB SERVICE
- 软件设计中的原则(GRASP)
- 到了冬天,无论如何,也要抓住一个男人过冬。
- 我的工作室www.web-make.com 希望可以帮上大家的忙
- dwr的使用
- 在word中制作书签
- EJB3 Web Service
- 关于NAT的一些疑惑
- 细说SCA V1.0规范(3) -- Domain与业务
- 工厂模式之简单工厂模式
- 和设备文件对话(写和 IOCTL)
- JSP中forward和redirect的区别
- 关于驱动程序中的Ioctl
- anywhere的使用
- linux驱动程序编程学习