目前javaEE应用的开发方式大致可以分为两种:一种以Spring、Hibernate等开源框架为基础即所谓的轻量级JavaEE应用;另一种则以EJB3+JPA为基础配合一些前端框架如JSF、struts2、SpringMvc等等的经典JavaEE开发模式。由于EJB2.0使用相对比较复杂,目前使用的情况来说很多企业基本上使用的是ssh架构,EJB3.0做了改善之后开始以spring+ejb+jpa的组合方式进行开发。
public class EJBFactory { public static Object lookup(String ejbRefName) { try{ InitialContext ctx=new InitialContext(); return ctx.lookup("java:comp/env/"+ejbRefName); <span style="white-space:pre"> </span> } catch(NamingException e) { e.printStackTrace(); } } }
<bean id="myComponent" class="org.springframework.ejb.access.LocalStatelessSessionProxyFactoryBean"> <property name="jndiName" value="ejb/myBean"/> <property name="businessInterface" value="com.mycom.MyComponent"/> </bean> <bean id="myController" class="com.mycom.myController"> <property name="myComponent" ref="myComponent"/> </bean>
<jee:local-slsb id="myComponent" jndi-name="ejb/myBean" business-interface="com.mycom.MyComponent"/> <bean id="myController" class="com.mycom.myController"> <property name="myComponent" ref="myComponent"/> </bean>
不管以哪种方式组合,最根本的还是需要通过jndi去查找相应的ejb,只不过三种方式是在jndi查找的基础上进行了封装,如工厂方法是将jdni查找的过程进行了封装;Spring提供了两种方法,一个是工厂构造出相应的ejb代理对象,这种方法是spring容器经常使用的一种方法;一种是通过拦截器实现,当有ejb请求是相应的拦截器会将请求传递给jndi查找到的ejb。三种方法都可以,只不过相对而言通过spring的方式更有效率更简单,好多问题spring容器都给我们解决了。
原文地址:http://blog.csdn.net/leimengyuanlian/article/details/41622041