Java应用程序不能同时为两个请求提供服务

Java应用程序不能同时为两个请求提供服务,java,tomcat6,Java,Tomcat6,我有一个java应用程序,点击一个按钮就会生成一个很重的报告(大约30 mb的excel报告) 在单击“生成按钮”之前,有两个文本字段确定您需要多少数据(项目id从:和项目id到:) 现在的问题是,当两个同时请求需要所有数据时,谁先按下按钮,报表只为他生成,而另一个用户得到的是空报表。但是,如果一个用户需要完整报表,而另一个用户需要它的一些信息,比如1000行,那么两个用户都会得到充满信息的报表 请给我一些关于在哪里调查以及如何解决这个问题的见解。提前感谢。有一个单例/应用程序范围/Servle

我有一个java应用程序,点击一个按钮就会生成一个很重的报告(大约30 mb的excel报告)

在单击“生成按钮”之前,有两个文本字段确定您需要多少数据(项目id从:和项目id到:)

现在的问题是,当两个同时请求需要所有数据时,谁先按下按钮,报表只为他生成,而另一个用户得到的是空报表。但是,如果一个用户需要完整报表,而另一个用户需要它的一些信息,比如1000行,那么两个用户都会得到充满信息的报表


请给我一些关于在哪里调查以及如何解决这个问题的见解。提前感谢。

有一个单例/应用程序范围/Servlet上下文范围的存储了有关报告的信息。它可以位于web层、报表调用层或报表生成层。实际上,两个请求都设置了这个数据,两个报表生成都读取了这个数据,这就是为什么会产生混淆


看看你的应用程序的结构,试着找出它的位置。如果你能描述报告生成的整个过程,也许你自己能意识到这一点,如果你从头开始的话,这将是非常有用的。

你可能想看看。看看生成报告的是什么。听起来您的servlet中有实例数据,但不可能知道,因为您几乎没有提供任何人可以帮助的信息。在我的应用程序中,当我们在jsp中单击generate按钮时,reqst通过servlet处理,该servlet获取frm数据库的数据,然后它进入另一个servlet,在那里生成excel。我的应用程序没有使用线程,它是一个基于进程的java应用程序。我在日志中还看到,当一个项目列表请求(首先出现)得到服务时,我看不到第二个reqst的任何记录(与第一个请求同时命中)但一旦第一个请求几乎提供了全部数据,我就会看到第二个请求(已生成空报告)被命中(在日志中).这方面有什么改进吗?我还是无法克服这个问题。让我更详细地解释一下。我的应用程序运行在tomcat 5上,内存为16 gb。应用程序是在类似struts的框架中编写的。当一个用户单击jsp中的报告时,请求会转到一个servlet,从那里转到一个模型对象,然后运行查询、获取数据、生成excel。问题是应用程序/服务器无法同时为两个报表请求提供服务。报表太大(40 mb)。我们在日志中看到,当2user同时点击报告时,1个请求被提交到服务器,生成完整报告,然后另一个请求点击服务器,但生成空白报告。当我们跳转tomcat服务器时,问题得到解决。您能帮我查找位置吗?如果您需要其他信息,请告诉我。谢谢