`

基于Spring和EJB的JCF通用调用框架的研究与实现(2)

    博客分类:
  • Java
阅读更多
  1.       JCF介绍<o:p></o:p>
31 两种打包部署方式<o:p></o:p>
本框架提供两种部署方式。采用ant来编译,打包会分成三部分,一个是ear包,包括了后台所有的依赖包和代码,一个是客户端用的jar,*client.jar来标识,客户端引用此jar包就可以远程访问后台业务逻辑的入BizDelegate;另外一种部署方式是将后台所有的代码打包到一个jar包中,以*server.jar来标识,客户端直接引入此jar包和Spring的配置文件以及相关的依赖包就可以绕开EJB直接调有后台的业务逻辑。第一种部署方式在方法的调用链中有一个SLSB,后台必须要部署在EJB容器中,如WebSphereWeblogicJboss等。第二种部署方式绕过了SLSB,系统可以在非EJB容器中运行,如TomcatResin等。
Spring的配置文件中做如下配置:

     <bean id=" BizDelegate" class="com.gsta.bnet.bizservice.BizDelegate"><o:p></o:p>
    <property name="delegate"><o:p></o:p>
         <ref bean="POJODelegate" /><o:p></o:p>
    </property><o:p></o:p>
</bean><o:p></o:p>
    <bean id="POJODelegate"<o:p></o:p>
         class="com.gsta.bnet.bizservice.POJODelegate"><o:p></o:p>
    </bean><o:p></o:p>
    <bean id="EjbDelegate"<o:p></o:p>
         class="com.gsta.bnet.bizservice.EjbDelegate"><o:p></o:p>
 </bean>

<o:p> </o:p>
BizDelegate所注入的ref bean指向EjbDelegate的时候,前台是通过远程EJB的方式来调用后台程序的,这种方式适合前台和后台分离的情况。当BizDelegate所注入的ref bean指向POJODelegate的时候,前台是通过非EJB方式来访问后台的。BizDelegate继承抽象类AbstractBizDelegateAbstractBizDelegate非常简单,根据配置文件的不同,利用Spring的设值注入功能,将不同的Delegate注入到AbstractBizDelegate中,前台在调用getDelegate方法时就会调用不同的Delegateinit方法是要执行一些系统初始化的数据,用EJB方式要得到一个Session BeanHome接口,SpringApplicationContext初始化放到了Session Bean中。用非EJB方式就要初始化SpringApplicationContext并保存于一个ServiceLocator类中。AbstractBizDelegate的关键代码如下:<o:p></o:p>

    private DelegateType delegate;<o:p></o:p>
    public void setDelegate(DelegateType delegate) {<o:p></o:p>
       this.delegate = delegate;<o:p></o:p>
    }<o:p></o:p>
    public DelegateType getDelegate() {<o:p></o:p>
       return delegate;<o:p></o:p>
    }<o:p></o:p>
    public synchronized boolean init(String jndiName)<o:p></o:p>
    {<o:p></o:p>
       return delegate.init(jndiName);<o:p></o:p>
    }

<o:p> </o:p>
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics