在我的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包装器类依赖于tomcat首先加载SecretsVaultServerFactory,以便它可以执行上下文查找并在其中使用SecretsVault对象:
SecretsVault sv = (SecretsVault) nameCtx.lookup("secrets-server");
问题在于,JNDI GlobalNamingResources似乎正在无序加载。或者我只是不知道如何控制订购。
如果在Secrets-server之前加载了DataSourceWrapper资源,则出现以下错误:
javax.naming.NameNotFoundException: Name [secrets-server] is not bound in this Context. Unable to find [secrets-server].
之所以有意义,是因为尚未加载。有没有一种方法可以强制JNDI在加载任何其他全局命名资源之前先加载我的secrets-server资源?