技术开发 频道

详解EJB 3会话 Bean

业务接口

   一个无状态会话业务接口是一种标准的Java接口,其并未对任何特定EJB接口进行扩展。这种接口含有一张业务方法定义的列表,可由客户端程序访问。每个会话Bean都必须有一个能通过Bean类实现的业务接口,其既可在设计时由相应工具生成,如Oracle JDeveloper、NetBeans、Eclipse,也可在部署时由EJB容器生成。

 业务接口也能使用注释符,如下:

 @Remote注释符用于指明远程业务接口。
 @Local注释符用于指明本地业务接口。(如果在接口中未标明注释符,默认为local本地接口)

   如果架构中存在一种需求,客户端程序(Web程序或“胖”客户端)必须运行在一个与往日运行EJB容器中会话Bean不同的Java虚拟机上,那么就需要使用远程接口了;这个Java虚拟机可在同一台电脑上,也可在不同的电脑上,但如果应用程序架构倾向于对客户端程序及会话Bean使用同一Java虚拟机,使用本地接口仍是最好的选择。
但有时候,应用程序架构会同时需要远程及本地接口,例如,一个企业可能有一个订单录入程序,其使用会话Bean开发,而这些会话Bean有用于提交新订单的业务方法,同时还有一些日常行政方面的任务,如输入产品数据,潜在地,就可能有两个不同的客户端程序访问后台订单录入程序,如下:

   一个Web客户端程序(如图3)能与会话Bean运行在同一Java虚拟机中,并用于提交新订单。
   一个“胖”客户端程序(如图4)运行在终端用户的桌面电脑上,用于日常数据输入。


 
图3:一个使用会话Bean本地接口的Web客户端程序
 
图4:一个使用会话Bean远程接口的“胖”客户端程序


 而SearchFacade会话Bean有远程及本地两种接口,如图5:


 
图5:SearchFacade会话Bean的业务接口


   例2是SearchFacade远程业务接口的代码段,有一个@Remote注释符与一个wineSearch()方法声明,wineSearch()方法接受一个代表酒类型的参数,并返回所有条件匹配的酒名列表。

例2:SearchFacade.java package com.apress.ejb3.chapter02; import java.util.List; import javax.ejb.Remote; @Remote public interface SearchFacade { List wineSearch(String wineType); }

   例3是SearchFacade本地业务接口的代码段,有一个@Local注释符与一个wineSearch()方法声明。

例3:SearchFacadeLocal.java package com.apress.ejb3.chapter02; import java.util.List; import javax.ejb.Local; @Local public interface SearchFacadeLocal { List wineSearch(String wineType); }
0
相关文章