Порядок загрузки JNDI GlobalNamingResource
В моем server.xml у меня есть следующее:
<Resource name="secrets-server"
auth="Container"
type="linux.socketipc.IPCServer"
factory="SecretsVaultServerFactory" />
<!-- IDM Datasource for portal -->
<Resource name="idm_portal"
auth="Container"
factory="db.DataSourceWrapper"
type="javax.sql.DataSource"
maxLifetime="600000"
connectionTimeout="30000"
dataSourceClassName="org.postgresql.ds.PGSimpleDataSource"
maximumPoolSize="145"
minimumIdle="145"
dataSource.url="jdbc:postgresql://xxx.xxx.xxx.xxx:1234/plf_idm?ssl=true"
dataSource.user="plf" />
Класс оболочки Datasource зависит от SecretsVaultServerFactory, который сначала загружается tomcat, чтобы он мог выполнить поиск контекста и использовать внутри него объект SecretsVault:
SecretsVault sv = (SecretsVault) nameCtx.lookup("secrets-server");
Проблема в том, что JNDI GlobalNamingResources загружается не по порядку. Или я просто не знаю, как контролируется порядок.
Если ресурс DataSourceWrapper загружен до сервера секретов, я получаю следующую ошибку:
javax.naming.NameNotFoundException: Name [secrets-server] is not bound in this Context. Unable to find [secrets-server].
Что имеет смысл, потому что он еще не был загружен. Есть ли способ заставить JNDI сначала загрузить ресурс моего сервера секретов, прежде чем будут загружены какие-либо другие ресурсы глобального именования?