EJB一个最大的缺点就是要想脱离EJB容器而单独测试EJB组件非常困难。通过Spring可以解决这个问题,将业务逻辑写在POJO中,然后,通过EJB委托给POJO来执行操作。在Spring中,由于不必将如何定位和创建POJO的实现的任何逻辑嵌入到EJB中,这种实现就是非常简单,和灵活的。下面是一个继承于AbstractStatelessSessionBean的无状态会话Bean的基类,系统中的每个SLSB都继承于此类。所有的请求都通过这个SLSB来转发给POJO。因为每次初始化的内容都不一样,所以将初始化放到了SLSB的每个继承类中。<o:p></o:p>
<o:p> </o:p>
public abstract class SessionFacade extends AbstractStatelessSessionBean {<o:p></o:p>
/**<o:p></o:p>
* 如果子类需要进行全局的初始化工作,那么应该Override这个方法。<o:p></o:p>
*/<o:p></o:p>
public abstract void init();<o:p></o:p>
protected void onEjbCreate() throws CreateException {<o:p></o:p>
synchronized (initLock) {<o:p></o:p>
if (globalInit)<o:p></o:p>
return;<o:p></o:p>
else {<o:p></o:p>
init();<o:p></o:p>
globalInit = true;<o:p></o:p>
……<o:p></o:p>
|
SLSB的基类<o:p></o:p>
<o:p> </o:p>
public class JCFServerFacadeBean extends SessionFacade<o:p></o:p>
{<o:p></o:p>
public void init()<o:p></o:p>
{<o:p></o:p>
ContextServiceLocator.getInstance().setContext(getBeanFactory());<o:p></o:p>
boolean bret = ServiceLocator.getInstance().init("etc/jcf/framework/config/ServiceConfig.xml"); <o:p></o:p>
}<o:p></o:p>
}<o:p></o:p>
|
SLSB的继承类<o:p></o:p>
<o:p> </o:p>
如上面的代码所示,由于在SLSB的初始化方法setSessionContext中实例化Spring的ApplicationContext,Spring的配置文件在类路径中的beanRefContext.xml文件标识,所以在SLSB的继承类中,调用getBeanFactory方法可以得到Spring的ApplicationContext,并赋予给ContextServiceLocator,方便以后的调用。<o:p></o:p>
无状态会话bean是用Spring最容易构建的EJB;这是因为无论在何种情况下,它都不需要特殊的处理,并且类AbstractStatelessSessionBean实现了所有ejbXXX()方法。<o:p></o:p>
因为真正的业务逻辑是写在POJO中的,SLSB的作用相当于SessionFacade模式中的Façade,在Delegate模式中的Delegate的请求都是通过Façade传到了后面的Processor,所以在系统中只需要一个或者是少量的几个SLSB就可以满足需求。甚至可以绕过SLSB通过POJODelegate访问后面的Processor,这给平时的开发带来的极大的灵活性。<o:p></o:p>
对于异步的消息驱动Bean(MDB),Spring同样作出了支持。类似SLSB,MDB只要继承AbstractMessageDrivenBean,并实现MessageListener接口即可。同样在setMessageDrivenContext方法中初始化Spring的ApplicationContext,所有从Delegate的请求都通过execute方法传给Processor。在MDB继承类中的OnMessage方法就可以访问到Spring的ApplicationContext了。在此就不再罗嗦了。<o:p></o:p>
分享到:
相关推荐
文档方面,虽然描述提到主要是英文,但它们包含了对 Spring 和 EJB3 的详细介绍,包括如何配置、使用各种组件,以及解决常见问题的策略。学习这些文档可以帮助开发者深入理解这两种框架的工作原理,从而更好地应用到...
2. **Spring对EJB的支持**:Spring通过`LocalContainerEntityManagerFactoryBean`支持JPA实体管理,并提供了`EjbFactoryBean`来创建EJB实例。此外,Spring还支持声明式事务管理和安全管理,这使得Spring可以很好地与...
EJB3.0同样支持依赖注入,但在某些情况下可能不如Spring灵活。 #### 四、结论 Spring与EJB3.0各有千秋。Spring以其灵活性、厂商无关性和易于整合的优势在企业应用开发中占据了一席之地;而EJB3.0则作为Java EE标准...
1. **Spring对EJB 3的支持**:Spring可以通过`jee:local-slsb`和`jee:remote-slsb`元素来声明式地管理EJB的引用。 2. **使用Spring管理EJB**:Spring可以作为EJB的客户端,通过`JndiTemplate`或`InitialContext`查找...
1. **Spring对ejb的代理**:Spring可以创建ejb的代理,通过JNDI查找ejb,然后在本地调用ejb的方法。这种方式适用于ejb作为服务提供者,Spring客户端进行调用的场景。 2. **Spring AOP与ejb事务管理**:Spring的声明...
Spring还提供了大量的模块,包括数据访问、事务管理、缓存、Web支持等,与Struts2结合使用,可以更好地管理应用程序的生命周期和事务。 **EJB3**(Enterprise JavaBeans 3.0)是Java EE平台的一部分,主要用于构建...
在IT行业中,Hibernate、Spring、EJB(Enterprise JavaBeans)和Ajax是四个非常重要的技术,它们各自在软件开发的不同方面发挥着关键作用。下面将分别详细介绍这些技术,并探讨它们之间的协同工作方式。 **...
【EJB3.0与Spring比较】 EJB3.0和Spring是两种广泛使用的Java企业级应用程序开发框架,它们在很多方面有所不同,这些差异主要体现在以下几个关键点: 1. **厂商无关性(Vendor Independence)** - EJB3.0遵循开放...
Spring以其依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)而闻名,提供了完整的开发工具集,包括事务管理、数据访问、缓存、安全性和远程服务支持等。在培训中,你将学习...
Spring 提供了一个全面的编程和配置模型,对服务层的支持包括事务管理、数据访问集成等。它推崇 DI(依赖注入)和 AOP(面向切面编程),并提供了丰富的 MVC(模型-视图-控制器)框架。Spring 还支持多种持久层技术...
Struts2、Spring和EJB(Struts2+Spring+EJB,简称SSE)是Java企业级开发中常用的三大框架,它们各自承担着不同的职责,共同构建了一个强大的应用架构。Struts2作为MVC(Model-View-Controller)框架,负责处理用户...
此外,Spring还提供了对EJB 3.0的支持,可以将EJB组件纳入其管理范围。 3. **EJB 3.0**:EJB 3.0引入了更简洁的API和注解,使得开发人员能够更容易地创建可部署的企业级组件。实体Bean处理数据持久化,会话Bean提供...
在这个场景下,使用Spring进行开发可能会更加高效,因为Spring的轻量级特性和对POJO的支持可以让开发者迅速构建出符合需求的应用。而对于一个大型的分布式系统,比如银行的后台处理系统,则可能更适合使用EJB,因为...
此外,Spring还提供了对EJB的支持,可以将EJB作为Spring Bean来管理和使用。 2. **Struts 2**:作为MVC框架,Struts 2负责处理HTTP请求,将请求分发到相应的控制器,并将结果传递给视图层展示。它与Spring的集成...
综上所述,Spring与EJB的集成不仅可以通过XML配置文件实现对各种资源和服务的有效管理,还可以通过编程方式灵活地设置EJB上下文和其他相关配置。这种集成方式大大提高了开发效率,同时也增强了应用程序的稳定性和可...
在 Struts 2 的基础上,Spring 可以提供更深入的服务,如服务层的管理、数据持久化的支持。特别是,Spring 的 IoC 容器使得对象之间的依赖关系可以被外部容器管理,这样可以提高代码的解耦度和可测试性。同时,...
- 测试方面,Spring的Mockito和JUnit支持单元测试和集成测试,确保代码质量。 总的来说,ejb3+spring+struts的组合提供了强大的功能,使得开发者能够构建出稳定、高效的银行系统。它们之间的协同工作,使得代码结构...
另一方面,EJB 3.0框架是由Java社区进程(JCP)定义的标准框架,得到所有主要J2EE供应商的支持。虽然EJB 2.1被认为设计不当且过于复杂,但EJB 3.0通过引入Java注解(Annotation)极大地简化了EJB的使用,使其更易于...
我们也相信,对于很多 (不一定是绝大多数)应用和用例,相对于通过EJB容器来实现相同的功能而言, Sping作为容器,加上它在事务,ORM和JDBC存取这些领域中丰富的功能支持, Spring的确是更好的选择。