Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.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_Synchronization_Versioning - Fatal编程技术网

Java 在不同的应用程序之间同步数据的推荐方法是什么?

Java 在不同的应用程序之间同步数据的推荐方法是什么?,java,synchronization,versioning,Java,Synchronization,Versioning,我有一个用J2EE+Spring+Hibernate编写的应用程序(称之为app1),现在我的老板希望另一个应用程序(app2,完全不同,使用不同的技术编写)可以定期自动与之同步(至少是app1到app2的一种方式)。我从来没有做过这样的事。。。我可以想到这个问题:app2调用app1(可能使用Web服务),如何知道自上次同步以来添加和更新了哪些数据?我想到的是在主app2的每个表上添加一个时间戳列,这样app1可以说“给我时间戳xxxx之后更改或添加的所有内容。这涉及到修改许多内容。在不修改太

我有一个用J2EE+Spring+Hibernate编写的应用程序(称之为app1),现在我的老板希望另一个应用程序(app2,完全不同,使用不同的技术编写)可以定期自动与之同步(至少是app1到app2的一种方式)。我从来没有做过这样的事。。。我可以想到这个问题:app2调用app1(可能使用Web服务),如何知道自上次同步以来添加和更新了哪些数据?我想到的是在主app2的每个表上添加一个时间戳列,这样app1可以说“给我时间戳xxxx之后更改或添加的所有内容。这涉及到修改许多内容。在不修改太多应用程序结构的情况下,我可以使用哪些其他功能来解决这个问题?”?(假设数据库不同,我不想让服务器上的每个人都可以使用数据库端口)


最后,我忘了,行删除怎么办?时间戳解决不了这个问题…

看看Terracotta(http://www.terracotta.org/),它是一个非常健壮的框架,用于在机器之间同步对象。

您可能需要查看一些数据库同步实用程序。我认为这会更好。

通过同步,您的意思是app2访问的数据应该与app1访问的数据相同吗(也就是说,app2应该能够看到由app1更新/修改的最新数据)


如果是这种情况,为什么不将app2指向app1使用的同一个数据库?

您可以在app2中维护更改日志。插入/更新/删除触发器可以维护此日志表。app1可以读取该表以获取更改并定期删除处理过的日志行。

是的,但我明确表示不需要外部访问此外,app2使用不同的技术,所以它不能使用同一个数据库。因此,它基本上归结为这一点-app2的数据库需要与app1的数据库同步。如果需要,您可以查看一些工具。