有人知道 GlassFish 5 是否支持通过 2PC(XA 协议(protocol))使用全局事务?但无需安装额外的工具。
我在 GlassFish“开源 Java EE 引用实现”页面中查找了信息,我在其中下载了应用程序服务器(以及其他页面),但我没有运气。
我尝试在两个微服务中执行事务,在数据库中插入两个值。我已经使用“com.mysql.jdbc.jdbc2.optional.MysqlXADataSource”配置了 GlassFish 的 JNDI,它看起来可以工作,但是当我检查数据库时,仅添加了一项服务的值。 (与2PC的全局交易不起作用)。我开始认为 GlassFish 不支持 2PC。
我读到它可以用 tomcat 来做到这一点,但我需要添加像atomikos、bitronix 等工具。这个想法是可以用 glassfish 来做到这一点,而无需安装任何其他东西。
问候。
最佳答案
Does someone know if GlassFish 5 has support to use global transactions with 2PC (XA protocol)? but without install extra tools.
Glassfish 5 支持使用 XA 数据源的事务。您可以创建一个程序来执行组合多个数据库上的操作的事务。例如,您可以创建一个对 Oracle 和 IBM DB2 数据库执行操作的事务。如果事务中的一项操作失败,则其他操作(在同一数据库和其他数据库中)将不会执行或回滚。
I try doing transactions in two microservices that insert two values in the data base. I have configured the GlassFish's JNDI with "com.mysql.jdbc.jdbc2.optional.MysqlXADataSource" and it looks like working, but when I check the data base only is added a value of one service.
如果您的程序在事务中调用 REST/Web 服务,则其他 REST/Web 服务执行的操作不会加入到该事务中。程序中的错误不会导致已调用的 REST/webservice 执行的操作发生回滚。
关于java - GlassFish 5 中的 2PC 事务(交叉事务),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46028845/