EJB3 Web Service

 
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 stylemessage 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的一些比较:
 
 
 
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值