gpt4 book ai didi

transactions - 如何在EJB中执行XA事务?

转载 作者:行者123 更新时间:2023-12-04 04:36:57 26 4
gpt4 key购买 nike

我有一个MDB在听特定的话题。

我已经用jboss配置了XA数据源...

我已经设置了持久性.xml

<persistence-unit name="jpa" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>java:jdbc/BKS_DataSource</jta-data-source>
<class>com.jms.mdb.SampleData</class>
<properties>

<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>

<property name="hibernate.hbm2ddl.auto" value="update"/>

<property name="hibernate.show_sql" value="true"/>
<!--
<property name="hibernate.format_sql" value="true"/>
-->
</properties>
</persistence-unit>


每当我收到消息时,我只需在MDB中执行此代码

@PersistenceContext
EntityManager em = null;

public void onMessage(Message message) {
try {

LoggingEvent event = (LoggingEvent)((ObjectMessage)message).getObject();
System.out.println("Received something11");
SampleData s= new SampleData();
s.setMessage(event.getLoggerName());
em.persist(s);

System.out.println("Persisted");

//Create.main(null);
} catch (JMSException e) {
e.printStackTrace();

}
}


所以基本上我需要执行两阶段提交事务...所以我想知道应该执行XA事务....而且我只想在Java EE 5上执行它

最佳答案

如果您的数据源配置为XA数据源,那么您要做的就是用适当的事务管理注释为MDB注释:

@MessageDriven
@TransactionManagement(CONTAINER)
@TransactionAttribute(REQUIRED)
public class MyMDB implements MessageListener {

public void onMessage(Message message) {
// Hello, message!
}

}

关于transactions - 如何在EJB中执行XA事务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7212120/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com