WebSphere 中的数据源
DataSources in WebSphere
在 WebSphere 7 中定义了一个 JNDI 名称为 "jdbc/project/SimpleDS" 的数据源。在管理控制台中,我更改了数据源属性:db_name、db_port、db_host , 登录名和密码。
因此引用 "jdbc/project/SimpleDS" 数据源的已部署应用程序抛出异常:
java.sql.SQLInvalidAuthorizationSpecException: [jcc][t4][2013][11249]
[4.8.87] Connection authorization failure occurred. Reason: User ID or Password invalid. ERRORCODE=-4214, SQLSTATE=28000DSRA0010E:
SQL State = 28000, Error Code = -4,214
at com.ibm.db2.jcc.am.gd.a(gd.java:674)
at com.ibm.db2.jcc.am.gd.a(gd.java:60)
at com.ibm.db2.jcc.am.gd.a(gd.java:120)
at com.ibm.db2.jcc.t4.b.p(b.java:2060)
at com.ibm.db2.jcc.t4.b.c(b.java:1649)
at com.ibm.db2.jcc.t4.db.r(db.java:799)
at com.ibm.db2.jcc.t4.db.k(db.java:353)
at com.ibm.db2.jcc.t4.db.c(db.java:133)
at com.ibm.db2.jcc.t4.b.Wc(b.java:1263)
at com.ibm.db2.jcc.t4.b.b(b.java:1184)
at com.ibm.db2.jcc.t4.b.a(b.java:5175)
at com.ibm.db2.jcc.t4.b.d(b.java:743)
at com.ibm.db2.jcc.t4.b.c(b.java:685)
at com.ibm.db2.jcc.t4.b.a(b.java:368)
at com.ibm.db2.jcc.t4.b.<init>(b.java:308)
at com.ibm.db2.jcc.t4.c.<init>(c.java:32)
at com.ibm.db2.jcc.DB2PooledConnection.<init>(DB2PooledConnection.java:192)
at com.ibm.db2.jcc.DB2XAConnection.<init>(DB2XAConnection.java:56)
at com.ibm.db2.jcc.DB2XADataSource.getXAConnection(DB2XADataSource.java:168)
at com.ibm.ws.rsadapter.spi.InternalGenericDataStoreHelper.run(InternalGenericDataStoreHelper.java:1338)
at com.ibm.ws.security.util.AccessController.doPrivileged(AccessController.java:118)
at com.ibm.ws.rsadapter.spi.InternalGenericDataStoreHelper.getPooledConnection(InternalGenericDataStoreHelper.java:1375)
at com.ibm.ws.rsadapter.spi.InternalDB2UniversalDataStoreHelper.getPooledConnection(InternalDB2UniversalDataStoreHelper.java:1855)
at com.ibm.ws.rsadapter.spi.WSRdbDataSource.getPooledConnection(WSRdbDataSource.java:2624)
at com.ibm.ws.rsadapter.spi.WSManagedConnectionFactoryImpl.createManagedConnection(WSManagedConnectionFactoryImpl.java:1695)
at com.ibm.ejs.j2c.FreePool.createManagedConnectionWithMCWrapper(FreePool.java:2086)
at com.ibm.ejs.j2c.FreePool.createOrWaitForConnection(FreePool.java:1761)
at com.ibm.ejs.j2c.PoolManager.reserve(PoolManager.java:2636)
at com.ibm.ejs.j2c.ConnectionManager.allocateMCWrapper(ConnectionManager.java:1064)
at com.ibm.ejs.j2c.ConnectionManager.allocateConnection(ConnectionManager.java:701)
at com.ibm.ws.rsadapter.jdbc.WSJdbcDataSource.getConnection(WSJdbcDataSource.java:668)
at com.ibm.ws.rsadapter.jdbc.WSJdbcDataSource.getConnection(WSJdbcDataSource.java:635)
我用Ubuntu14.04
如何在运行时替换数据源属性?
您需要停止并启动节点才能生效。您可以通过 运行 以下命令来完成:
cd <was_home>/profiles/<node_name>/bin
对于Linux:
停止节点
./stopNode.sh
启动节点
./startNode.sh
对于Windows
停止节点
stopNode.bat
启动节点
startNode.bat
此外,请验证您提供的用户名和密码是否正确。
您使用 JNDI 获取与数据库的连接。
您不必担心 settings\credentials 数据源是什么。这就是JNDI的思想。
如果您需要动态更改连接设置,也许您最好限制JNDI 并使用自定义连接创建机制。
如果您正在 z/OS,那么您可以在 WebSphere Application Server V7.0 Security Guide
中阅读 "Propagating user credentials to DB2 using JDBC Type 2 driver"
Ripplestart 是伪造这种东西的唯一方法。这样用户的影响最小。除非您有 A 和 B 集群模型,其中集群 B 已经脱机,等待这样的更改才能联机。据我所知,如果至少不对应用程序服务器进行滚动回收,就无法在运行时更改凭据。
在 WebSphere 7 中定义了一个 JNDI 名称为 "jdbc/project/SimpleDS" 的数据源。在管理控制台中,我更改了数据源属性:db_name、db_port、db_host , 登录名和密码。
因此引用 "jdbc/project/SimpleDS" 数据源的已部署应用程序抛出异常:
java.sql.SQLInvalidAuthorizationSpecException: [jcc][t4][2013][11249]
[4.8.87] Connection authorization failure occurred. Reason: User ID or Password invalid. ERRORCODE=-4214, SQLSTATE=28000DSRA0010E:
SQL State = 28000, Error Code = -4,214
at com.ibm.db2.jcc.am.gd.a(gd.java:674)
at com.ibm.db2.jcc.am.gd.a(gd.java:60)
at com.ibm.db2.jcc.am.gd.a(gd.java:120)
at com.ibm.db2.jcc.t4.b.p(b.java:2060)
at com.ibm.db2.jcc.t4.b.c(b.java:1649)
at com.ibm.db2.jcc.t4.db.r(db.java:799)
at com.ibm.db2.jcc.t4.db.k(db.java:353)
at com.ibm.db2.jcc.t4.db.c(db.java:133)
at com.ibm.db2.jcc.t4.b.Wc(b.java:1263)
at com.ibm.db2.jcc.t4.b.b(b.java:1184)
at com.ibm.db2.jcc.t4.b.a(b.java:5175)
at com.ibm.db2.jcc.t4.b.d(b.java:743)
at com.ibm.db2.jcc.t4.b.c(b.java:685)
at com.ibm.db2.jcc.t4.b.a(b.java:368)
at com.ibm.db2.jcc.t4.b.<init>(b.java:308)
at com.ibm.db2.jcc.t4.c.<init>(c.java:32)
at com.ibm.db2.jcc.DB2PooledConnection.<init>(DB2PooledConnection.java:192)
at com.ibm.db2.jcc.DB2XAConnection.<init>(DB2XAConnection.java:56)
at com.ibm.db2.jcc.DB2XADataSource.getXAConnection(DB2XADataSource.java:168)
at com.ibm.ws.rsadapter.spi.InternalGenericDataStoreHelper.run(InternalGenericDataStoreHelper.java:1338)
at com.ibm.ws.security.util.AccessController.doPrivileged(AccessController.java:118)
at com.ibm.ws.rsadapter.spi.InternalGenericDataStoreHelper.getPooledConnection(InternalGenericDataStoreHelper.java:1375)
at com.ibm.ws.rsadapter.spi.InternalDB2UniversalDataStoreHelper.getPooledConnection(InternalDB2UniversalDataStoreHelper.java:1855)
at com.ibm.ws.rsadapter.spi.WSRdbDataSource.getPooledConnection(WSRdbDataSource.java:2624)
at com.ibm.ws.rsadapter.spi.WSManagedConnectionFactoryImpl.createManagedConnection(WSManagedConnectionFactoryImpl.java:1695)
at com.ibm.ejs.j2c.FreePool.createManagedConnectionWithMCWrapper(FreePool.java:2086)
at com.ibm.ejs.j2c.FreePool.createOrWaitForConnection(FreePool.java:1761)
at com.ibm.ejs.j2c.PoolManager.reserve(PoolManager.java:2636)
at com.ibm.ejs.j2c.ConnectionManager.allocateMCWrapper(ConnectionManager.java:1064)
at com.ibm.ejs.j2c.ConnectionManager.allocateConnection(ConnectionManager.java:701)
at com.ibm.ws.rsadapter.jdbc.WSJdbcDataSource.getConnection(WSJdbcDataSource.java:668)
at com.ibm.ws.rsadapter.jdbc.WSJdbcDataSource.getConnection(WSJdbcDataSource.java:635)
我用Ubuntu14.04
如何在运行时替换数据源属性?
您需要停止并启动节点才能生效。您可以通过 运行 以下命令来完成:
cd <was_home>/profiles/<node_name>/bin
对于Linux:
停止节点
./stopNode.sh
启动节点
./startNode.sh
对于Windows
停止节点
stopNode.bat
启动节点
startNode.bat
此外,请验证您提供的用户名和密码是否正确。
您使用 JNDI 获取与数据库的连接。
您不必担心 settings\credentials 数据源是什么。这就是JNDI的思想。
如果您需要动态更改连接设置,也许您最好限制JNDI 并使用自定义连接创建机制。
如果您正在 z/OS,那么您可以在 WebSphere Application Server V7.0 Security Guide
中阅读 "Propagating user credentials to DB2 using JDBC Type 2 driver"Ripplestart 是伪造这种东西的唯一方法。这样用户的影响最小。除非您有 A 和 B 集群模型,其中集群 B 已经脱机,等待这样的更改才能联机。据我所知,如果至少不对应用程序服务器进行滚动回收,就无法在运行时更改凭据。