Нет ничего в Tomcat, чтобы делать то, что вы хотите. Если вы перенесете настройки в дерево JNDI для tomcat, вам нужно будет поместить комбо пароль пользователя / имени в файл server.xml или context.xml. Вот несколько возможных решений этой проблемы.
Вариант 1. Использование прослушивателя Tomcat
Если вы посмотрите на верхнюю часть файла tomcat server.xml, вы увидите несколько слушателей. Это классы java, которые выполняются при запуске tomcat. Вы можете создать своего собственного слушателя tomcat, который считывает пароль из файловой системы, удаляет файл и сохраняет имя пользователя / пароль Comobo так, чтобы это было доступно для приложения. Приемник tomcat привязан к жизненному циклу сервера tomcat, поэтому автоматическое повторное развертывание приложения не приведет к перезагрузке класса прослушивателя tomcat. Код для прослушивателя tomcat должен быть помещен в jar-файл и помещен в папку CATALINA_HOME \ lib.
Слушатель может использовать статические переменные для хранения имени пользователя / пароля и иметь статические методы, которые их возвращают, это будет работать, потому что слушатель будет в загрузчике родительского класса приложений tomcat. Недостатки этого подхода в том, что код вашего приложения зависит от реализации прослушивателя ресурсов tomcat, и в ваших модульных тестах вам, возможно, придется сделать несколько дополнительных шагов, чтобы убедиться, что ваш код может быть модульно протестирован.
Слушатель также может получить доступ к глобальному дереву JNDI tomcat и поместить туда комбо имя пользователя и пароль, и тогда вашему приложению потребуется файл context.xml, использующий элемент ResourceLink, чтобы сделать глобальную запись jndi доступной для приложения. Вам также придется проделать дополнительную работу, чтобы этот подход работал с модульными тестами, так как поиск в JNDI обычно усложняет модульное тестирование.
Если вы используете Spring в этом проекте, лучше всего использовать статические переменные в прослушивателе tomcat, а затем использовать настраиваемую область Spring для извлечения данных из прослушивателя tomcat. Таким образом, ваше приложение остается тестируемым, и вы можете вводить комбинации имени пользователя и пароля в любой фрагмент кода, который им нужен.
Вариант 2. Использование прослушивателя контекста сервлета
В этой опции вы пишете Context Listener, который позволит вашему приложению получать уведомления при каждом запуске и остановке приложения. При таком подходе при запуске будет запущен прослушиватель контекста, который прочитает информацию о пароле и удалит файл. Если при запуске файла паролей нет, то у прослушивателя контекста должен быть способ заставить администратора восстановить файл.
Вариант 3: использовать JMX
Создайте JMX MBean, зарегистрируйте его в JVM MBeanServer, а затем используйте его для хранения комбинации имени пользователя и пароля. Если вы инициализируете этот MBean из прослушивателя tomcat, вы можете сделать так, чтобы скрипт perl вызывал MBean удаленно и передавал комбинацию имени пользователя / пароля.
Надеюсь, это поможет.