一种可行的解决方法是使用
BasicDataSource
而不是 DataSource
并在 Java 中加载参数。这完全不需要在 context.xml 中定义连接。
String keyVaultUrl = "https://thekeyvaulttest.vault.azure.net/";
SecretClient secretClient = new SecretClientBuilder()
.vaultUrl(keyVaultUrl)
.credential(new DefaultAzureCredentialBuilder().build())
.buildClient();
ds=new BasicDataSource();
String url = "jdbc:sqlserver://myserver.database.windows.net:1433;database=myDatabase;encrypt=true;trustServerCertificate=true;loginTimeout=10;";
String username = "myuser@myserver";
String password = secretClient.getSecret("DB-PASSWORD").getValue();
ds.setDriverClassName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
ds.setUrl(url);
ds.setMaxTotal(100);
ds.setUsername(username);
ds.setPassword(password);
ds.setInitialSize(30);
ds.setValidationQuery("SELECT 1");
ds.setTestOnBorrow(true);