Web服务在EJB 2.1到EJB 3.0中的改变

对于企业级JavaBeans形成的商务层构件,也就是我们所熟知的Java 2 Enterprise Edition平台,相对于软件的进化为服务,在结构方面并没有停滞不前,在EJBs3.0版本同早期的版本比较中,我们已经可以看到一个具有了完全不同的开发模型,这就使得在使用Web services的过程更加简单。

如果你是EJB的早期采用者,那么你对这个技术自从最初以来的复杂性应该比较了解。复杂性让很多人已开始就放弃了使用EJB的想法,更不要说根据这个Java规范来实现Web services的可能性了。就这样,很多项目都使用了单独的API,如JAX-RPC或者类似Apache Axis的框架来在Java环境中部署Web services。尽管这种方式提供了一种新对较低的入口门槛,但是它缺少内在的中间件服务——例如事务处理和安全服务——很多的都是使用EJB架构的主要原因,使得开发者不得不去在一个不是最好的情况下来处理Java Web services,以使得能够以高级的中间件性能来运作或者带来一个十分复杂的开发生命周期。

最先的,应该指出的是EJB不是一个本质上的EJB,而是为大家更为广泛的指导的Session EJB的扩展。那也就是说,一个Web services使能的EJB开始是以一个改进过的会话EJB运行的。在EJB版本2.1中,规范设计者看到了需要提供一个通过SOAP消息访问机制,但是在哪个时候不是构建一个现有EJB的分支的实现——会话,实体和消息——这个决定是使用扩展了的会话bean来适应Web services。

前面所说到的在EJB2.1种的问题是以一个传统的接口方式来解决的——是以一种Web 服务终端的形式来服务的——和一个额外的部署描述符来定义具体的服务行为。尽管如此,在这个过程中的大部分的苦差事并不是仅仅由于底层EJB的会话bean的实际上的创建,而也同你想把它转变成一个Web services EJB的念头有关。

简短的来说,我们只是列举在一些特别的过程中的缺点,后面我们会转移到一段实际的EJB3.0代码来看看是如何改变的。在EJB2.1中部署一个Web service最为显著的问题如下:

Web service需要从一个会话EJB采用它的行为,而这个会话EJB本身是和一个遗产层次——例如在EJB3.0之前的版本——是紧密联系在一起的,同时也具有一系列的为EJB环境所需要的伴随接口。

你需要定义一个传统的Java接口,这个传统接口将会用于提供服务端点,服务端点就是类似于在一个会话EJB中已经包含的远程接口。

还需要另外一个配置文件——部署描述符——进一步的来指明EJB的服务行为。

对这些Web services EJB的问题的减轻分为两种主要的形式:注释和简单的旧Java对象(POJO's)。注释是可以被放置在Java源代码文件中的元数据,为的是能够提供进一步的配置属性或者处理指令来执行Java环境。在另外一个方面,POJO's被拆分成java类,这些java类没有遗传依赖关系。

通过注释,所有在部署描述符中已经定义了的数据可以被替代的放置在一个当读的文件当中,也就是那个包含了商务逻辑的源文件。这不是说外在的部署描述符在Web services EJB 3.0中废除了。相反的,他们仍然是非常有效的,尽管他们现在将会提供一种后退机制,来形成一种更加自然并且简单的过程,以配置商务逻辑的内嵌信息。

另一方面,商务逻辑的设计和编码阶段是可以达到的,正如Web services可以通过使用POJO's来获得极大的简化。在EJB2.1种,创建一个能提供Web services的EJB的过程强迫你去处理会话EJB强加的遗传条件。因此对于这些情况,如果你以一个简单和容易理解的Web service操作集合开始,创建一个简单的Java对象只是EJB的过程中的开始,因为你需要作许多其他的工作来达到Web services设计的EJB的最后。

时间: 2024-11-08 17:30:19

Web服务在EJB 2.1到EJB 3.0中的改变的相关文章

关于C#下写的Web Service 服务在Delphi下调用时的问题

web|问题 关于C#下写的Web Service 服务在Delphi下调用时的问题 首先我觉得有必要把.net平台下开发webservice进行一个比较全面的阐述,web service的最初产生是在电子商务的环境下出现的,有些问题通过传统的手段已经不容易解决,比如在应用程序之间进行商务通信.数据交换,使用DCom.CORBA等二进制机制的东西已经行不通了,姑且不说他们受各自平台的限制,比如DCom(Distribute Common Objects Model)只能在Windows平台下进行

配置网站和配置服务在StockTrader 3.0中的使用示例

有关配置网站和配置服务在StockTrader 3.0中使用,微软在其提供的配置说明文档中已经做了很详细的说明.基本上是一步一步傻瓜式的阐述的,在这里也就简单的在文档中摘选一下重点简单的做一下记录,理一下整个配置使用过程. 首先先简单介绍一下StockTrader 3.0中的核心组件构成: .NET StockTrader Web application--网站UI主程序 .NET StockTrader Business Services (hosted in IIS or in the .N

azure-WCF服务在website上和在webrole有什么区别?谁知道 ??

问题描述 WCF服务在website上和在webrole有什么区别?谁知道 ?? 大家好!!!我尝试了下将WCF服务可以发布在website上,也可以使用webrole去发布,为什么会有两种方式啊?我不是很清楚,到底该用哪个?谢谢!! 解决方案 Hi 提到role我们一般都是指的Azure的云服务,首先我们了解下role的概念,role在azure platform中是一个提供特定服务或功能的应用程序,它们都执行在独立的执行个体内,每一个执行个体都是一台虚拟机,因此原则上每个角色都有完整的虚拟机

WebService 服务在WWW下调试

一般情况下WS服务只能在本机调试的时候进行访问,如果希望在IIS中调试或者在WWW上以域名的方式调试需要在web.config的system.web节点中添加 如下代码: <webServices> <protocols> <add name= "HttpGet"/> <add name= "HttpPost"/> </protocols> </webServices> 添加后,重新生成应用程序

前进:从EJB 2.1到EJB 3.0

在开始讨论怎样从EJB 2.1迁移到EJB 3.0之前,有必要先了解一下迁移之后将会得到什么:主要来说,EJB 3.0减少了在创建EJB时所需的类.接口.部署描述符的数量.EJB 3.0通过用纯旧式Java对象(POJO)取代抽象bean类,用纯旧式Java接口(POJI)取代组件与主接口(Component & Home),简化了EJB的开发过程,在此,后者是可选项--你不必全部包含进它们. 部署描述符--ejb-jar.xml--由其指定了EJB名.bean对象名.接口.查找者方法.容器管理

WCF技术剖析之二十: 服务在WCF体系中是如何被描述的?

任何一个程序都需要运行于一个确定的进程中,进程是一个容器,其中包含程序实例运行所需的资源.同理,一个WCF服务的监听与执行同样需要通过一个进程来承载.我们将为WCF服务创建或指定一个进程的方式称为服务寄宿(Service Hosting).服务寄宿的本质通过某种方式,创建或者指定一个进程用以监听服务的请求和执行服务操作,为服务提供一个运行环境. 服务寄宿的方式大体分两种:一种是为一组WCF服务创建一个托管的应用程序,通过手工启动程序的方式对服务进行寄宿,所有的托管的应用程序均可作为WCF服务的宿

ejb方法调用-EJB3.0中怎么一个类调用另外一个类的方法

问题描述 EJB3.0中怎么一个类调用另外一个类的方法 我做得的是struts+ejb3.0,在EJB中我想用BIZ调用dao,是直接New还是有别的方法...求大神指教..... 这是BIZ的方法 public List queryPet(String pelName,String pelZr,String pelType ,String px) { System.out.println("aaaaaaaaaaaaaaaaaaaa"); IDao dao=new IDaoImpl()

iOS11问题: 定位服务在iOS11系统上不能使用?

iOS11问题: 定位服务在iOS11系统上不能使用? Q:我刚刚用iOS11 SDK重新构建了应用程序,发现定位服务现在根本不起作用. 原因:A:因为苹果现在增加了一项新的隐私保护功能 NSLocationAlwaysAndWhenInUseUsageDeion, 并且原有的 NSLocationAlwaysUsageDeion 被降级为 NSLocationWhenInUseUsageDeion. 想要达到之前 NSLocationAlwaysUsageDeion 的定位效果,需要在info

消息服务在Serverless中的应用

本文PPT来自高级专家陈舟锋于10月16日在2016年杭州云栖大会上发表的<消息服务在Serverless中的应用>. 消息服务在Serverless中具有广泛的应用,目前阿里已经开放了阿里云消息服务(MNS).MNS是一种高效.可靠.可扩展的分布式消息队列和通知产品,可以帮助我们轻松地构建大规模.松耦合的系统.从产品架构上来说,系统由下至上分为三层,最底层是持久层,中间是业务层,高层是接入层.其提供的功能有:1.队列,应对高并发.保证至少成功消费一次 2.主题,当服务器主动推送消息,能通过多