java - 使用 Jersey 和 Jetty 在独立 Java 应用程序中以编程方式配置 jetty 工作管理器

标签 java jetty jndi workmanagers

我正在使用 Jersey 和 Jetty 开发一个独立的 Java 应用程序。为了高效的线程池,我想配置工作管理器并将我的应用程序部署为 jar。我在我的主启动器类中创建了服务器实例,例如

Server server = new Server(Integer.valueOf(port));
ServletContextHandler context = new ServletContextHandler(server, "/");

我发现了不同的资源,其中显示我可以在 config.xml 中配置工作管理器,如下所示。

 <work-manager>
   <name>WM</name>
   <max-threads-constraint>64</max-threads-constraint>
   <min-threads-constraint>3</min-threads-constraint>
   <fairshare>80</fairshare>
</work-manager>

但是,如果我想在我的主类和其他资源(例如 JDBC 数据源)中以编程方式配置相同的内容,我该怎么做?任何帮助将不胜感激。提前致谢。

注意:我使用的是jetty版本9.4.16.v20190411和我的pom条目

<dependency>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-server</artifactId>
        <version>${jetty.version}</version>
    </dependency>
    <dependency>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-servlet</artifactId>
        <version>${jetty.version}</version>
    </dependency>

编辑:我想获得参数化工作管理器,例如

private WorkManager getWorkManager(String workManagerName) throws RuntimeException {

    String workManagerLookupName = null;
    try {
        workManagerLookupName = "java:comp/env/" + workManagerName;
        InitialContext ic = new InitialContext();
        //Resource resource = new Resource("java:comp/env/" + workManagerName,);
        WorkManager wm = (WorkManager) ic.lookup(workManagerLookupName);
        return wm;
    } catch (NamingException e) {
        throw new RuntimeException("Unable to get WorkManager instance for " + workManagerLookupName, e);
    }
}

是否可以通过编程方式实现?

最佳答案

您可以创建一个 threadPool 配置并将其传递给服务器构造函数:

QueuedThreadPool threadPool = new QueuedThreadPool();
threadPool.setMaxThreads(64);
threadPool.setMinThreads(3);
Server server = new Server(threadPool);

如何添加 JDBC 数据源的说明可以在这里找到: Jetty Bind DataSource in JNDI Context

关于java - 使用 Jersey 和 Jetty 在独立 Java 应用程序中以编程方式配置 jetty 工作管理器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56125371/

相关文章:

java - Room 无法检索以下列

java - 如何从左侧开始时间序列的 JFreeChart XYPlot 图(从 Y 轴开始)

java - jetty 、 jackson 和 Jersey - 见解

mysql - 连接数据库时出错: "Invalid Datasource"

java - android中如何等待线程完成

java - Apache CXF 2.0.12 到 2.2.7 升级问题

windows - 优雅地终止从 "start/b"的 Windows 批处理文件启动的 java (jetty/solr) 进程

java - 运行时添加@Resource注解中的自定义资源

java - 每次使用新的InitialContext JNDI 查找EJB?

java - JQuery TokenInput 不显示搜索结果