在WebSphere 7中定义了一个JNDI名称为“jdbc / project / SimpleDS”的数据源。在管理控制台中,我更改了数据源属性:db_name,db_port,db_host,login和password。
因此,引用“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$1.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)
我使用的是Ubuntu 14.04
如何在运行时替换数据源属性?
答案 0 :(得分:0)
您需要停止并启动节点才能生效。您可以通过运行以下命令来执行此操作:
cd <was_home>/profiles/<node_name>/bin
对于Linux:
停止节点
./stopNode.sh
启动节点
./startNode.sh
适用于Windows
停止节点
stopNode.bat
启动节点
startNode.bat
此外,请验证您提供的用户名和密码是否正确。
答案 1 :(得分:0)
您使用JNDI获取与DB的连接。
您不应该担心数据源的设置\凭据是什么。这就是JNDI的想法。
如果您需要在动态中更改连接设置,或许最好从JNDI限制并使用自定义连接创建机制。
如果您正在使用z / OS,那么您可以在WebSphere Application Server V7.0 Security Guide
中阅读“使用JDBC Type 2驱动程序将用户凭据传播到DB2”答案 2 :(得分:0)
Ripplestart是伪造这种东西的唯一方法。这样用户的影响最小。除非您拥有A和B群集模型,其中群集B已脱机,等待此类更改才能联机。我没有办法在运行时更改凭据,而至少没有滚动回收App Server。