【问题标题】:DataSources in WebSphereWebSphere 中的数据源
【发布时间】:2015-09-16 01:06:31
【问题描述】:

在 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$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

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

【问题讨论】:

  • 也许您正在使用身份验证别名,而您忘记将其更新为正确的用户/密码。最好的方法是更改​​数据源属性后重新启动服务器。

标签: jakarta-ee websphere datasource jndi


【解决方案1】:

您使用 JNDI 来获得与 DB 的连接。

您不必担心数据源的设置\凭据是什么。这就是 JNDI 的理念。

如果您需要动态更改连接的设置,也许您最好抑制JNDI并使用自定义连接创建机制。

如果您使用的是 z/OS,那么您可以阅读 WebSphere Application Server V7.0 Security Guide 中的“使用 JDBC Type 2 驱动程序将用户凭据传播到 DB2”

【讨论】:

    【解决方案2】:

    您需要停止和启动节点才能生效。您可以通过运行以下命令来完成:

    cd <was_home>/profiles/<node_name>/bin
    

    对于 Linux:

    停止节点

    ./stopNode.sh
    

    启动节点

    ./startNode.sh
    

    适用于 Windows

    停止节点

    stopNode.bat
    

    启动节点

    startNode.bat
    

    另外,请验证您提供的用户名和密码是否正确。

    【讨论】:

      【解决方案3】:

      Ripplestart 是伪造这种东西的唯一方法。这样用户的影响最小。除非您有 A 和 B 集群模型,其中集群 B 已经离线等待此类更改,然后再上线。如果不至少滚动回收应用服务器,我就无法在运行时更改凭据。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多