2015-08-11 2 views
0

Я обновился с Tomcat 8.0.18 до 8.0.23, и внезапно у меня проблема JNDI. Я просмотрел списки изменений, Tomcat 8 Changelogs, и я вижу три изменения JNDI, хотя никто не ударил меня как что-то, что сломало ранее выполненную конфигурацию.JNDI NameNotFoundException после обновления Tomcat 8

Связанные с JNDI изменения были сделаны для ошибок 49785, 57587 и записи под 8.0.19 в разделе «Другое».

Я получаю это исключение, когда я начинаю вверх с Tomcat 8.0.23:

javax.naming.NameNotFoundException: Name [jdbc/MyCluster] is not bound in this Context. Unable to find [jdbc]. 

В моем веб-приложение, у меня есть ссылка ресурс, определенный:

<Context> 
    <ResourceLink name="jdbc/MyCluster" global="jdbc/MyCluster" auth="Container" type="javax.sql.DataSource" /> 
</Context> 

Я Tomcat сконфигурированный с:

<Resource name="jdbc/MyCluster" global="jdbc/MyCluster" ......./> 

Я в тупике ... Я не могу понять, что заставляет мой код сломаться после моего обновления с 1 8 до 23 :(

ответ

1

На всякий случай кому-то было интересно узнать, как модернизация от Tomcat 8.0.18 до 8.0.24 действительно может привести к тому, что JNDI испортится, ответ лежит в ANT.

ANT Copy documentation

Я и некоторые другие инженеры не имели ни малейшего представления о том, что АНТ Копия не делает ничего, если файл, который вы пытаетесь перезаписать имеет более новую временную метку ... кто знал копию было такое сложное состояние!?! Я считаю, что именно поэтому я и несколько человек никогда не смотрели документацию, это такое неожиданное поведение.

В любом случае, перейдя на новую версию Tomcat, мой контекст.xml, содержащий resourcelink jdbc/MyCluster, не смог перезаписать новую и более позднюю временную метку по умолчанию context.xml от Tomcat! Когда флаг перезаписи установлен в true, JNDI снова работает :)

Смежные вопросы