我正在开发一个手动创建数据源的 web 应用程序。(另请参阅我的另一个问题为什么:如何使用 Spring 管理与多个数据库的连接)因为我需要连接到其他数据库(开发、产品、质量保证、测试)。
现在我已经解决了在数据库之间选择和切换的问题。但是,如果用户退出我的应用程序。他想尝试连接到另一个数据库。他仍然连接到同一个数据源,因为在运行时 myDs 不为空。用户注销时如何正确处理此数据源?我不希望用户每次查询数据库时都创建数据源。
private DataSource createDataSource(Environment e) {
OracleDataSource ds = null;
String url = null;
try {
if (myDs != null) {
logger.info("myDs connection: " + etmetaDs.getConnection().getMetaData().getURL());
url = myDs.getConnection().getMetaData().getURL();
}
} catch (SQLException exc) {
// TODO Auto-generated catch block
exc.printStackTrace();
}
if (myDs == null) {
try {
ds = new OracleDataSource();
} catch (SQLException ex) {
ex.printStackTrace();
}
ds.setDriverType("oracle.jdbc.OracleDriver");
ds.setURL(e.getUrl());
try {
Cryptographer c = new Cryptographer();
ds.setUser(c.decrypt(e.getUsername()));
ds.setPassword(c.decrypt(e.getPassword()));
} catch (CryptographyException ex) {
logger.error("Failed to connect to my environment [" + e.getName() + "]");
ex.printStackTrace();
return null;
}
logger.info("Connecting to my environment [" + e.getName() + "]");
myDs = ds;
} else if (url.equals(e.getUrl())) {
} else {
}
return myDs;
}