Если посмотреть официальную документацию Tomcat (см. Раздел Источники данных JDBC ), то вам также необходимо объявить ресурс в файле /WEB-INF/web.xml
следующим образом::
<resource-ref>
<description>
Resource reference to a factory for java.sql.Connection
instances that may be used for talking to a particular
database that is configured in the <Context>
configuration for the web application.
</description>
<res-ref-name>jdbc/CIBILDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
Если это не сработает, попробуйте установить исходную фабрику контекста как системное свойство (взято из this Ответ переполнения стека):
System.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.naming.java.javaURLContextFactory");
Некоторые другие Ответы переполнения стека рекомендуют также объявить ресурс в server.xml
.Насколько я понимаю, это необязательно;это просто удобный способ объявить ресурсы, которые будут использоваться несколькими веб-приложениями на одном сервере.
Имейте в виду, что получение начального контекста в статическом инициализаторе несколько рискованно, особенно если вам нужно установитьContext.INITIAL_CONTEXT_FACTORY
системное свойство, упомянутое выше.Вы можете попробовать передать системное свойство в качестве параметра JVM (или чего-то подобного), но, вероятно, будет хорошей идеей переместить эту часть вашего кода в «обычный» (нестатический) метод.Таким образом, при отладке у вас будет меньше проблем.