Spring支持EJB能够大致的分成两类:访问和实现。Spring中内置了三种抽象类作为EJB Bean的基类,相对应于EJB无状态Bean、有状态Bean和消息Bean,它们分别为AbstractStatelessSessionBean、AbstractStatefulSessionBean、AbstractMessageDrivenBean。运用时只要以它们为父类,作相应的扩展即可。
下面将介绍在Spring的配置文件ApplicationContext.xml中管理EJB的Bean。
Spring容器负责管理JavaBean和SessonBean,Spring的ApplicationContext以Framework的方式提供BeanFactory的所有功能。使用ApplicationContext,可以让系统加载你的Bean,当程序中需要用到Bean时,它就自动生成相应的Bean对象以供使用。本架构中使用Spring容器来管理EJB的Session Bean。applicationContext.xml配置文件如下:
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>WEB-INF/jboss.properties</value> </list> </property> </bean> <util:properties id="jndienvironment" location="WEB-INF/jndi.properties"/> <jee:remote-slsb id="ldUserUIDAO" jndi-name="LDUserUI/remote" business-interface="com.cugb.ejb.userManage.dao.LDUserUIDAORemote" resource-ref="true" environment-ref="jndienvironment" /> |
Spring可以通过jee:local-slsb注入本地的Session Bean,通过jee:remote-slsb注入远程的Session Bean,也可以通过jee:jndi-lookup直接指定JNDI的方式注入Session Bean。
如果客户端和服务器不在同一个Java VM上,那么在客户端必须提供一个jndi.properties文件告诉客户端进行有关JNDI命名服务的信息,并且把这个文件所在目录设定到环境。jndi.properties配置如下:
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory java.naming.provider.url=localhost:1099 |