我需要创建动态JDBC连接器,即,它必须动态选择不同SQL的驱动程序。
camelcontext.xml中的bean数据源效果很好。
我正在尝试创建休息方式,以便将凭据和其他与DB连接的信息作为JSON,并且必须携带操作,
请帮助。
在处理器类中,getDataSource方法被调用很少:主机,端口,用户名,RDBMStype和Model Object中的RDBMStype和密码。
DataSource ds = DBCPDataSourceFactory.getDataSource(model);
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
connection = ds.getConnection();
statement = connection.createStatement();
resultSet = statement.executeQuery(model.getQuery());
DataSource类:
public class DBCPDataSourceFactory {
public static DataSource getDataSource(DBModel model) {
String url = null;
BasicDataSource ds = new BasicDataSource();
if (model.getRdbms().toLowerCase().equals(DBConstants.POSTGRESQL)) {
ds.setDriverClassName(DBConstants.POSTGRESQL_DRIVER);
url = "jdbc:postgresql://" + model.getHost() + "/" + model.getDatabase();
ds.setUrl(url);
} else if (model.getRdbms().toLowerCase().equals(DBConstants.ORACLE)) {
ds.setDriverClassName(DBConstants.ORACLE_DRIVER);
url = "jdbc:oracle:thin:@"+model.getHost()+":"+model.getPort()+":"+model.getDatabase();
ds.setUrl(url);
} else if (model.getRdbms().toLowerCase().equals(DBConstants.SQL_SERVER)) {
ds.setDriverClassName(DBConstants.SQL_SERVER_DRIVER);
url = "jdbc:sqlserver://"+model.getHost()+":"+model.getPort()+";databaseName="+model.getDatabase();
ds.setUrl(url);
}
ds.setUsername(model.getUsername());
ds.setPassword(model.getPassword());
return ds;
}}