Jon*_*nik 2 java spring jetty heroku threadpool
我有一个在Heroku上运行的Java(Spring MVC)webapp.它使用本文中描述的设置: Heroku上的Spring MVC Hibernate入门
看起来Jetty默认只使用一个线程.鉴于Heroku和jetty-runner的设置,增加线程池大小的最简单方法是什么?
注意:我没有任何与Jetty相关的自定义代码(所以我不清楚我是如何应用这些建议的,例如:如何在Jetty中使用setThreadPool()).如果可能的话,我宁愿保持这种方式.与Jetty相关的所有东西现在都在Procfile和pom.xml中(见下文).
我可以使用一些jetty-runner参数或配置选项设置线程池大小吗?如果我需要创建Jetty配置文件,我如何让Heroku/jetty-runner使用它?
Procfile:
web: java $JAVA_OPTS -jar target/dependency/jetty-runner.jar --port $PORT target/*.war
Run Code Online (Sandbox Code Playgroud)
pom.xml中:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.7</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-runner</artifactId>
<version>8.1.10.v20130312</version>
<destFileName>jetty-runner.jar</destFileName>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
我在问题中写这篇文章时错了:
看起来Jetty默认只使用一个线程.
结果证明这纯粹是一个Spring问题.在applicationContext.xml中,我改变了
<task:annotation-driven/>
Run Code Online (Sandbox Code Playgroud)
成
<task:annotation-driven scheduler="scheduler-pool"/>
<task:scheduler id="scheduler-pool" pool-size="5"/>
Run Code Online (Sandbox Code Playgroud)
... @Scheduled
现在,不同的任务很快就会在像scheduler-pool-1
或等的单独线程中运行scheduler-pool-3
.
(在我意识到我的问题不是 Jetty问题之前,我已经研究过如何配置Jetty线程池.在这里记录;也许这对某人有用.)
创建一个jetty.xml
配置文件(就像src/main/resources
它被复制到编译目标目录一样),并根据自己的喜好自定义它.
示例(可能很差):
<?xml version="1.0"?>
<!-- For some reason, must use org.eclipse classes,
even though we depend on org.mortbay Jetty... -->
<Configure id="Server" class="org.eclipse.jetty.server.Server">
<Set name="ThreadPool">
<New class="org.eclipse.jetty.util.thread.QueuedThreadPool">
<Set name="minThreads">3</Set>
<Set name="maxThreads">5</Set>
</New>
</Set>
</Configure>
Run Code Online (Sandbox Code Playgroud)
然后,告诉jetty-runner将该配置文件与--config
交换机一起使用.例如,在Heroku中Procfile
,添加--config target/classes/jetty.xml
:
web: java $JAVA_OPTS -jar target/dependency/jetty-runner.jar --config target/classes/jetty.xml --port $PORT target/*.war
Run Code Online (Sandbox Code Playgroud)
如果你也碰巧使用的码头- Maven的插件,你可以告诉它通过增加这个下使用自定义码头的配置<configuration>
中pom.xml
:
<jettyConfig>target/classes/jetty.xml</jettyConfig>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4282 次 |
最近记录: |