使用apache commons Basic Datasource安全连接到oracle数据库

时间:2017-06-28 13:58:49

标签: java oracle ssl apache-commons-dbcp

作为保护我们在Oracle数据库中启用ASO的所有连接的一部分,我能够使用oracle.jdbc.pool.OracleDataSource从我的java进行安全连接。但我们有使用apache基本数据源的项目。我尝试了以下但仍然没有加密数据。

    BasicDataSource ods = new BasicDataSource();
    ods.setUrl(URL);
    ods.setUsername(user);
    ods.setPassword(password);
    ods.setConnectionProperties("AutoCommit=false;");
    ods.setConnectionProperties("OracleConnection.CONNECTION_PROPERTY_THIN_NET_ENCRYPTION_LEVEL=REQUIRED;");
    ods.setConnectionProperties("OracleConnection.CONNECTION_PROPERTY_THIN_NET_ENCRYPTION_TYPES=(AES256);");
    ods.setConnectionProperties("OracleConnection.CONNECTION_PROPERTY_THIN_NET_CRYPTO_SEED=(sfdsvcfdssegdsvg);");

如果我在连接属性中遗漏了某些内容,请告诉我。感谢。

1 个答案:

答案 0 :(得分:1)

方法 BasicDataSource #setConnectionProperties(String) 会覆盖之前添加到DataSource的所有属性

您需要使用 BasicDataSource#addConnectionProperty(String,String) 方法添加单个属性:

BasicDataSource ods = new BasicDataSource();
ods.addConnectionProperty("OracleConnection.CONNECTION_PROPERTY_THIN_NET_ENCRYPTION_LEVEL", "REQUIRED")

或使用相关数据构建Properties实例,然后将其添加到DataSource:

Properties prop = new Properties();
prop.setProperty("OracleConnection.CONNECTION_PROPERTY_THIN_NET_ENCRYPTION_LEVEL", "REQUIRED");
prop.setProperty("OracleConnection.CONNECTION_PROPERTY_THIN_NET_ENCRYPTION_TYPES", "(AES256)")
...
BasicDataSource ods = new BasicDataSource();
ods.setConnectionProperties(prop);