|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.springframework.jdbc.datasource.DelegatingDataSource org.springframework.jdbc.datasource.UserCredentialsDataSourceAdapter org.springframework.jdbc.datasource.IsolationLevelDataSourceAdapter org.springframework.jdbc.datasource.WebSphereDataSourceAdapter
public class WebSphereDataSourceAdapter
DataSource
implementation that delegates all calls to a WebSphere
target DataSource
, typically obtained from JNDI, applying a current
isolation level and/or current user credentials to every Connection obtained
from it.
Uses IBM-specific API to get a JDBC Connection with a specific isolation
level (and read-only flag) from a WebSphere DataSource
(IBM code example).
Supports the transaction-specific isolation level exposed by
TransactionSynchronizationManager.getCurrentTransactionIsolationLevel()
.
It's also possible to specify a default isolation level, to be applied when the
current Spring-managed transaction does not define a specific isolation level.
Usage example, defining the target DataSource as an inner-bean JNDI lookup (of course, you can link to any WebSphere DataSource through a bean reference):
<bean id="myDataSource" class="org.springframework.jdbc.datasource.WebSphereDataSourceAdapter"> <property name="targetDataSource"> <bean class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName" value="jdbc/myds"/> </bean> </property> </bean>Thanks to Ricardo Olivieri for submitting the original implementation of this approach!
com.ibm.websphere.rsadapter.JDBCConnectionSpec
,
com.ibm.websphere.rsadapter.WSDataSource#getConnection(com.ibm.websphere.rsadapter.JDBCConnectionSpec)
,
TransactionSynchronizationManager.getCurrentTransactionIsolationLevel()
,
TransactionSynchronizationManager.isCurrentTransactionReadOnly()
Field Summary | |
---|---|
protected Log |
logger
|
private java.lang.reflect.Method |
newJdbcConnSpecMethod
|
private java.lang.reflect.Method |
setPasswordMethod
|
private java.lang.reflect.Method |
setReadOnlyMethod
|
private java.lang.reflect.Method |
setTransactionIsolationMethod
|
private java.lang.reflect.Method |
setUserNameMethod
|
private java.lang.Class |
wsDataSourceClass
|
private java.lang.reflect.Method |
wsDataSourceGetConnectionMethod
|
Constructor Summary | |
---|---|
WebSphereDataSourceAdapter()
This constructor retrieves the WebSphere JDBC connection spec API, so we can get obtain specific WebSphere Connections using reflection. |
Method Summary | |
---|---|
void |
afterPropertiesSet()
Checks that the specified 'targetDataSource' actually is a WebSphere WSDataSource. |
protected java.lang.Object |
createConnectionSpec(java.lang.Integer isolationLevel,
java.lang.Boolean readOnlyFlag,
java.lang.String username,
java.lang.String password)
Create a WebSphere JDBCConnectionSpec object for the given charateristics. |
protected java.sql.Connection |
doGetConnection(java.lang.String username,
java.lang.String password)
Builds a WebSphere JDBCConnectionSpec object for the current settings and calls WSDataSource.getConnection(JDBCConnectionSpec) . |
Methods inherited from class org.springframework.jdbc.datasource.IsolationLevelDataSourceAdapter |
---|
getCurrentIsolationLevel, getCurrentReadOnlyFlag, getIsolationLevel, setIsolationLevel, setIsolationLevelName |
Methods inherited from class org.springframework.jdbc.datasource.UserCredentialsDataSourceAdapter |
---|
getConnection, getConnection, removeCredentialsFromCurrentThread, setCredentialsForCurrentThread, setPassword, setUsername |
Methods inherited from class org.springframework.jdbc.datasource.DelegatingDataSource |
---|
getLoginTimeout, getLogWriter, getParentLogger, getTargetDataSource, isWrapperFor, setLoginTimeout, setLogWriter, setTargetDataSource, unwrap |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
protected final Log logger
private java.lang.Class wsDataSourceClass
private java.lang.reflect.Method newJdbcConnSpecMethod
private java.lang.reflect.Method wsDataSourceGetConnectionMethod
private java.lang.reflect.Method setTransactionIsolationMethod
private java.lang.reflect.Method setReadOnlyMethod
private java.lang.reflect.Method setUserNameMethod
private java.lang.reflect.Method setPasswordMethod
Constructor Detail |
---|
public WebSphereDataSourceAdapter()
Method Detail |
---|
public void afterPropertiesSet()
afterPropertiesSet
in interface InitializingBean
afterPropertiesSet
in class DelegatingDataSource
protected java.sql.Connection doGetConnection(java.lang.String username, java.lang.String password) throws java.sql.SQLException
WSDataSource.getConnection(JDBCConnectionSpec)
.
doGetConnection
in class IsolationLevelDataSourceAdapter
username
- the username to usepassword
- the password to use
java.sql.SQLException
createConnectionSpec(java.lang.Integer, java.lang.Boolean, java.lang.String, java.lang.String)
,
com.ibm.websphere.rsadapter.WSDataSource#getConnection(com.ibm.websphere.rsadapter.JDBCConnectionSpec)
protected java.lang.Object createConnectionSpec(java.lang.Integer isolationLevel, java.lang.Boolean readOnlyFlag, java.lang.String username, java.lang.String password) throws java.sql.SQLException
JDBCConnectionSpec
object for the given charateristics.
The default implementation uses reflection to apply the given settings. Can be overridden in subclasses to customize the JDBCConnectionSpec object (JDBCConnectionSpec javadoc; IBM developerWorks article).
isolationLevel
- the isolation level to apply (or null
if none)readOnlyFlag
- the read-only flag to apply (or null
if none)username
- the username to apply (null
or empty indicates the default)password
- the password to apply (may be null
or empty)
java.sql.SQLException
- if thrown by JDBCConnectionSpec API methodscom.ibm.websphere.rsadapter.JDBCConnectionSpec
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |