- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 Spring 配置的 Web 应用程序,它通过以下监听器接收 JMS 消息:
public class EntityPersister implements MessageListener {
@Resource
private EntityManager entityManager;
@Override
public void onMessage(Message message) {
if (message instanceof TextMessage) {
TextMessage textMessage = (TextMessage) message;
Object entity = createEntity(textMessage);
entityManager.persist(entity);
entityManager.flush(); //for debugging only
}
}
}
当我在应用程序中执行此监听器时,我从 entityManager.flush()
行收到 NoTransactionException
。
我需要配置什么才能使实体管理器参与已经存在的 JTA 事务?
我已经在上述实现上尝试了@Transactional
,但没有成功。
ActiveMQ 用作 JMS 提供程序。 Spring 配置为:
<bean id="jmsConnectionFactory" class="com.atomikos.jms.AtomikosConnectionFactoryBean"
init-method="init" destroy-method="close">
<property name="uniqueResourceName" value="atomikos-activemq" />
<property name="xaConnectionFactory">
<!-- ActiveMQ wird als JMS Provider genutzt -->
<bean id="activeMQXAConnectionFactory"
class="org.apache.activemq.spring.ActiveMQXAConnectionFactory">
<property name="brokerURL">
<value>tcp://localhost:61616</value>
</property>
</bean>
</property>
<property name="maxPoolSize" value="2" />
<property name="localTransactionMode" value="false" />
</bean>
<bean id="entityPersister" class="EntityPersister" />
<bean id="jmsContainer"
class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="jmsConnectionFactory" />
<property name="destinationName" ref="entityDestinationName" />
<property name="messageListener" ref="entityPersister" />
<property name="sessionTransacted" value="true" />
<property name="transactionManager" ref="txManager" />
</bean>
OpenJPA 用作 JPA 提供程序。持久化单位是:
<persistence-unit name="somePU" transaction-type="JTA">
<jta-data-source>managedDataSource</jta-data-source>
<non-jta-data-source>nonManagedDataSource</non-jta-data-source>
<!-- some entity class listed here -->
<properties>
<property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)" />
</properties>
</persistence-unit>
Spring 配置为:
<!-- Construct Atomikos UserTransactionManager, needed to configure Spring -->
<bean id="atomikosTransactionManager" class="com.atomikos.icatch.jta.UserTransactionManager"
init-method="init" destroy-method="close">
<!-- when close is called, should we force transactions to terminate or
not? -->
<property name="forceShutdown" value="true" />
</bean>
<!-- Also use Atomikos UserTransactionImp, needed to configure Spring -->
<bean id="atomikosUserTransaction" class="com.atomikos.icatch.jta.UserTransactionImp">
<property name="transactionTimeout" value="300" />
</bean>
<!-- Configure the Spring framework to use JTA transactions from Atomikos -->
<bean id="txManager"
class="org.springframework.transaction.jta.JtaTransactionManager">
<property name="transactionManager" ref="atomikosTransactionManager" />
<property name="userTransaction" ref="atomikosUserTransaction" />
</bean>
<!-- enable the configuration of transactional behavior based on annotations -->
<tx:annotation-driven transaction-manager="txManager" />
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
<property name="persistenceUnitName" value="somePU" />
<property name="jpaPropertyMap">
<map>
<entry key="openjpa.ManagedRuntime" value="jndi" />
</map>
</property>
</bean>
<bean id="entityManager" factory-bean="entityManagerFactory"
factory-method="createEntityManager" />
OpenJPA 通过 JNDI 从持久性单元查找 XA 和非 XA 数据源。
最佳答案
如果您使用 setMessageListener()
,则 onMessage
中的消息接收会在单独的线程中异步发生。
entityManager
的注入(inject)发生在不同的线程中。通常事务是线程绑定(bind)的。因此,在消息接收开始之前,注入(inject)线程可能已经完成了其工作,并且其关联的事务已关闭。即使该事务仍然存在,也不会被纳入消息接收线程使用的同一全局事务中。
您可以通过在 onMessage
中显式创建/获取 entityManager
来验证它。这样,所有 XA 事务感知资源都应加入同一全局事务中,因为所有这些资源都是从同一线程打开的。
关于java - 为什么 JMS MessageListener 中使用的实体管理器不参与 JTA 事务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18572434/
最近我有兴趣加入一个开源的 p2p 文件共享项目。我对这个主题的了解不是那么具体,我的意思是我了解安全、网络、p2p 基础知识,但我仍然不知道从哪里开始同时了解全局和实际细节。简而言之,推荐的资源是什
自从百度发布超链接算法升级公告之后,看到很多SEO大神对于外链对排名的作用就更加讳莫如深,而作为个人站长,大家对于外链的看法各执一词。像高质量外链、外链作用、外链对排名的影响等等话题,各大论坛讨论的
老实说,这是一个家庭作业问题,但我已经浪费了好几个小时,而且无法正确解决。它返回错误数量的结果或错误的数据: 我需要选择参与指导电影和/或在电影中表演的每个人以及他们所做的次数,如果至少 5 次。 有
我只是想知道如何为我的应用程序激活 (RED) 东西。我在我的应用程序中添加了一个新的更新,看看是否有参与的复选标记,但没有。是否可能是 Apple 决定哪些应用“有资格”加入该计划? 提前致谢:)
在我的代码中我有这样的东西: struct SomeStruct { int test1; int test2; float test3; float test4; }; std::v
我有一个继承自 UIControl 的自定义类,用于获取触摸事件。它基本上是其他控件的集合,这些控件充当一个整体。我正在将我的应用程序从 xibs 转换为 Storyboard。除了这个之外,它基本上
我正在使用 expo 制作一个 React 应用程序,我想允许子元素出现在我的 TopicSection 元素中。我关注了this guide为了允许 JSX 元素中的子元素,并编写了以下代码。我尝试
根据 Uber 文档,应通过以下方式推荐新用户:“https://m.uber.com/sign-up?client_id=YOUR_CLIENT_ID ” 那么,有没有办法通过以下方式引用使用 oA
更新:这个问题至少通过 -XX:+UseCountedLoopSafepoints 和等于或高于 JDK 1.8.0_92 的 JVM 版本(使用 _161 测试)的组合粗略地解决了。 原创:包含 J
我有一个 Maven 项目,它编译为 webapp,具有标准 Maven war 布局。我正在尝试向同一个项目添加方面,但当部署为 Tomcat 上的 war 时,这些方面不会被触发。如果我将项目部署
现在 Facebook 会列出生日等事件的参与度,我想在我的网站上显示参与度。 有什么方法可以通过图形 API 让 friend 参与进来吗? 最佳答案 https://graph.facebook.
我正在安装 Engage! 我按照此处的安装说明进行操作:http://engagecsm.com/readme 我做的安装步骤: 添加互动!到应用程序的 Gemfile:gem 'engagecsm
对于以下实体关系结构,我正在努力弄清楚 LOAN 和 ITEM 实体之间的关系是否有效? LOAN 的弱实体使用 'loan_dateLeant' 的部分键和来自 CUSTOMER 和 ITEM 的主
我目前正在研究涉及 VBA 和 IE 的自动化流程。随着我的代码正在执行的多项操作,一切都与时俱进。问题是当我接近一个有 2 个下拉列表的部分时,在第一个下拉列表中做出某些选择后出现第二个下拉列表。
我有以下 Spring Integration 配置。我在这里所做的是dequeuing 来自主题的消息并在转换后将其发送到某个 HTTP 位置。 JMS 连接工厂 配置如下:
我正在使用 python-firebase在我的堆栈中记录点击次数和其他事件数据。它工作正常,但时不时地抛出这个堆栈跟踪: 'ConnectionError(MaxRetryError("HTTPSC
我是一名优秀的程序员,十分优秀!