Tag: jta

Spring JTA配置 – 如何设置TransactionManager?

我们将Spring配置中的Spring事务配置为: 我收集这意味着Spring将自动发现底层的JTA实现。 因此,当我们启动JBoss时,我们会在Spring搜索时看到这些消息: [JtaTransactionManager] [ ] No JTA TransactionManager found at fallback JNDI location [java:comp/Tran sactionManager] javax.naming.NameNotFoundException: TransactionManager not bound <> <> 然后最终看到: [JtaTransactionManager] [ ] JTA TransactionManager found at fallback JNDI location [java:/Transaction Manager] [JtaTransactionManager] [ ] Using JTA UserTransaction: org.jboss.tm.usertx.client.ServerVMClientUserT ransaction@1f78dde 问题是 – 我们如何编辑标签以显式配置java:/Transaction Manager JTA实现,以便我们避免日志中的所有这些堆栈跟踪? (我不想只改变Log4J日志记录级别) 更新 :我用以下配置替换了 ,它似乎工作..我猜这是好的吗?

为什么具有分离数据源的不同持久性单元会查询相同的数据源?

我正在开发一个需要访问两个不同数据库服务器(H2和Oracle)的webapp。 容器是Apache Tomee 1.5.1 ,我使用Java EE堆栈,其中包含库(JSF,JPA,CDI,EJB等)。 我正在尝试在XA事务中使用两个实体管理器从Oracle数据库中提取数据并在转换后将其保留在H2中,但无论我使用的实体管理器如何,所有查询都是针对H2数据库执行的。 有帮助吗? 编辑 :我发现,如果我尝试以相反的顺序访问实体管理器,它们的行为是相同的,但访问Oracle。 即:实体经理留在第一个访问的数据库。 发生这种情况的EJB service.getFoo()从JSF调用service.getFoo() ): @Named @Stateless public class Service { @Inject @OracleDatabase private EntityManager emOracle; @Inject @H2Database private EntityManager emH2; @TransactionAttribute(TransactionAttributeType.REQUIRED) public List getFoo() { TypedQuery q = emH2.createQuery( “SELECT x FROM Foo f”, Foo.class); List l = q.getResultList(); if (l == null || l.isEmpty()) […]

JTASessionContext与JDBCTransactionFactory一起使用; 使用getCurrentSession()自动刷新将无法正常运行

在我的应用程序中使用hibernate,每次进行事务时,都会收到此警告。 这是垃圾邮件我的日志。 JTASessionContext being used with JDBCTransactionFactory; auto-flush will not operate correctly with getCurrentSession() 我认为它是由hibernate.current_session_context_class属性引起的。 net.sourceforge.jtds.jdbc.Driver 5 false org.hibernate.dialect.SQLServerDialect jta 这是我应该担心的事吗? 如果没有,我怎么能阻止警告出现。

带有JTA的JPA:持久化实体并合并级联子实体

我与以下实体类具有双向一对多关系: 0或1个客户 0个或更多产品订单 当持久化客户端实体时,我也希望持久化相关的产品订单实体(因为它们的“父”客户端的外键可能已被更新)。 当然,所有必需的CASCADE选项都在客户端设置。 但是,如果在引用现有产品订单时第一次持久保留新创建的客户端,则不起作用 ,如下所示: 产品订单“1”已创建并保留。 工作良好。 创建客户’2’并将产品订单’1’添加到其产品订单列表中。 然后它坚持下去。 不起作用。 我尝试了几个apporaches,但没有一个显示预期的结果。 请参阅下面的结果。 我在这里阅读了所有相关问题,但他们没有帮助我。 我在GlassFish 3.1.2上的Apache Derby(JavaDB)内存数据库中使用EclipseLink 2.3.0,纯JPA 2.0注释和JTA作为事务类型。 实体关系由JSF GUI管理。 对象级关系管理工作(除了持久),我用JUnit测试测试它。 方法1)“默认”(基于NetBeans类模板) 客户: @Entity public class Client implements Serializable, ParentEntity { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; @OneToMany(mappedBy = “client”, cascade={CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH}, fetch= FetchType.LAZY) […]

什么是优秀的开源Java SE JTA TransactionManager实现?

基本上,它在锡上说的是什么; 我需要一个可在Java SE应用程序中使用的JTA实现,理想情况是它不会带来太多的框架负担。

@Resource UserTransaction和EntityManager.getTransaction()之间有什么区别

谁能解释一下有什么区别: @Resource UserTransaction objUserTransaction; 和 EntityManager.getTransaction(); 什么是容器管理交易? 如果我想在事务中的表中插入三行,我应该如何在会话外观中执行此操作。

EntityManager不会看到在其他事务中所做的更改

我正在为GlassFish 2.1.1(JavaEE 5,JPA 1.0,据我所知)编写一些应用程序。 我的servlet中有以下代码(我主要借用Internet上的一些示例): @PersistenceContext(name = “persistence/em”, unitName = “pu”) private EntityManager em; @Resource private UserTransaction utx; @Override protected void doPost(…) { utx.begin(); . . . perform retrieving operations on em . . . utx.rollback(); } web.xml包含以下内容: persistence/em pu 问题是,em没有看到在另一个外部事务中所做的更改。 粗略地说,我从Web浏览器向我的servlet发出请求,查看数据,在SQL控制台中执行一些DML,重新加载servlet页面 – 并且它没有显示任何更改。 我试过使用em.flush , utx.rollback和em.joinTransaction许多组合,但它似乎没有任何好处。 由于我是JPA的新手,所以情况变得复杂,因此我对底层机械的工作原理并不清楚。 所以任何帮助 – 更重要的是 – 对那里发生的事情的解释/链接将非常感激。 谢谢!

UserTransaction如何传播?

我有一个带有bean管理事务的无状态bean,以及一个这样的方法: @Stateless @TransactionManagement(TransactionManagementType.BEAN) public class … { @Resource private UserTransaction ut; @EJB private OtherStatelessBeanLocal other; public void invokeSomeMethods() ut.begin(); … // invoke other bean’s methods here. other.method(); … ut.commit(); } } 那么UserTransaction如何传播到OtherStatelessBeanLocal bean?

如何在Java EE环境中管理数据库和文件系统的事务?

我将文件的属性(大小,更新时间……)存储在数据库中。 所以问题是如何管理数据库和文件的事务。 在Java EE环境中,JTA只能管理数据库事务。 如果更新数据库成功但文件操作失败,我应该为此编写文件回滚方法吗? 此外,EJB容器中的文件操作违反了EJB规范。 你怎么看?

如何在Tomcat 6中使用JTA支持Hibernate?

他们建议在Java EE环境中使用JTA事务支持。 但是如何在Tomcat6中配置JTA以便Hibernate Session可以使用它呢? 从版本3.0.1开始,Hibernate添加了SessionFactory.getCurrentSession()方法。 最初,这假定使用JTA事务,其中JTA事务定义了当前会话的范围和上下文。 鉴于众多独立JTA TransactionManager实现的成熟,大多数(如果不是全部)应用程序应该使用JTA事务管理,无论它们是否部署到J2EE容器中。 基于此,您需要使用基于JTA的上下文会话。 ( Hibernate参考文档|架构。上下文会话 )