1.
JCF
介绍
<o:p></o:p>
3
.
1
两种打包部署方式
<o:p></o:p>
本框架提供两种部署方式。采用
ant
来编译,打包会分成三部分,一个是
ear
包,包括了后台所有的依赖包和代码,一个是客户端用的
jar
包
,
以
*client.jar
来标识,客户端引用此
jar
包就可以远程访问后台业务逻辑的入
BizDelegate
;另外一种部署方式是将后台所有的代码打包到一个
jar
包中,以
*server.jar
来标识,客户端直接引入此
jar
包和
Spring
的配置文件以及相关的依赖包就可以绕开
EJB
直接调有后台的业务逻辑。第一种部署方式在方法的调用链中有一个
SLSB
,后台必须要部署在
EJB
容器中,如
WebSphere
、
Weblogic
、
Jboss
等。第二种部署方式绕过了
SLSB
,系统可以在非
EJB
容器中运行,如
Tomcat
、
Resin
等。
在
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
继承抽象类
AbstractBizDelegate
,
AbstractBizDelegate
非常简单,根据配置文件的不同,利用
Spring
的设值注入功能,将不同的
Delegate
注入到
AbstractBizDelegate
中,前台在调用
getDelegate
方法时就会调用不同的
Delegate
,
init
方法是要执行一些系统初始化的数据,用
EJB
方式要得到一个
Session Bean
的
Home
接口,
Spring
的
ApplicationContext
初始化放到了
Session Bean
中。用非
EJB
方式就要初始化
Spring
的
ApplicationContext
并保存于一个
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>