问题标签 [jta]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - JTA 事务中的 Hibernate Session 范围与 Open-Session-In-View
说使用JTA
带有 H 的 Transactions 与ibernate
使用 theOpen-Session-In-View
相对于会话范围进行对比是否正确?
从我已经能够在JTA
Transactions 中收集到的 Session 范围是一个事务(主要基于此链接),而在Open-Session-In-View
模式中,会话的范围是请求,您可以在其中有多个事务。
我问,首先要了解,其次要验证“谁”在使用时负责会话处理JTA
。
目前,当使用 时Open-Session-In-View
,我有一个HibernateUtil
处理会话的打开、检索和关闭的类(通过ThreadLocal<Session>
)。
我什么时候切换到使用JTA
将Hibernate
处理上述会话操作?(作为我调用 userTransaction.begin,userTransaction.rollback 的衍生产品)
顺便说一句,我问的是JTA
因为我需要协调交易Hibernate
JMS
,EHCache
所以这不是一般的最佳实践“让我们使用 JTA”的问题。
伊泰
java - ClassNotFoundException 与 EHCache-Atomikos
我正在尝试将 EHCache 的事务能力与 Atomikos 和 Apache Tomcat 一起使用(用于 JMS 和 Hibernate,但这只是为了向怀疑者保证我真的需要 JTA)。
我目前正在研究一个小型 POC,我试图在其中放置一个MyValue
实现的实例,Serializable
当我尝试提交事务时,我以 __ClassNotFoundException
作为根(堆栈跟踪位于末尾)。
当我 jarMyValue
文件并将其放在 %TOMCAT_HOME%\lib 下时,我没有例外。
重要的是要补充一点,因为我在atomikos 教程中看到了Atomikos 的 jar 和 EHCache jar 都在 %TOMCAT_HOME%\lib 下的指令。
这是报价:
当 Atomikos 事务管理器在 Tomcat 中全局安装时,您现在还必须将 JDBC 驱动程序安装在同一全局位置(即:安装到 TOMCAT_HOME/lib 文件夹中)。如果您不这样做,您将在 Web 应用程序部署期间收到 NoClassDefFoundErrors 或 ClassNotFoundException 甚至 ClassCastException。
这不是 Atomikos 或 Tomcat 的限制,而是 Tomcat 和 Atomikos 都必须遵循的 J2EE 类加载设计。
问题是我当然不能在那个文件夹下拥有我所有的值类。
我是否误输入了指令?
有没有人遇到过这个问题?
EHCache.xml
堆栈跟踪
jpa - EJB + POJO Helpers + EntityManager 的问题
我正在使用 EJB...我执行以下操作,但我不知道为什么注入的 EntityManager 没有按预期工作。
- EJB1 在 EJB2 上调用一个写入 DB 的方法。
- 当 EJB2 返回时,EJB1 向 MDB 发送一条消息。
- MDB 调用 EJB3 读取 DB 并做一些工作。
我的问题是使用 @PersistenceContext 注入所有 3 个 EJB 的 EntityManager 无法正常工作。在 EJB2 中调用 persist() 不会反映在 EJB3 中注入的 EntityManager 上。可能有什么问题?希望我把我的问题说清楚了。现在使用容器管理的事务。
java - javax.jms.ConnectionFactory 和 javax.jms.XAConnectionFactory 的区别
由于需要分布式事务,我正在进入 JTA 的世界,我不确定之间的差异javax.jms.ConnectionFactory
,javax.jms.XAConnectionFactory
或者更准确地说,它如何javax.jms.ConnectionFactory
执行我期望只能javax.jms.XAConnectionFactory
为我做的事情。
详细信息:我使用 Atomikos Essentials 作为我的事务管理器,并且我的应用程序在 Apache Tomcat 6 上运行。
我正在运行一个带有虚拟应用程序的小型 POC,其中我的 JMS 提供程序 ( OpenMQ
) 注册为JNDI
资源。
奇怪的问题是,在我的代码中我这样做:
后来在代码中,我在 a 中使用了这个会话,它在两个带有or 或的 s 中UserTransaction
完美地执行。MessageProducer
Commit
Rollback
我不明白的是,我怎么会使用javax.jms.XAConnectionFactory.createConnection()
方法并且我得到了一个Session
可以完成工作的方法?有什么javax.jms.XAConnectionFactory
作用?
我还要补充一点,我已经查看了两个类(和javax.jms.BasicConnectionFactory
)的源代码,并且我验证了 XA 类不会覆盖createConnection
.
java - UserTransaction 如何传播?
我有一个带有 bean 管理事务的无状态 bean,以及这样的方法:
那么如何UserTransaction
传播到OtherStatelessBeanLocal
bean?
java - EHCache 是否需要 put() 以反映实例的更改 (XA)?
我已经开始使用 EHCache 作为 JTA UserTransaction 中的事务缓存(XAResource),我看到的东西有点奇怪,至少在我看来,我想了解我的“看到”是否错误或者我的理解。
以下代码将返回false
假设MyClass
有一个类型的成员,MyOtherClass
并且changeSomeInnerReferrence
将引用从当前值更改为参数;还假设 equals 考虑了该成员。
我注意到,除非我在上面的代码myChache.put(key,a)
之前添加,否则ut.commit()
将返回false
.
这是为什么?这是缓存的一般行为吗?我认为一旦调用提交,更改内部引用就会传播到缓存中。
谢谢,
伊泰
spring - Spring 无法查找 jdbc 配置的数据源
我已经在 tomcat 5.5 上部署了我的应用程序,IDE 是带有 myeclipse 插件的 eclipse。当我尝试启动 tomcat 服务器时,出现以下错误:
错误 - ContextLoader.initWebApplicationContext(219) | 上下文初始化失败 org.springframework.beans.factory.BeanCreationException:创建 ServletContext 资源 [/WEB-INF/xaconfig/daoJPAConfig.xml] 中定义的名称为“dataSource”的 bean 时出错:调用 init 方法失败;嵌套异常是 javax.naming.NameNotFoundException: Name java:comp is not bound in this Context at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1412) at org.springframework.beans.factory.support .AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) 在 org.springframework.beans。
我已将 Apache Software Foundation\Tomcat 5.5\conf 中的数据源配置为:
我添加了 Apache Software Foundation\Tomcat 5.5\conf\ context.xml 页面,我添加了我的 webInf\web.xml
我正在使用 spring 框架,hybernate+jpa 。请告诉我,可能是什么问题?
hibernate - 选择的事务策略需要访问 JTA TransactionManager 或无法构建 EntityManagerFactory
我在 apache tomcat5.5 上使用 Spring 2.0.6 和 Hibernate 3.2.x,现在我们计划将我们的 hybernate 映射文件更改为 hybernate+jpa 支持映射文件。为此,我们创建了这样的文件
daoConfig.xml
在我的 daoconfig.xml 中,我给出了 persistence.xml 的路径,这是我的 persistence.xml 文件
这里我指定我的 orm 映射文件名
orm.xml 文件是
当我试图运行我的服务器时。我得到了错误
给我任何建议
hibernate - 无法使用休眠保存我的数据
我开始使用 Hibernate 并尝试将一些数据从 Web 应用程序保存到我的数据库中。
我的 servlet 代码在这里:
我的问题是它给了我错误:
javax.persistence.TransactionRequiredException:没有正在进行的事务
我已经在我的 persistence.xml 中添加了选项:
<property name="hibernate.hbm2ddl.auto" value="create"/>
它创造了我的桌子。所以我认为我的问题是我需要使我的代码具有事务性。但我该怎么做?
如果我尝试这样做:
它给出了错误(我认为是因为我在我的 persistence.xml 上将我的事务类型声明为“JTA”)。
那么,有人可以帮我解决这个问题吗?
提前致谢。
我通过这样做解决了我的问题:
在此链接中找到帮助:http: //java.sun.com/blueprints/guidelines/designing_enterprise_applications_2e/transactions/transactions6.html
但无论如何,欢迎对此提出一些建议。
java - 我可以在 commit() 之后重用 UserTransaction 实例吗?
下面代码中对 ut 实例的重用是否正确?
当 JNDI 资源这样定义时:
我不确定是否需要添加另一个查找,以便在开始新的 UserTransaction 之前从工厂检索新的 UserTransaction?
我认为这无关紧要,但正如资源定义所述,我使用 Atomikos 作为我的事务管理器(因此它是工厂作为工厂)。
谢谢,
伊泰