Вы можете написать тривиальную реализацию javax.sql.ConnectionPoolDataSource
, которая делегирует реализацию javax.sql.DataSource
. Вот пример,
package example.datasource;
import java.sql.*;
import javax.sql.*;
public class HiveConnectionPoolDataSource extends org.apache.hive.jdbc.HiveDataSource implements ConnectionPoolDataSource {
public PooledConnection getPooledConnection() throws SQLException {
return new HivePooledConnection(null, null);
}
public PooledConnection getPooledConnection(String user, String password) throws SQLException {
return new HivePooledConnection(user, password);
}
public boolean isWrapperFor(Class<?> iface) throws SQLException {
return ConnectionPoolDataSource.class.equals(iface) || super.isWrapperFor(iface);
}
public <T> T unwrap(Class<T> iface) throws SQLException {
return ConnectionPoolDataSource.class.equals(iface) ? (T) this : super.unwrap(iface);
}
class HivePooledConnection implements PooledConnection {
private Connection con;
private final String user;
private final String password;
HivePooledConnection(String user, String password) {
this.user = user;
this.password = password;
}
public void addConnectionEventListener(ConnectionEventListener listener) {}
public void addStatementEventListener(StatementEventListener listener) {}
public void close() throws SQLException {
if (con != null) {
con.close();
con = null;
}
}
public Connection getConnection() throws SQLException {
if (con == null || con.isClosed()) {
con = user == null
? HiveConnectionPoolDataSource.this.getConnection()
: HiveConnectionPoolDataSource.this.getConnection(user, password);
return con;
} else
throw new IllegalStateException();
}
public void removeConnectionEventListener(ConnectionEventListener listener) {}
public void removeStatementEventListener(StatementEventListener listener) {}
}
}
Пакет ваш скомпилированный класс в JAR вместе с JAR драйвера JDBC (ов), а также настроить свой собственный провайдер JDBC в WebSphere Application Server, чтобы указать на этот JAR, как если бы она была частью драйвер JDBC. Укажите имя класса реализации как example.datasource.HiveConnectionPoolDataSource
или любой другой пакет/имя, которое вы выбрали для своей собственной реализации. Затем вы сможете использовать драйвер JDBC.
Также добавляется ссылка на WebSphere Application Server request for enhancements page, если кто-то хочет запросить поддержку поддержки javax.sql.DataSource.
Добавление к ответу @ njr: традиционный WebSphere не позволяет создавать java.sql.DataSource. Он допускает только варианты ConnectionPool или XA. –