Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/402.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应用程序中web请求的优先级_Java_Tomcat_Jakarta Ee - Fatal编程技术网

Java web应用程序中web请求的优先级

Java web应用程序中web请求的优先级,java,tomcat,jakarta-ee,Java,Tomcat,Jakarta Ee,我试图找到一种将优先级与web请求相关联的方法。本质上,我希望我的web容器(例如Tomcat)总是首先处理优先级较高的web请求 例如,假设它目前正在处理许多低优先级的web请求,并且已经达到并发web请求的极限。如果有更高优先级的web请求传入,它将暂停其中一个较低的web请求并处理更高优先级的请求 这样做的目的是,一些web请求用于批处理,最终将转换为一组优先级较低的web请求,预计需要更长的时间,而一些web请求用于与网站交互的用户,不应延迟,因此优先级较高 这不一定是web容器的一个特

我试图找到一种将优先级与web请求相关联的方法。本质上,我希望我的web容器(例如Tomcat)总是首先处理优先级较高的web请求

例如,假设它目前正在处理许多低优先级的web请求,并且已经达到并发web请求的极限。如果有更高优先级的web请求传入,它将暂停其中一个较低的web请求并处理更高优先级的请求

这样做的目的是,一些web请求用于批处理,最终将转换为一组优先级较低的web请求,预计需要更长的时间,而一些web请求用于与网站交互的用户,不应延迟,因此优先级较高


这不一定是web容器的一个特性。如果有其他方法(任何类型的任务调度器,尽管我找不到任何与任务优先级相关的东西),它将符合这个问题的目的。

使用Servlet 3.0 async servlets,这将允许您在单独的线程中异步处理每个请求(如果需要,可以排队),而不是接受请求的线程。为每个线程分配必要的优先级(thread.setPriority),批处理线程的优先级为thread.MIN_,交互线程的优先级为thread.NORM_。不完全是你描述的停顿行为,但应该足够接近。
有关异步Servlet的示例,请参见使用Servlet 3.0异步Servlet,这将允许您在单独的线程中异步处理每个请求(如果需要,可以使用队列),而不是在接受请求的线程中。为每个线程分配必要的优先级(thread.setPriority),批处理线程的优先级为thread.MIN_,交互线程的优先级为thread.NORM_。不完全是你描述的停顿行为,但应该足够接近。
有关异步servlet的示例,请参见

是否可以为低优先级请求创建一个线程池,并在它们进入时将其发送到线程池。如果您最终需要响应,您可以始终使低优先级请求异步,并且当线程池任务完成时,它可以触发响应。您可以为低优先级请求创建一个线程池,并在它们进入时将它们发送到线程池吗。如果最终需要响应,则始终可以使低优先级请求异步,并且当线程池任务完成时,它可以触发响应。这只会使生成的线程具有较低的优先级,但如果该线程调用了生成其他线程的外部库,或者调用了其他系统(与数据库一样),平衡将不再按预期工作(例如,高优先级请求与低优先级请求具有相同的数据库请求权限)。是的,这是必须考虑的问题,可以解决(例如,使用2个复制数据库),在低优先级线程和高优先级线程都需要访问同一个数据库的情况下。但是,这不是问题。据我所知,低优先级线程正在挖掘比特币。这只会使生成的线程具有较低的优先级,但如果该线程调用生成其他线程的外部库,或者调用d另一个系统(如数据库),平衡将不再按预期工作(例如,高优先级请求与低优先级请求具有相同的数据库请求权限)。是的,这是一个必须考虑的问题,可以解决(例如,使用2个复制数据库),在低优先级线程和高优先级线程都需要访问同一个数据库的情况下。然而,这不是问题。据我所知,低优先级线程正在挖掘比特币