Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.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服务器处理对XML文件的并发访问_Java_Xml_Tcp - Fatal编程技术网

使用java服务器处理对XML文件的并发访问

使用java服务器处理对XML文件的并发访问,java,xml,tcp,Java,Xml,Tcp,在应用程序Im中,服务器将使用XML数据库获得有关用户的信息。管理员用户也可以写入/读取这些文件的信息。 如何处理对这些文件的并发访问? 用户/管理员读取/写入这些文件的唯一方法是向服务器发出请求(套接字、TCP连接),因此服务器必须处理此问题。 我能做什么?我可以同步服务器方法,但我不想在管理员编写用户B文件时避免用户A访问他的文件。我的第一个建议是使用数据库而不是文件,它们已经处理了锁 您应该发布一个文件结构示例。如果用户A的数据在fileA.xml中,而用户b的数据在fileB.xml中,

在应用程序Im中,服务器将使用XML数据库获得有关用户的信息。管理员用户也可以写入/读取这些文件的信息。 如何处理对这些文件的并发访问? 用户/管理员读取/写入这些文件的唯一方法是向服务器发出请求(套接字、TCP连接),因此服务器必须处理此问题。
我能做什么?我可以同步服务器方法,但我不想在管理员编写用户B文件时避免用户A访问他的文件。

我的第一个建议是使用数据库而不是文件,它们已经处理了锁


您应该发布一个文件结构示例。如果用户A的数据在fileA.xml中,而用户b的数据在fileB.xml中,则可以通过锁定给定文件并在此基础上进行同步来完成此操作。

正如Jes所说,使用数据库。
MySQL支持XML:
大多数数据库都支持XML,或者您可以简单地使用足够长的VARCHAR来获取数据并将其放入其中。如果这是您的计划,那么也许NoSQL解决方案也可以工作,它只是一个支持记录锁定和其他功能的持久HashMap


听起来用户之间没有冲突,您还可以为管理员提供一个修改文件的区域,您可以每天将其复制到用户读取数据的位置。

用户A有自己的文件usera.xml,用户B也有自己的oen文件userb.xml。。。如何按文件锁定?您持有指向文件的锁定地图。每次用户登录并请求一个文件时,他都会获得该文件的锁(这都是同步的)。另一个用户现在可以登录并请求锁定另一个文件,这不应该干扰第一个用户。我可以锁定到文件通道而不是实现锁映射吗?您可以锁定到任何对象,但我不确定您的服务器如何处理连接/读/写文件,因此很难说在哪里锁定什么。最简单的方法是获得一个处理它的数据库。甚至还有xml数据库,我都记不起来了。我认为IBM的DB2有一个XML数据类型,可以免费用于非商业用途(据我在2008年的数据库课程中所记得的)。