- 浏览: 167342 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
ooo456mmm:
正解~~~
无需安装oracle,配置plsql developer -
tjuking:
帮我解决了一大问题,thx~
vim批量修改文件 解决 非法字符: \65279 问题 -
dou85dou:
where is lz's content?
如何打造Linux下的IDE
Seam的事务管理
Seam和jsf绑定在一起,seam将jsf的6个阶段包含在2-3个事务中。
1. 第一(二)阶段到第5阶段:
a) 对于JTA事务而言:beforeRestoreView------afterInvokeApplication
b) 对于resouce-Local事务而言:beforeApplyRequestValue------ afterInvokeApplication
2. 如果有page Action,则page Action包含在一个事务中
3. RenderResponse包含在一个事务中
为什么要使用2-3事务来保障一个request,而不是像ssh通常的那样,简单的在crud方法上加上事务呢?
对于1,2而言,主要原因是:防止由于renderresponse的异常,导致已经成功的业务逻辑回滚;同时,如果业务逻辑失败,可以回滚并且导航到其他的页面进行显示。
对于3而言,可能是因为seam认为,当绑定在页面的实体有延迟加载的需求时,如果不是在renderResponese阶段最外层显示的包裹一层事务,那么每次延迟加载引起的数据库查询,hibernate都会单独为这个查询启动和关闭一个事务,这会消耗更多的资源。
Seam提供了这种自动为每个request加上事务的功能,你可以选择将这个功能开启或者关闭。在component.xml中配置:
<core:init transaction-management-enabled=”false”/>
可以关闭seam的全局托管事务的功能。
如果你开启了seam的全局托管事务功能,你可以指定seam使用何种的事务管理器:
UTTransaction
CMTTransaction
EntityTransaction
HibernateTransaction
noTransaction
UTTransaction是seam默认的事务管理器,他会从Context中寻找“UserTransaction”。
CMTTransaction默认的ejb事务管理器,例如调用一个slsb的方法,该方法加了request_new事务,则这个事务由CMTTransaction管理。
如果你只使用一个resouce-local的数据源,不需要JTA事务的支持。那么对于一个resouce-local的数据源,采用JPA的EntityTransaction或者hibernate的hibernateTransaction即可。配置
<tx:entity-transaction/>使用EntityTransaction作为事务管理器
或者
<tx:hibernate-transaxtion/>使用hibernateTransaction作为事务管理器
这些事务管理器都是由seam提供的,他们都实现了seam的UserTransaction接口,只不过实现的方式有所不同。例如,Begin方法:
EntityTransaction通过调用entitymanager.gettransaction.begin实现。
hibernateTransaction通过调用session.gettransaction.begin实现。
根据自己的需要选择适合的事务管理器。
如果使用<tx:no-Transaction/>则一定要关闭seam全局托管事务,否则会seam调用Transaction.instance的方法时,会报异常。
===================================
JTATransaction与JdbcTransaction的区别
JdbcTransaction的使用流程是:
先打开session,再打开trans;最后关闭trans,关闭session。
JTATransaction的使用流程是:
先打开JTATrans,再打开各个session,关闭session,最后关闭JTATrans。
Seam和jsf绑定在一起,seam将jsf的6个阶段包含在2-3个事务中。
1. 第一(二)阶段到第5阶段:
a) 对于JTA事务而言:beforeRestoreView------afterInvokeApplication
b) 对于resouce-Local事务而言:beforeApplyRequestValue------ afterInvokeApplication
2. 如果有page Action,则page Action包含在一个事务中
3. RenderResponse包含在一个事务中
为什么要使用2-3事务来保障一个request,而不是像ssh通常的那样,简单的在crud方法上加上事务呢?
对于1,2而言,主要原因是:防止由于renderresponse的异常,导致已经成功的业务逻辑回滚;同时,如果业务逻辑失败,可以回滚并且导航到其他的页面进行显示。
对于3而言,可能是因为seam认为,当绑定在页面的实体有延迟加载的需求时,如果不是在renderResponese阶段最外层显示的包裹一层事务,那么每次延迟加载引起的数据库查询,hibernate都会单独为这个查询启动和关闭一个事务,这会消耗更多的资源。
Seam提供了这种自动为每个request加上事务的功能,你可以选择将这个功能开启或者关闭。在component.xml中配置:
<core:init transaction-management-enabled=”false”/>
可以关闭seam的全局托管事务的功能。
如果你开启了seam的全局托管事务功能,你可以指定seam使用何种的事务管理器:
UTTransaction
CMTTransaction
EntityTransaction
HibernateTransaction
noTransaction
UTTransaction是seam默认的事务管理器,他会从Context中寻找“UserTransaction”。
CMTTransaction默认的ejb事务管理器,例如调用一个slsb的方法,该方法加了request_new事务,则这个事务由CMTTransaction管理。
如果你只使用一个resouce-local的数据源,不需要JTA事务的支持。那么对于一个resouce-local的数据源,采用JPA的EntityTransaction或者hibernate的hibernateTransaction即可。配置
<tx:entity-transaction/>使用EntityTransaction作为事务管理器
或者
<tx:hibernate-transaxtion/>使用hibernateTransaction作为事务管理器
这些事务管理器都是由seam提供的,他们都实现了seam的UserTransaction接口,只不过实现的方式有所不同。例如,Begin方法:
EntityTransaction通过调用entitymanager.gettransaction.begin实现。
hibernateTransaction通过调用session.gettransaction.begin实现。
根据自己的需要选择适合的事务管理器。
如果使用<tx:no-Transaction/>则一定要关闭seam全局托管事务,否则会seam调用Transaction.instance的方法时,会报异常。
===================================
JTATransaction与JdbcTransaction的区别
JdbcTransaction的使用流程是:
先打开session,再打开trans;最后关闭trans,关闭session。
JTATransaction的使用流程是:
先打开JTATrans,再打开各个session,关闭session,最后关闭JTATrans。
发表评论
-
c++与java内存模型& c++ vTable
2012-11-03 16:25 1002参见: http://stackoverflow.com/q ... -
maven pom 指南
2012-11-03 15:56 774http://maven.apache.org/pom.htm ... -
could not discover transaction status
2012-11-01 18:08 1018https://community.jboss.org/thr ... -
zz java 类初始化顺序
2012-08-17 14:42 718zz from http://ig2net.info/arch ... -
JSP JSF tag关系
2012-07-12 23:44 939zz from http://drewdev.blogspot ... -
class泛型反射相关API介绍
2012-06-21 10:49 866class泛型反射相关API介绍: 1. getGeneri ... -
服务提供者框架(Service provider framework)
2012-06-14 16:55 1121服务提供者框架(Service provider framew ... -
JMS的使用
2012-05-30 16:24 9551. 何时使用MQ 如果仅仅是为了达到异步调用的目的, ... -
java EE 6 中Jsf 2.0 managedBean和CDI关系
2012-05-29 15:55 2761转自 :http://stackoverflow.com/qu ... -
maven 默认编码
2012-05-28 15:59 5427maven会使用平台的默认编码,中文系统就是GBK 如果使用 ... -
seam与jsf的结合
2012-04-10 23:02 874Seam与JSF的结合 1. 采用org.jboss.seam ... -
maven依赖之optional
2012-04-09 15:42 892http://maven.apache.org/guides/ ... -
Visualsvn+trac 0.12 配置
2012-03-13 09:54 937主要参考了: http://www.cnblogs.com/ ... -
seam 的interceptor分析
2012-03-12 10:36 10211. componet.initialInstance()的时 ... -
zzEJB sessionBean的生命周期
2012-02-29 22:18 827【译】 Stateless Session Be ... -
关于jboss 4 的JNDIVIew 名字空间
2012-02-27 18:11 1036Jboss JNDI http://do ... -
多个EJB entity jar 使用同一个 persistence.xml
2012-02-22 18:32 743可以利用 persistence.xml 的 class、ma ... -
java的ClassLoader机制
2012-02-22 16:27 863zz from :http://www.cnblogs.com ... -
关于JPA的FlushModel---Manual
2012-02-21 17:08 1710zz from : http://www.codeinstr ... -
hibernate 分页
2011-11-01 09:10 670setFirstResult 是起始数据,setMaxResu ...
相关推荐
Seam - 语境相关的组件[满江红20071230]............................................................................................................................ 1 Java EE 框架...........................
10. **Seam安全性和事务管理**:Seam提供了内置的安全框架和事务管理机制,学习如何配置和使用这些特性对于构建安全、可靠的业务应用非常重要。 总之,在开始Seam之旅之前,开发者应具备扎实的Java EE基础,了解...
2. **JPA集成**: Seam支持JPA,方便地处理数据库操作,包括实体管理和事务控制。 3. **EJB 3集成**: Seam与EJB 3的集成,使得企业级服务的开发变得简单,如会话bean、实体bean等。 4. **WS和JMS集成**: Seam还提供...
5. **持久化支持**:讨论Seam对JPA和Hibernate的支持,包括实体管理和事务管理。 6. **安全管理**:学习Seam的认证和授权机制,如使用Security子模块。 7. **事件和回调**:了解Seam事件系统的工作方式,以及如何...
3. **事务管理**:Seam自动管理Hibernate的事务,使得开发者无需编写繁琐的事务控制代码。在JSF动作事件触发时,Seam可以自动开启、提交或回滚事务。 4. **安全性和身份验证**:Seam提供了内置的安全框架,可以轻松...
还有可能包含`seam-core.jar`,这是Seam框架的基础模块,提供了核心功能,如事件处理、安全性、会话管理和事务管理。此外,`seam-persistence.jar`可能包含Seam对JPA(Java Persistence API)的支持,用于数据库持久...
Seam 2.0与JPA的集成使得数据库操作变得更加简单,支持实体管理和事务控制。 三、Seam 2.0的开发工具和资源 在`jbosseam2.0文档.CHM`中,开发者可以找到详细的API参考、教程、最佳实践以及常见问题解答。这份文档...
Entity Bean对应数据库表,负责数据持久化,而Session Bean则处理业务逻辑、事务管理、页面交互及页面流程控制。这种设计大大减少了配置文件的数量,简化了项目的架构,使开发者能够专注于业务逻辑的实现,而不是...
其中,AOP使得开发者可以方便地定义横切关注点,如日志、事务管理等,提高代码的可维护性。 《Seam in Action》这本书详细介绍了如何使用Seam进行实际项目开发,包括设置环境、创建Seam应用、使用Seam组件、调试和...
4. **安全和事务管理**:学习Seam的安全框架和事务管理机制,确保应用的安全性和数据一致性。 5. **富客户端集成**:了解如何将Seam与RichFaces等富客户端框架结合,创建交互性强的Web应用。 6. **开发流程和实践**...
它不仅与Java Persistence API(JPA)紧密配合,实现了数据持久化,还通过Seam Transactions管理事务,确保了业务操作的完整性和一致性。此外,Seam还支持Spring、Hibernate等流行框架,使得开发者可以充分利用现有...
Seam 是一个强大的 Java EE 框架,它整合了 JSF、EJB 3、CDI 等技术,提供了丰富的功能,如事务管理、安全控制、状态管理等。 Seam-gen 提供了两种使用方式:命令行脚本和 IDE 插件。命令行版本基于 Ant,生成的...
- 包括 EJB 的事务管理、安全性等设置。 - **1.2.1.8 EJB 持久化部署描述符:persistence.xml** - 此文件定义了持久化单元和数据源配置。 - 包括数据源名称、JPA 提供者等信息。 - **1.2.1.9 视图:register....
此外,Seam还整合了`EJB`,使得开发者可以轻松地利用EJB的强大功能,如事务管理、安全性和可扩展性。 `Ajax`支持使得Seam应用能够实现部分页面更新,提供更流畅的用户体验。Seam与`RichFaces`的集成则进一步增强了...
《JBoss Seam》是另一本关于Seam的著作,它不仅介绍了Seam的基本功能,还提供了高级特性的深入讨论,包括事务管理、安全性、AOP(面向切面编程)和实时通信等。这本书有助于开发者更全面地理解和掌握Seam框架,提升...
- **EJB部署描述符**:`ejb-jar.xml`配置了EJB模块的信息,如事务管理、安全性等。 - **持久化部署描述符**:`persistence.xml`定义了持久层的配置,如数据源、实体映射等。 - **视图**:`register.jsp` 和 `...
**EJB(Enterprise JavaBeans)**:EJB是Java平台上的企业级组件模型,用于构建可部署在Java EE服务器上的分布式、事务处理、安全和可管理的企业级应用。EJB组件主要包括三种类型:Session Beans(用于处理业务逻辑...
Seam是一个Java EE框架,它将企业...在实践中,不断探索Seam的高级特性,如CDI(Contexts and Dependency Injection)、EJB(Enterprise JavaBeans)集成、以及安全和事务管理,将有助于进一步提升开发效率和应用质量。
在Seam工程中,EJB常被用作业务逻辑层,处理数据库操作、事务管理等。EJB有三种主要类型:Stateless Session Beans(无状态会话豆)、Stateful Session Beans(有状态会话豆)和Message-driven Beans(消息驱动豆)...