Имя ресурса Tomcat в стиле JNDI - PullRequest
0 голосов
/ 21 января 2019

Я перевожу действительно огромное Websphere 9 приложение на Tomcat 9.

Все в приложении работает нормально, кроме одной вещи.

Приложение использовало WorkManagerTaskExecutor через проводной бин:

@Bean
public WorkManagerTaskExecutor taskExecutor() {
    WorkManagerTaskExecutor  pool = new WorkManagerTaskExecutor();
    pool.setWorkManagerName("someName");
    //pool.setResourceRef(true);
    return pool;
}

В Websphere, вероятно, был настроен некоторый ресурс через консоль управления.

В Tomcat я создал Resource в server.xml:

<Resource name = "someName"
              auth = "Container"
              type = "commonj.work.WorkManager"
              factory = "de.myfoo.commonj.work.FooWorkManagerFactory"
              minThreads = "1"
              maxThreads = "25" />

и ссылка в context.xml:

<ResourceLink name="someName" global="someName" type="commonj.work.WorkManager" />

и ошибка:

javax.naming.NameNotFoundException: имя [someName] не связано в этот контекст.

Теперь, если я включу эту строку:

pool.setResourceRef(true);

Работает отлично, но я не хочу вносить какие-либо изменения в код.

Я уже пытался переименовать обе переменные .xml конфигов в JNDI-стиль, потому что Документация JndiLocatorSupport говорит:

If the name doesn't begin with "java:comp/env/", this prefix is added if "resourceRef" is set to "true".

Но name="java:comp/env/someName" тоже не работает. Возможно ли это даже преодолеть? Какое имя должно быть?

...