В настоящее время у меня есть конфигурация server.xml, в которой есть следующее:
<Resource auth="Container"
description="DB Connection"
driverClass="oracle.jdbc.driver.OracleDriver"
maxPoolSize="40"
minPoolSize="2"
aquireIncrement="1"
name="jdbc/FOOBAR"
user="foo"
password="bar"
factory="org.apache.naming.factory.BeanFactory"
type="com.mchange.v2.c3p0.ComboPooledDataSource"
jdbcUrl="path:to:db:port:db" />
У меня есть требование больше не позволять имени пользователя/паролю быть в открытом виде в файле server.xml по очевидным причинам.
Я немного почитал в Интернете и наткнулся на Как защитить пароли базы данных Tomcat для Java Шифровать имя пользователя и пароль для JNDI в Tomcat Server.xml и многих других страницах; однако я немного застрял.
Сначала я посмотрел на расширение BasicDataSourceFactory, но, похоже, этого не может произойти из-за того, что я использую c3p0 CombinedPooledDataSource. Затем я попытался создать оболочку источника данных c3p0, внедрив PooledDataSource, Serializable и Referenceable, но это тоже не сработало.
Я читал, что могу перенести аутентификацию на сервер, сделав auth="Container" => auth="Application". Однако я не уверен, как реализовать остальные части с помощью Hibernate.
Любая помощь будет здорово.