JNDI GlobalNamingResource加载顺序

时间:2018-06-19 17:44:26

标签: tomcat jndi server.xml

在我的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资源?

0 个答案:

没有答案