【问题标题】:configuration of jetty work manager programmatically in standalone Java application with Jersey and Jetty使用 Jersey 和 Jetty 在独立 Java 应用程序中以编程方式配置码头工作管理器
【发布时间】:2019-05-14 07:48:11
【问题描述】:

我正在使用 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 数据源)中以编程方式配置相同的东西,我该怎么做?任何帮助将不胜感激。在此先感谢。

注意:我使用的是码头版本 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);
    }
}

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

【问题讨论】:

    标签: java jetty jndi workmanagers


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢@Thomas,不幸的是,我认为,Jetty 没有提供任何工作管理器接口的实现类,比如内置的 weblogic 服务器。有什么想法吗?
    猜你喜欢
    • 2013-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-15
    • 1970-01-01
    • 1970-01-01
    • 2021-04-27
    相关资源
    最近更新 更多