WebSphere中的DataSources

时间:2015-06-29 14:09:01

标签: java-ee websphere datasource jndi

在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

如何在运行时替换数据源属性?

3 个答案:

答案 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。