我正在编写在 TomCat.7 上运行的 spring web 应用程序,其中一个功能是使用 java.concurrency 处理来自数据库的数据。
由于计算,我预计数据库处理将是一个非常耗时的处理过程,我需要此过程的高性能。
我的问题是在 TomCat 容器中运行该线程是否是个好主意(或者可能是唯一的可能)?
@RequestMapping(value = "run_process", method = RequestMethod.GET)
public RequestWrapper runProcess(ModelMap model) {
Runnable runCrawler = new Crawler();
runCrawler.run();
System.out.println("##run_process!");
return new RequestWrapper();
}
我的项目结构是这样的:
-源代码
-com.scanner.batchprocess
-com.scanner.crawler
-com.scanner.webapp.controllers
我在创建具有计算挑战性的程序方面没有任何经验,所以恐怕我应该使用主类创建新的干净 Java 项目,只要用户运行 BatchProcess 就会从 webapp 调用该项目。 与真正的 Java 应用程序相比,Tomcat 应用程序的执行时间可能存在显着时间差异吗?
最佳答案
Spring Batch 是您的理想选择。它具有批处理所需的所有功能。而且它易于学习、理解和配置。您可以通过引入线程和其他众多扩展机制来在 spring batch 中进行性能调整,请引用 http://www.mkyong.com/tutorials/spring-batch-tutorial/有很好的例子
关于java - 如何编写从tomcat运行的java批处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19071700/