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

Java 将多个桌面应用程序连接到一个联机数据库

Java 将多个桌面应用程序连接到一个联机数据库,java,php,mysql,synchronizing,Java,Php,Mysql,Synchronizing,我要开始一个新项目。它包括: Java桌面应用程序可通过客户端数据库从internet下载 互联网上的PHP网站带有一个服务器数据库 下载该应用程序的用户将使用该应用程序向本地数据库离线添加项目(现在是什么并不重要)。当/如果他在线,该项目将被添加到服务器数据库中,以便其他连接的用户(通过桌面应用程序或网站)可以看到它。 我在谷歌上搜索了这个问题,发现它比我想象的要复杂得多。解决方案之一是使用一些现成的工具,如SymmetricDS和Daffodil,以获得安全性、性能和可扩展性,但它们很难

我要开始一个新项目。它包括:

  • Java桌面应用程序可通过客户端数据库从internet下载
  • 互联网上的PHP网站带有一个服务器数据库
下载该应用程序的用户将使用该应用程序向本地数据库离线添加项目(现在是什么并不重要)。当/如果他在线,该项目将被添加到服务器数据库中,以便其他连接的用户(通过桌面应用程序或网站)可以看到它。 我在谷歌上搜索了这个问题,发现它比我想象的要复杂得多。解决方案之一是使用一些现成的工具,如
SymmetricDS
Daffodil
,以获得安全性、性能和可扩展性,但它们很难在客户端和服务器端进行配置和安装,并且需要访问命令提示符,这需要我将其传递到专用主机(好吧,这不是一个真正的问题)。此外,我想要的只是我所描述的,而不是这些工具实际提供的

  • 我可以在Java应用程序中自己实现这一点吗?也许可以在 web服务器PHP
我正在使用MySQL获取信息


编辑:真正重要的是将项目发送到服务器数据库。例如,使用RSS源读取可以减少阅读难度。

基本上,您可以使用HTTP/HTTPS API。当用户联机时,将项目发送到您的php文件并将项目标记为“已发送”在本地数据库。但您必须控制编辑或删除状态。因此,是的,这非常复杂,但却是一个解决方案。

我想到的最简单的解决方案是为每个项目保存一个最后编辑日期(在服务器上和客户端上)。此外,您还必须跟踪客户端何时从服务器获得上次更新

因此,每当客户机联机时,服务器都会向他发送所有更新


但是要做到这一点,你必须确保客户端和服务器上的时间是相同的,而且这并不能解决问题——如果两个客户端编辑同一个项目会发生什么情况。

CouchDB很好地解决了分布式同步问题,但它是一个NoSQL DB。根据你的应用程序应该做什么,使用它可以归结为using CouchDB实例既在应用程序内部本地,也在中央服务器上

不过,您必须处理冲突。CouchDB唯一支持您的是更容易检测冲突,以及两种冲突编辑的数据,因此您的应用程序可以自动或在用户帮助下解决冲突


另一方面,在中央服务器上生成一个唯一的id非常简单,只需将创建用户的id添加到每个项目id即可。

谢谢Icewind。项目不能由多个(其所有者)修改,但我看不出解决方案在哪里。您应该能够通过SymmetricDS实现您想要的功能(虽然您可能确实需要一台服务器,以便运行自己的Java应用程序)。当您说很难配置时,您是否担心用户可能需要如何处理它(在这种情况下,您可能可以将其嵌入自己的应用程序中)或者更多关于您可能需要管理的总体复杂性的信息?事实上,您是对的。我只是根据我的具体情况询问了一些更简单的方法,这似乎有效。我想我找到了一种更短的方法,使用PHP页面;我将数据发送到URL并通过HTTP发布。PHP页面将接收数据并将其保存到数据库中。您是否有我知道这是一个局部解决方案,但我认为事情变得更清楚了。谢谢tersakyan,你的回答非常有用。这里有一段很好的代码: