是否可以在运行时更改WebSphere数据源的默认架构?
例如,我将以下jndi配置为:
<jee:jndi-lookup id="dataSource" jndi-name="jdbc/test" lookup-on-startup="true" resource-ref="true" />在ibm-web-bnd.xml中:
<resource-ref name="jdbc/test" binding-name="jdbc/test" id="TEST_db"/>在我的IBM-web-ext.xml中:
<resource-ref name="jdbc/test" connection-management-policy="DEFAULT" isolation-level="TRANSACTION_READ_COMMITTED" id="TEST_db"/>我为dataSource创建了一个包装器,定义为:
<bean id="schemaAwareDataSource" class="com.util.SchemaAwareDataSource" >
<property name="dataSource" ref="dataSource" />
<property name="schemaValue" value="${modifiableSchema}" />
</bean>这门课看起来是:
public class SchemaAwareDataSource implements DataSource {
private DataSource dataSource;
private String schemaValue;
@Override
public Connection getConnection() throws SQLException {
if(dataSource.getConnection().getSchema().equals(schemaValue)) {
return dataSource.getConnection();
}
dataSource.getConnection().setSchema(schemaValue);
return dataSource.getConnection();
}
//other implemented methods not shown
}但是,当应用程序启动并在我的包装器类中的java.sql.SQLFeatureNotSupportedException ()中调用dataSource.getConnection().getSchema()时,这将引发一个getConnection错误。
当我调试getConnection()方法时,dataSource是一个对象。
不管怎么说我能完成我在这里想做的事吗?我希望能够在调用getConnection()时在运行时更改模式值。
发布于 2017-09-13 18:27:38
如果JDBC驱动程序或WebSphere应用服务器级别(或两者都不支持)不支持JDBC4.1,就会引发JDBC4.1。如果使用WebSphere应用服务器自由,您将希望启用jdbc-4.1或jdbc-4.2特性,而不是jdbc-4.0。如果使用传统的WebSphere应用服务器,则需要确保您的最新版本足以支持JDBC4.1(或更高版本)。在这两种情况下,检查您的JDBC驱动程序是否符合JDBC4.1或更高版本,这是通过调用connection.getMetaData().getJDBCMajorVersion和connection.getMetaData().getJDBCMinorVersion (在应用服务器之外)实现的。
https://stackoverflow.com/questions/46204110
复制相似问题