Concurrency 面向多用户的Java web应用程序

Concurrency 面向多用户的Java web应用程序,concurrency,web,Concurrency,Web,我需要设计和实现一个可以同时被多个用户使用的JavaWeb应用程序。这个应用程序处理的数据将是巨大的,一个页面显示结果(数据库记录)可能需要大约5分钟 我使用HTML、servlet和JSP设计了这个应用程序。但是当两个用户试图获取记录时,只有一个用户能够查看结果,而另一个用户则面临错误 我一直认为web应用程序会处理多个用户,但事实并非如此 如果您对此有任何见解,我们将不胜感激 谢谢。您使用什么来开发此web应用程序?如果您从一开始就以自己的方式开发它,我必须说您正在尝试重新发明同样的轮子,它

我需要设计和实现一个可以同时被多个用户使用的JavaWeb应用程序。这个应用程序处理的数据将是巨大的,一个页面显示结果(数据库记录)可能需要大约5分钟

我使用HTML、servlet和JSP设计了这个应用程序。但是当两个用户试图获取记录时,只有一个用户能够查看结果,而另一个用户则面临错误

我一直认为web应用程序会处理多个用户,但事实并非如此

如果您对此有任何见解,我们将不胜感激


谢谢。

您使用什么来开发此web应用程序?如果您从一开始就以自己的方式开发它,我必须说您正在尝试重新发明同样的轮子,它已经被非常坚实的框架创建和增强

我建议您彻底分析您的需求,并研究一些可用的框架。让他们以最好的方式处理多线程和其他方面的事情

一次处理多个请求是一项容器工作,作为应用程序开发人员,我们必须集中精力处理和处理容器转发的请求

我必须建议您了解web应用程序是如何工作的,以及请求-响应周期是如何发生的

我一直认为web应用程序会处理多个用户,但事实并非如此

如果他们写得正确,他们就会这样做。显然你的不是。除非您提供更多信息,最重要的是向第二个用户显示错误的详细信息,否则我们只能告诉您这些

一种可能性是,web层上的一切都正常,但您对第一个用户的DB访问会导致独占锁定,从而第二个用户无法同时访问数据。这可以通过使用非独占读取锁来修复。如何做到这一点主要取决于您使用的数据库


要获得正确的并发性,需要选择正确的工具并正确使用它们。这并不是因为它是一个web应用程序而神奇地发生的。

:你能更明确地说明你在使用什么数据库和数据库抽象(hibernate?),什么框架(struts?)和什么应用服务器(tomcat/jboss/jetty)吗?请告诉我们错误,应用服务器正在显示。我没有使用任何框架。jsp页面将被定向到一个servlet,该servlet将执行业务逻辑并重定向到另一个jsp页面。现在,业务逻辑出现在另一个java类中。为了获取记录,我没有直接访问数据库。我只是进行HttpUrlConnection(post)调用来获取数据。这个请求会进入服务器获取数据。我没有使用任何框架。jsp页面将被定向到一个servlet,该servlet将执行业务逻辑并重定向到另一个jsp页面。现在,业务逻辑出现在另一个java类中。为了获取记录,我不直接访问数据库。我只是进行HttpUrlConnection(post)调用来获取数据。该请求会进入服务器以获取数据。@ITAmateur:所有这些都可能会出错(主要是通过使用静态字段),但如果操作正确,则不会导致并发问题。最重要的信息仍然缺失:您看到的错误到底是什么?另外,是什么在处理代码生成的那些HTTP帖子?底层数据库是什么?我没有使用任何框架。jsp页面将被定向到一个servlet,该servlet将执行业务逻辑并重定向到另一个jsp页面。现在,业务逻辑出现在另一个java类中。为了获取记录,我不直接访问数据库。我只是进行HttpUrlConnection(post)调用以获取数据。此请求会发送到服务器以获取数据。@ITAmateur您这样做只是为了了解流程的运行情况或计划在生产中使用它,因为我无法想象这样的设计能在实时应用程序中工作。你所要做的就是编写控制器请求/响应处理程序和其他处理器。我已经用这种方式实现了它,只要有一个用户试图获得结果,它就可以正常工作。当两个人试图同时点击应用程序时,出现了问题。此应用程序已部署在生产站点。但我同时面临着多用户问题。可能是因为我没有使用Struts之类的框架,还是HttpUrlConnection(post)方法无法同时发送两个post请求的问题?开发一个支持多用户的web应用程序的理想方法是什么?@ITAmateur只要看看数据库的另一面,看看是否一切都像Michael Borgwardt在回答中所说的那样正常