springmvc与ejb整合

一、企业开发模式

     目前javaEE应用的开发方式大致可以分为两种:一种以Spring、Hibernate等开源框架为基础即所谓的轻量级JavaEE应用;另一种则以EJB3+JPA为基础配合一些前端框架如JSF、struts2、SpringMvc等等的经典JavaEE开发模式。由于EJB2.0使用相对比较复杂,目前使用的情况来说很多企业基本上使用的是ssh架构,EJB3.0做了改善之后开始以spring+ejb+jpa的组合方式进行开发。

二、SpringMvc+ejb整合

    1.通过工厂的方式

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();
       }
    }
}

    2.通过Spring将两者结合

         方法一、通过spring提供的ejb代理对象

<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> 或者 <jee:remote-slsb> 

<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容器都给我们解决了。

你可能感兴趣的:(spring,jpa,EJB3.0)