我似乎无法在任何地方找到可靠的答案。我认为我发现了一个关于JMS的问题,但它令人困惑。如何从j2ee中的长时间运行过程获得即时响应?
0
A
回答
2
这真的取决于您使用的堆栈j2EE?它只是网络,ejb层或两者?如果我们在谈论Web,那么您可以使用在最新的Java EE规范中引入的异步servlet,如果您使用纯EJB,那么自然选择是Messege驱动bean(提到的JMS)。你当然可以设计一个自定义的解决方案,例如你发送一些数据进行处理,然后j2ee应用程序自己调用你的应用程序(例如通过http请求)来通知它完成了运行的工作。可能性是无止境的,如果一个人比其他人好,总是取决于具体的情况。
+0
谢谢先生,这很合适 – volk
0
如果我正确理解你所说的是能够开始一项任务(这将需要一些时间),然后在用户仍然在做这些任务时回应用户。根据您的要求,它非常简单,您可以使用简单的旧Java线程来执行操作。
public class DoSillyCounting extends Thread {
private volatile int counter;
public int getCounter() { return counter; }
public run() {
while (counter < 10) {
counter ++;
try { Thread.sleep(1000); }
catch (InterruptedException ie) { }
}
}
}
在您的设置页面,你可以这样做:(会话是一个HttpSession)
DoSillyCounting doSillyCounting = new DoSillyCounting();
doSillyCounting.start();
session.putValue("tenSecondsCounter", doSillyCounting);
/* Here you can respond to the user while the Thread is executing */
而在你的状态页面,你可以这样做:
DoSillyCounting doSillyCounting =
(DoSillyCounting)session.getValue("tenSecondsCounter");
out.print(Integer.toString(doSillyCounting.getCounter());
if (doSillyCounting.isAlive()) {
out.print("Still Working on it");
} else {
out.print("Yippee, I finished");
}
当然,这是一个相当无用的例子,当你可能有大量的请求满足时,这个模型不是一个好主意,那么值得看一下ThreadPool实现或者使用类似JMS的东西。
相关问题
- 1. 睡眠长时间运行的过程
- 2. 长时间运行的存储过程对性能的影响
- 3. 无法获得运行时响应
- 4. 长时间运行的应用程序
- 5. 工作进程响应rabbitmq消息的长时间运行过程
- 6. 如何获得长时间运行的报告当前状态?
- 7. 长时间运行过程vb.net
- 8. MvvmCross长时间运行过程
- 9. 从脚本中停止长时间运行的存储过程
- 10. 通过Python运行一个长时间的运行过程Popen
- 11. Xamarin.forms - 长时间运行应用程序
- 12. 如何实现在j2ee中长时间运行的分布式事务
- 13. 春季hibernate如何实现长时间运行的过程?
- 14. 从RTC获得正常运行时间
- 15. 获得程序正常运行时间
- 16. 如何在Rails中长时间运行的同步请求中生成响应?
- 17. 如何从Django视图开始长时间运行的进程?
- 18. 如何保持长时间运行的Go程序,运行?
- 19. 如何在长时间运行的进程上运行coverage.py?
- 20. 长时间运行的存储过程不在IIS进程中
- 21. ASP.NET长时间运行SQL Server过程 - 如何处理?消息?
- 22. 运行负载时页面响应时间很长,但手动加载时页面响应时间较短
- 23. ASP.Net防止长时间运行的超时过程
- 24. 我们应该如何处理使用nservicebus的长时间运行过程
- 25. 为响应式UI细分多长时间运行的函数?
- 26. J2EE Web应用程序中的基于时间表的执行
- 27. 编程一个长时间运行的基于时间的过程
- 28. JMeter中的响应时间很长
- 29. aws codedeploy长时间运行的进程
- 30. 长时间运行的进程
您使用什么servletcontainer/targeting? – BalusC
其理论问题比实际更多 – volk
理论上的答案是:取决于servletcontainer。 JMS确实是其中的一种方式。 – BalusC