EJB3简介、环境搭建、的三种bean

简介:

    EnterpriseJavaBeans是一个用于分布式业务应用的标准服务端组件模型。采用Enterprise JavaBeans架构编写的应用是可伸缩的、事务性的、多用户安全的。采用ejb编写的这些应用,可以部署在任何支持Enterprise JavaBeans规范的服务器平台,如jboss、weblogic等。

    EJB实际上是用于编写业务层代码。如果大家对于MVC (model-view-controller)结构的应用有所了解的话,我们知道一个基于MVC结构的应用应包含显示层、控制层和业务层, 假设我们采用ejb开发基于MVC结构的应用,那么ejb就是用于开发应用的业务层。

    EJB为我们提供了很多在企业开发中需要使用到的服务,如事务管理/安全/持久化/分布式等,因为这些服务由容器提供,无需我们自行开发,这样大大减少了我们的开发工作量。另外EJB提供了强制式分层解耦设计方法。

EJB的分布式特点


EJB3的运行环境

    首先,配置jdk环境变量是必须的。具体配置略。

    重点介绍jboss的配置。关于现在的jboss版本及其介绍可以参加这篇文章:

http://teddysun.com/260.html  也可参见自己转载的文章:JBoss主要版本下载链接一览

 

启动jboss:

    进入jboss的bin目录,找到启动脚本run.bat。双击run.bat即可启动jboss,此时启动的配置项为default。

jboss启动排错的几种情况:

(1)JAVA_HOME没有设置好。

(2)如果不能启动,可以追加:JBOSS_HOME环境变量。

(3)端口是否被占用,如:8080、1099。

(4)如果启动时出现这样的错误:“findstr不是内部或外部命令,也不是可运行的程序或批处理文件”。那么应该在系统变量Path中追加“%SystemRoot%\system32;%SystemRoot%;

(5)“Error installing to Instantiated: name=AttachmentStorestate=Described”错误的解决办法:

解决方法倒很简单,只要修改一下profile.xml(JBOSS_HOME/server/default/conf/bootstrap/profile.xml)中的 AttachmentStore设置就可以了。在该文件中,你可以找到: 

<bean name="AttachmentStore" class="org.jboss.system.server.profileservice.repository.AbstractAttachmentStore">

	<constructor> 
		<parameter> 
			<inject bean="BootstrapProfileFactory" property="attachmentStoreRoot" />

		</parameter> 
	</constructor> 
	<property name="mainDeployer"><inject bean="MainDeployer" /></property> 
	<property name="serializer"><inject bean="AttachmentsSerializer" /></property> 
	<property name="persistenceFactory"><inject bean="PersistenceFactory" /></property> 
</bean>

 

只需将它改为:

<bean name="AttachmentStore" class="org.jboss.system.server.profileservice.repository.AbstractAttachmentStore">

	<constructor> 
		<!-- 修改这里 --> 
		<parameter class="java.io.File"> 
			<inject bean="BootstrapProfileFactory" property="attachmentStoreRoot" /> 
 		</parameter> 
 	</constructor> 
 	<property name="mainDeployer"><inject bean="MainDeployer" /></property>

 	<property name="serializer"><inject bean="AttachmentsSerializer" /></property> 
 	<property name="persistenceFactory"><inject bean="PersistenceFactory" /></property> 
</bean>


EJB中的三种bean

1.会话bean(session bean)

   负责与客户端交互,是编写业务逻辑的地方,在会话bean中可以通过jdbc直接操作数据库,但大多数情况下都是通过实体bean来完成对数据库的操作。

•       无状态会话bean

平常,我们使用最多的是无状态bean,因为它的bean实例可供多个用户使用,所以它的性能比有状态bean高。正因为一个bean实例被多个用户使用,那么,前一个用户设置的值有可能被后一个用户所修改,所以它无法正确保存某个用户设置的值,因此是无状态的。

•       有状态会话bean

有状态bean平常使用的并不多,因为它的一个bean实例只供一个用户使用,所以性能开销比较大,正因为它的实例只被一个用户使用,用户为它设置的值是不会被其他用户修改,所以可以正确保存用户设置的值,因此是有状态的。

 

2.实体bean(entity bean)

   它实际上属于java持久化规范(简称JPA)里的技术, JPA的出现主要是为了简化现有的持久化开发工作和整合ORM技术,结束现在Hibernate、TopLink等ORM框架各自为营的局面。

 

3.消息驱动bean(message-drivenbean)

   它是专门用于异步处理java消息的组件,具有处理大量并发消息的能力。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
EJB(Enterprise JavaBeans)中,Session Bean 和 Entity Bean 是两种不同类型的组件,用于实现不同的功能。 1. Session Bean(会话Bean): Session Bean 是用于处理业务逻辑的组件。它代表了一个特定的会话,可以执行一系列相关的操作。Session Bean 可以分为以下两种类型: - Stateless Session Bean(无状态会话Bean):它不保存客户端的状态信息,每个方法调用都是独立的。适用于无需保存客户端状态的业务逻辑。 - Stateful Session Bean(有状态会话Bean):它保存了客户端的状态信息,可以跟踪多个方法调用之间的状态。适用于需要保存客户端状态的业务逻辑。 2. Entity Bean(实体Bean): Entity Bean 用于表示业务领域中的实体对象,例如数据库表中的行。它们持久化到数据库中,并提供对这些实体对象的增删改查等操作。Entity Bean 可以分为以下两种类型: - Container-Managed Persistence(CMP):容器管理持久化。在 CMP 中,容器负责管理实体的持久化,开发人员只需定义实体类和相关的映射关系。 - Bean-Managed Persistence(BMP):Bean管理持久化。在 BMP 中,开发人员需要自己编写代码来控制实体的持久化和数据库访问。 区别和含义: - Session Bean 主要用于处理业务逻辑,不负责持久化数据,而 Entity Bean 用于表示实体对象,并负责将实体对象持久化到数据库中。 - Session Bean 可以是无状态或有状态的,而 Entity Bean 通常是有状态的,因为它们需要维护实体对象的状态和标识。 - Session Bean 的生命周期由客户端决定,而 Entity Bean 的生命周期由容器管理。 - CMP 提供了更简单的持久化解决方案,开发人员无需编写 SQL 或 JDBC 代码,而 BMP 需要开发人员手动管理数据库访问和事务。 需要注意的是,EJB 在 Java EE 6 版本之后已经进入了轻量级的 CDI(Contexts and Dependency Injection)时代,推荐使用 CDI 来管理会话和实体等组件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值