Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.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
许多程序读取单个XML Java_Java_Xml_Saxparser_Domparser - Fatal编程技术网

许多程序读取单个XML Java

许多程序读取单个XML Java,java,xml,saxparser,domparser,Java,Xml,Saxparser,Domparser,我的程序使用SAX解析器(或者DOM解析器)从位于服务器某处的XML文件中读取数据。现在很多人使用我的程序,所以很多程序有时访问这个XML文件。如果两个用户(同时使用我的程序)希望同时读取(仅读取和不写入)XML文件,是否会出现问题?我需要考虑我的程序中有什么特殊的东西吗?或者这会被OS? 不幸的是,我不熟悉同时访问文件,或者如果有几个人使用我的程序,就会发生这种情况 该程序是用Java 11构建的。它不应该引起问题。这不一定是最有效的方法,但对于低吞吐量的应用程序,它应该工作得非常好(我们有一

我的程序使用SAX解析器(或者DOM解析器)从位于服务器某处的XML文件中读取数据。现在很多人使用我的程序,所以很多程序有时访问这个XML文件。如果两个用户(同时使用我的程序)希望同时读取(仅读取和不写入)XML文件,是否会出现问题?我需要考虑我的程序中有什么特殊的东西吗?或者这会被OS? 不幸的是,我不熟悉同时访问文件,或者如果有几个人使用我的程序,就会发生这种情况


该程序是用Java 11构建的。

它不应该引起问题。这不一定是最有效的方法,但对于低吞吐量的应用程序,它应该工作得非常好(我们有一个内部应用程序,每天处理大约10个请求,这正是我们的工作方式。)


如果您决定更加雄心勃勃,将解析后的文档缓存在内存中,那么您需要知道Java中的默认DOM实现不是线程安全的——即使是只读访问也是如此。这就是我建议人们使用第三方树模型(如JDOM2或XOM)的原因之一。

它不应该引起问题。这不一定是最有效的方法,但对于低吞吐量的应用程序,它应该工作得非常好(我们有一个内部应用程序,每天处理大约10个请求,这正是我们的工作方式。)


如果您决定更加雄心勃勃,将解析后的文档缓存在内存中,那么您需要知道Java中的默认DOM实现不是线程安全的——即使是只读访问也是如此。这就是我建议人们使用第三方树模型(如JDOM2或XOM)的原因之一。

如果他们不写,应该不会引起任何问题(除了如果许多人同时访问同一个文件会比较慢)。@assylias是对的,如果操作是只读的,则没有问题。为了获得更好的性能,请尝试缓存该文件。如果他们没有写入,则不会导致任何问题(如果许多人同时访问同一个文件,则速度会变慢)。@assylias是正确的,如果该操作是只读的,则没有问题。为了获得更好的性能,请尝试缓存文件。这意味着,如果本地计算机上的两个用户都在使用我的程序,并且他们希望同时访问该文档(即,希望读取XML文档,这意味着使用DOM解析器),那么这可能会导致问题,因为他们缓存解析的文档?还是我误解了你?我可以确保在同一个程序中,所有这些都是线程安全的,但我不能对其他用户的程序做出反应,因为他们都使用我程序的单独部署实例。这就是为什么我问从文件(通过DOM)的访问是否由操作系统控制。如果他们加载单独的程序实例,独立访问文件存储,而不共享内存,那么是的,他们都必须解析文件,除了磁盘上的文件外,没有任何共享的空间。如果你想每秒扩展到数百个用户和数十个事务,那么这不是最佳的体系结构;您应该在HTTP服务器中实现应用程序,并让用户远程连接到它。感谢您的解释和建议!这意味着,如果本地计算机上的两个用户都在使用我的程序,并且他们希望同时访问该文档(即,希望读取XML文档,这意味着使用DOM解析器),那么这可能会导致问题,因为他们缓存解析的文档?还是我误解了你?我可以确保在同一个程序中,所有这些都是线程安全的,但我不能对其他用户的程序做出反应,因为他们都使用我程序的单独部署实例。这就是为什么我问从文件(通过DOM)的访问是否由操作系统控制。如果他们加载单独的程序实例,独立访问文件存储,而不共享内存,那么是的,他们都必须解析文件,除了磁盘上的文件外,没有任何共享的空间。如果你想每秒扩展到数百个用户和数十个事务,那么这不是最佳的体系结构;您应该在HTTP服务器中实现应用程序,并让用户远程连接到它。感谢您的解释和建议!