Конфигурирование менеджера работы Jetty программно в автономном приложении Java с Джерси и Джетти - PullRequest
1 голос
/ 14 мая 2019

Я занимаюсь разработкой отдельного 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 Datasource, как мне это сделать?Любая помощь будет высоко ценится. Спасибо заранее.

Примечание: я использую версию причала 9.4.16.v20190411 и мою запись в помпе

<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);
    }
}

Возможно ли это программно ??

1 Ответ

1 голос
/ 14 мая 2019

Вы можете создать конфигурацию threadPool и передать ее конструктору сервера:

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

Описание того, как добавить источник данных JDBC, можно найти здесь: Jetty Bind DataSource в контексте JNDI

...