`
xyh
  • 浏览: 86032 次
  • 性别: Icon_minigender_1
  • 来自: China
社区版块
存档分类
最新评论

EJB3学习记录

    博客分类:
  • Java
阅读更多
EJB3.0和Spring2.5都高度支持annotations开发,可以提高开发效率。
下面简单的记录spring如何访问SessionBean
先定义一个通用的接口:PersonDAO.java
public interface PersonDAO{
	public boolean insert(Person person);
	public boolean update(Person person);
	public boolean delete(Integer id);
	public List queryList();
	public Person queryDetail(Integer id);
	public String getNameByID(Integer id);
  
}


远程接口:PersonDAORemote.java
@Remote
public interface PersonDAORemote extends PersonDAO{
  
}


本地接口:PersonDAOLocal.java
@Local
public interface PersonDAOLocal extends PersonDAO{
  
}


SessionBean:PersonDAOBean.java
@Stateless
@LocalBinding(jndiBinding = "cn/edu/net/dao/PersonDAO/local")
@RemoteBindings({@RemoteBinding(jndiBinding = "cn/edu/net/dao/PersonDAO/remote")})
public class PersonDAOBean implements PersonDAOLocal,PersonDAORemote{
	
	@PersistenceContext(unitName="testPU") 
	protected EntityManager em;
        .....
}


在Web.xml加人spring支持:
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath*:/applicationContext*.xml</param-value>
	</context-param>
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	<listener>
		<listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
	</listener>


配置applicationContext.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:jee="http://www.springframework.org/schema/jee"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"
	default-lazy-init="true" default-autowire="byName">

	<description>Spring配置文件</description>
	
	<!-- JNDI对象  -->
	<bean id="simpleJndiTemplate" class="org.springframework.jndi.JndiTemplate">
		<property name="environment">
			<props>
				<prop key="java.naming.factory.initial">org.jnp.interfaces.NamingContextFactory</prop>
				<prop key="java.naming.provider.url">localhost:1099</prop>
                <prop key="java.naming.factory.url.pkgs">org.jboss.naming:org.jnp.interfaces</prop>
			</props>
		</property>
	</bean>
   
    <!-- 访问远程无状态SessionBean -->
	<bean id="abstractRemoteSlsb" abstract="true" class="org.springframework.ejb.access.SimpleRemoteStatelessSessionProxyFactoryBean">
    	<property name="jndiTemplate" ref="simpleJndiTemplate" />
    	<property name="lookupHomeOnStartup" value="true"/>
	</bean>
	
	<!-- 访问本地无状态SessionBean -->
	<bean id="abstractLocalSlsb" abstract="true" class="org.springframework.ejb.access.LocalStatelessSessionProxyFactoryBean">
    	<property name="jndiTemplate" ref="simpleJndiTemplate" />
    	<property name="lookupHomeOnStartup" value="true"/>
	</bean>
	
	 <bean id="abstractSfsb"  abstract="true" class="org.springframework.jndi.JndiObjectFactoryBean">
      	<property name="jndiTemplate" ref="simpleJndiTemplate" />
     </bean>
	
      <!-- 实现了一个简单的stateless SessionBean-->
	<bean id="personDao" parent="abstractLocalSlsb">
		<property name="jndiName" value="cn/edu/net/dao/PersonDAO/local"/>
		<property name="businessInterface" value="cn.edu.net.dao.PersonDAO"/>
	</bean>
	
         <!-- 实现了一个简单的stateful SessionBean-->
	 <bean id="shoppingCart" parent="abstractSfsb">
	    <property name="jndiName">
            <value>cn/edu/net/stateful/ShoppingCart/local</value>
        </property>
	 </bean>

	
 	 <!-- 支持@Autowired -->
	 <context:annotation-config/>
	
	 <!-- 扫描Bean组件 -->
	 <context:component-scan base-package="cn.edu.net" />
</beans>


在业务类就可以这样调用:
PersonService.java:
@Service("personService")
public class PersonService {
	
	@Autowired
	private PersonDAO personDao;
        .......
}


一般系统开发中,绝大部分是stateless sessionbean,这种中粒度的slsb可重用性很好;相对来说,stateful sessionbean 用的比较少,一般小数据量的保存状态都直接放到httpsession里面去.

MDB VS Stand-alone JMS clients,优点就在于the EJB container can instantiate multiple MDB instances to handle multiple messages simultaneously.
A message-driven bean (MDB) acts as a JMS message listener.
就是说EJB容器可以实例化多个MDB,可以同时处理多个消息,MDB充当JMS消息的监听者

缺点呢:
One limitation of message-driven beans compared to standard JMS
listeners is that you can associate a given message-driven bean deployment with only one Queue or Topic
缺点在于一个指定的MDB只能绑定一个Queue,或者一个Topic.
分享到:
评论

相关推荐

    EJB3 学习笔记

    学习EJB3过程中自己总结的一些关于学习EJB3的技术点,以及可能遇到的问题

    Weblogic Ejb 学习笔记

    WebLogic EJB学习笔记主要涵盖了企业级Java Bean(Enterprise JavaBeans,简称EJB)在Oracle WebLogic Server中的应用和管理。EJB是Java EE(Java Platform, Enterprise Edition)平台的核心组件,用于构建可扩展、...

    ejb 学习笔记6

    ### EJB学习笔记第六部分详解 #### 一、EJB之间的调用 EJB (Enterprise JavaBeans) 是Java EE平台中用于开发分布式企业应用程序的重要组件。在实际开发过程中,经常需要一个EJB调用另一个EJB来实现更复杂的业务...

    EJB3.0 学习笔记

    **EJB3.0 学习笔记** EJB(Enterprise JavaBeans)是Java EE平台中的核心组件,用于构建可扩展的、安全的、事务处理的分布式应用程序。EJB3.0是EJB的一个重大更新,引入了许多改进,使得开发过程更为简化,降低了...

    ejb学习笔记

    在深入探讨《ejb学习笔记》这一主题之前,我们首先需要理解什么是EJB(Enterprise JavaBeans)。EJB是Java平台为企业级应用开发提供的一套组件模型,它属于J2EE(Java 2 Platform, Enterprise Edition)的一部分,...

    EJB3 PPT教程

    这个PPT教程详细介绍了EJB3的各种核心概念和技术,旨在帮助学习者掌握EJB3的核心特性并能实际应用到项目开发中。** **一、SessionBean** SessionBean是EJB中的一个关键组件,它代表了业务逻辑,通常处理单个客户端...

    EJB3基础教程

    EJB3是2006年发布的,相较于早期版本,它降低了学习曲线,引入了注解驱动的开发,消除了XML配置文件的需求,从而提高了开发效率。 ### 2. EJB3组件类型 EJB3包括三种主要组件: - **会话bean(Session Beans)**...

    EJB概述 学习笔记

    **EJB概述** Enterprise JavaBeans(EJB)是Java平台企业版(Java EE)的核心组成部分,主要用于构建可扩展、安全且事务处理...学习EJB可以帮助理解企业级应用的复杂性,同时也能更好地评估和选择现代化的开发方案。

    EJB基础(学习EJB者必看)

    对于想要深入理解EJB的开发者来说,"EJB基础(学习EJB者必看)"这个资源应该涵盖了EJB的基础概念、设计模式以及实际应用。 EJB基础学习中,首先会介绍EJB的基本类型,包括会话bean(Session Beans)负责处理客户端...

    Weblogic EJB 学习笔记

    Weblogic EJB 学习笔记主要涵盖了EJB(Enterprise JavaBeans)的基础知识,包括无状态会话bean、有状态会话bean和实体bean这三种主要的EJB类型,以及EJB在Weblogic服务器中的配置和事务管理。 1. **无状态会话bean*...

    EJB学习源代码

    【EJB学习源代码】是一份宝贵的资源,涵盖了企业级JavaBeans(Enterprise JavaBeans)的各种核心概念和技术。EJB是Java EE平台中的一个重要组件,它提供了服务器端的业务逻辑处理能力,支持分布式计算,适用于构建可...

    EJB学习资料

    以及两本外文pdf书籍及源码,分别为ejb-3_0-fr-spec-persistence.pdf和ejb-3_0-fr-spec-simplified.pdf,以及EJB课堂笔记.doc和EJB基础.chm、EJB学习笔记.doc,是初学者理想的学习资料。

    EJB3.0学习心得

    ### EJB 3.0 学习心得及关键技术解析 #### EJB 3.0 概述 EJB (Enterprise JavaBeans) 是一种基于 Java 的企业级应用开发模型,它为构建可伸缩、可移植且健壮的企业级应用程序提供了一种标准化的方法。随着技术的...

    Ejb学习

    **EJB(Enterprise JavaBeans)学习指南** EJB(Enterprise JavaBeans)是Java EE平台中的核心组件,主要用于构建可扩展的、安全的、事务处理的分布式企业级应用程序。EJB技术经历了从早期版本到现代EJB 3.x的演变...

    EJB3学习入门.zip

    在这个"**EJB3学习入门.zip**"中,我们主要关注EJB3.0的基础知识,包括它的核心概念、设计模式以及如何开始实践。 1. **EJB3.0的核心概念** - **实体Bean(Entity Bean)**:代表业务数据,通常是数据库中的记录。...

    EJB 规范学习文档

    **EJB(Enterprise JavaBeans)规范学习文档** EJB(Enterprise JavaBeans)是Java平台企业版(Java EE,以前称为J2EE)的核心组件之一,主要用于构建可复用的、安全的、分布式的企业级应用程序。EJB规范为开发人员...

    学习EJB3基础知识笔记

    在"学习EJB3基础知识笔记"中,我们将深入探讨EJB3的主要特性和使用方法。 1. **注解驱动的编程模型**: EJB3引入了注解,极大地减少了XML配置文件的使用。通过在实体类、接口或实现类上添加注解,如`@Entity`、`@...

Global site tag (gtag.js) - Google Analytics