У меня есть веб-приложение J2EE, которое используется для загрузки файла, который затем обрабатывается процедурой базы данных. Поскольку мы не хотим, чтобы webapp приходилось ждать завершения процедуры базы данных, она выполняется в другом потоке.Следует ли искать имя jndi для источника данных с помощью ServiceLocator?
Процесс, выполняющийся в отдельном потоке, должен получить и закрыть свое собственное соединение. Webapps обычно ищут имя jndi datasource, используя ServiceLocator, который, в свою очередь, ищет его из контекста приложения (ключ поиска для имени jndi определяется как константа класса), но для отдельного потока, ищущего имя jndi с помощью ServiceLocator выходит из строя. Чтобы обойти эту проблему, мы использовали имя jndi как константу класса, чтобы поток мог напрямую искать источник данных.
Это означает, что имя jndi для источника данных теперь исправлено для приложения, и мы больше не можем развертывать одно и то же приложение в одном контейнере, но с разными источниками данных, просто изменив web.xml.
Что такое лучшие в отрасли методы? Должно ли имя jndi быть настроено или это нормально, чтобы исправить его для приложения? Кто-нибудь реализовал конфигурируемое решение имен jndi datasource, которое можно использовать как в webapp, так и в других потоках в контейнере?