Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 客户端之间的分布式事务->;服务器->;客户_Java_Transactions_Jms_Jta_Xa - Fatal编程技术网

Java 客户端之间的分布式事务->;服务器->;客户

Java 客户端之间的分布式事务->;服务器->;客户,java,transactions,jms,jta,xa,Java,Transactions,Jms,Jta,Xa,对于一个新项目,我正在寻找能让我的生活更轻松的技术。我的新项目基本上是两个客户端和一个服务器: client1向服务器发送消息1,服务器向client2发送消息1,client2对消息1执行某些操作 这可以通过普通java套接字或rmi或类似技术来实现。但问题是: 整个过程需要是一个事务。我的意思是,当client2无法处理message1时,client1和服务器需要知道这一点,并回滚已完成的任何操作 我的第一个想法是从client2向client1和服务器发送一条消息,并给出结果,但仔细想想

对于一个新项目,我正在寻找能让我的生活更轻松的技术。我的新项目基本上是两个客户端和一个服务器: client1向服务器发送消息1,服务器向client2发送消息1,client2对消息1执行某些操作

这可以通过普通java套接字或rmi或类似技术来实现。但问题是: 整个过程需要是一个事务。我的意思是,当client2无法处理message1时,client1和服务器需要知道这一点,并回滚已完成的任何操作

我的第一个想法是从client2向client1和服务器发送一条消息,并给出结果,但仔细想想,这将变得对错误敏感


我已经研究过jms、jta、jca等技术,但有点不知所措。我想可能有更简单的方法。

对于服务器组件,您可以尝试在成熟的JavaEE服务器(如JBossAS)中使用。在这种情况下,您的客户机将使用JMS与服务器通信。

我不确定JTA或JMS本身是否能够解决您的问题,因为即使是分布式事务也仍然在事务资源(如JMS代理和数据库)之间,而不是在应用程序之间

在您的情况下,我仍然会选择事务传输,例如JMS。这将为您提供“保证交付”,这可能会简化错误处理

1    c1 -> jms -> server -> jms -> c2   2

4    c1 <- jms <- server <- jms <- c2   3
1c1->jms->server->jms->c22

谢谢你的答复。但这并不能解决我的问题“整个过程需要是一个事务”。使用消息驱动bean,我只能在服务器和/或客户机上管理事务。我无法跨越client1、server和client2上的事务。你对如何解决这个问题有什么想法吗?谢谢你的回复。我很欣赏大家对这个问题的看法。我还没有决定如何“做”它,对于这些问题没有太多容易获得的信息。另外:现在正在考虑将c2置于支持事务的jca适配器之后。这可能解决了部分问题。