JDBC创建数据源需要重新启动-Websphere 9.0

时间:2019-06-20 19:36:40

标签: websphere websphere-portal websphere-9

我正在Websphere中创建JDBC数据源。对于创建部分,一切正常。因此,当我测试来自Websphere数据源的连接时,连接成功。但是,如果我尝试通过浏览器访问它,例如

http://10.10.10.23:9090/TestJdbCResourceName/我收到一个Sql异常。

我希望得到Connection: com.ibm.ws.rsadapter.jdbc.WSJdbcConnection@f9cf6468

但是我得到的是:

java.sql.SQLException
    at com.ibm.ws.rsadapter.AdapterUtil.toSQLException(AdapterUtil.java:1705)
    at com.ibm.ws.rsadapter.jdbc.WSJdbcDataSource.getConnection(WSJdbcDataSource.java:663)
    at com.ibm.ws.rsadapter.jdbc.WSJdbcDataSource.getConnection(WSJdbcDataSource.java:613)
    at com.test.testHello.TestServlet.doGet(TestServlet.java:29)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1234)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:778)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:477)
    at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178)
    at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1124)
    at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:4115)
    at com.ibm.ws.webcontainer.webapp.WebAppImpl.handleRequest(WebAppImpl.java:2198)
    at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:304)
    at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:1028)
    at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1817)
    at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:382)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:465)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:532)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:318)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:289)
    at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214)
    at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113)
    at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:175)
    at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
    at com.ibm.io.async.AsyncChannelFuture$1.run(AsyncChannelFuture.java:205)
    at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1892)
Caused by: javax.resource.spi.ResourceAllocationException
    at com.ibm.ejs.j2c.FreePool.createManagedConnectionWithMCWrapper(FreePool.java:2523)
    at com.ibm.ejs.j2c.FreePool.createOrWaitForConnection(FreePool.java:1840)
    at com.ibm.ejs.j2c.PoolManager.reserve(PoolManager.java:3840)
    at com.ibm.ejs.j2c.PoolManager.reserve(PoolManager.java:3116)
    at com.ibm.ejs.j2c.ConnectionManager.allocateMCWrapper(ConnectionManager.java:1548)
    at com.ibm.ejs.j2c.ConnectionManager.allocateConnection(ConnectionManager.java:1031)
    at com.ibm.ws.rsadapter.jdbc.WSJdbcDataSource.getConnection(WSJdbcDataSource.java:646)
    ... 25 more
Caused by: java.lang.NullPointerException
    at oracle.jdbc.pool.OracleConnectionPoolDataSource.getPooledConnection(OracleConnectionPoolDataSource.java:68)
    at com.ibm.ws.rsadapter.spi.InternalGenericDataStoreHelper$1.run(InternalGenericDataStoreHelper.java:1365)
    at com.ibm.ws.security.util.AccessController.doPrivileged(AccessController.java:118)
    at com.ibm.ws.rsadapter.spi.InternalGenericDataStoreHelper.getPooledConnection(InternalGenericDataStoreHelper.java:1384)
    at com.ibm.ws.rsadapter.spi.WSRdbDataSource.getPooledConnection(WSRdbDataSource.java:2154)
    at com.ibm.ws.rsadapter.spi.WSManagedConnectionFactoryImpl.getConnection(WSManagedConnectionFactoryImpl.java:1787)
    at com.ibm.ws.rsadapter.spi.WSManagedConnectionFactoryImpl.createManagedConnection(WSManagedConnectionFactoryImpl.java:1557)
    at com.ibm.ws.rsadapter.spi.WSManagedConnectionFactoryImpl.createManagedConnection(WSManagedConnectionFactoryImpl.java:1113)
    at com.ibm.ejs.j2c.FreePool.createManagedConnectionWithMCWrapper(FreePool.java:2162)
    ... 31 more

当我重新启动Websphere并尝试完全相同的工作时。

但是重新启动不是一种选择,因为其他应用程序正在Websphere上运行。

不确定为什么这需要重新启动并且创建后无法立即使用。 (因为它可以通过数据源测试连接使用)

什么可能导致这种情况发生?

1 个答案:

答案 0 :(得分:0)

您正在使用的

传统的WebSphere Application Server在不重新启动服务器的情况下不支持对数据源的更新,这就是为什么尝试时会看到错误的原因。为了将来可能会读到其他答案的人,应该澄清一下,WebSphere Application Server Liberty确实支持对数据源的配置更新而无需重新启动服务器,但是这对您的情况没有帮助,因为您使用的是传统的WebSphere Application服务器版本。

您可以通过测试连接操作看到它成功的原因是,测试连接操作没有通过连接管理器执行正常的产品代码路径,而只是直接通过JDBC驱动程序形成了连接。假设您所有的配置都是正确的,那么此操作成功,而通过JNDI(生产代码路径)访问数据源失败。