Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.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 在web应用程序的不同用户之间共享对象的正确方法_Java_Web Applications_Data Sharing - Fatal编程技术网

Java 在web应用程序的不同用户之间共享对象的正确方法

Java 在web应用程序的不同用户之间共享对象的正确方法,java,web-applications,data-sharing,Java,Web Applications,Data Sharing,我需要维护web应用程序中的对象列表。web应用程序的任何用户都可以查看或修改此列表(添加或删除的项目)。有可能许多用户几乎同时访问(修改)列表。哪种方法是共享列表的正确方法。我可以想出两种方法 静态变量 ServletContext 请让我知道哪一个是正确的,为什么。另外,如果还有其他更好的方法,请告诉我 编辑问题是在应用程序的不同用户之间共享对象。您可以使用数据库、自定义数据源(由数据源接口包装的简单列表)以及更多,但是 web应用程序的任何实例 如果速度不是最重要的因素,那么应该是任何we

我需要维护web应用程序中的对象列表。web应用程序的任何用户都可以查看或修改此列表(添加或删除的项目)。有可能许多用户几乎同时访问(修改)列表。哪种方法是共享列表的正确方法。我可以想出两种方法

  • 静态变量
  • ServletContext
  • 请让我知道哪一个是正确的,为什么。另外,如果还有其他更好的方法,请告诉我


    编辑问题是在应用程序的不同用户之间共享对象。

    您可以使用数据库、自定义数据源(由数据源接口包装的简单列表)以及更多,但是

    web应用程序的任何实例


    如果速度不是最重要的因素,那么应该是
    任何webapp用户,对吗?

    数据库。
    如果您需要速度,一些带有锁定的共享内存解决方案是很好的。例如Hazelcast

    A数据库。这就是数据库的用途。他们会帮你处理酸度。在另一台服务器上运行的另一个应用程序实例将无法访问内存中维护的任何内容。@JB Nizet:许多人同时访问将给数据库增加额外的负载。还有其他模块与DB一起工作。所以流量会很高。如果你使用Jboss,你可以尝试下面的内存集群缓存链接有更多信息@ArtfullyControl:在应用程序内部寻找处理。我不理解你的问题。您似乎希望在多个应用程序实例之间共享数据,从而在单独的JVM中运行,但同时只希望在应用程序本身中使用内存中的解决方案。这两个要求是矛盾的。许多人同时访问数据库会给数据库增加额外的负载。还有其他模块与DB一起工作。所以流量会很高。NoSQL DB或内存中的DB(如h2)?在应用程序本身内寻找处理。来自的ConcurentMap应该很好。你的意思是我必须使用公共静态ConcurrentMap mySharedMap=new ConcurrentHashMap(0)
    然后使用mySharedMap.putIfAbsent
    而不用担心?