Spring TomEE数据源资源获取;诺瓦特:游泳池空了。无法获取连接,没有可用的连接[5正在使用]。“;

Spring TomEE数据源资源获取;诺瓦特:游泳池空了。无法获取连接,没有可用的连接[5正在使用]。“;,spring,tomcat,datasource,apache-tomee,Spring,Tomcat,Datasource,Apache Tomee,我正在Eclipse Neon中运行TomEE 7.0.1。我在“tomee.xml”文件中定义了一个数据源资源。数据源连接到Oracle数据库,我从本地Maven repo获取驱动程序 当TomEE启动时,控制台中出现以下错误: org.apache.tomcat.jdbc.pool.PoolExhaustedException: [main] NoWait: Pool empty. Unable to fetch a connection, none available[5 in use].

我正在Eclipse Neon中运行TomEE 7.0.1。我在“tomee.xml”文件中定义了一个数据源资源。数据源连接到Oracle数据库,我从本地Maven repo获取驱动程序

当TomEE启动时,控制台中出现以下错误:

org.apache.tomcat.jdbc.pool.PoolExhaustedException: [main] NoWait: Pool empty. Unable to fetch a connection, none available[5 in use].
at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:679)
at org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:468)
at org.apache.tomcat.jdbc.pool.ConnectionPool.<init>(ConnectionPool.java:143)
at org.apache.tomee.jdbc.TomEEDataSourceCreator$TomEEConnectionPool.<init>(TomEEDataSourceCreator.java:221)
org.apache.tomcat.jdbc.pool.pooldepustedexception:[main]NoWait:pool empty。无法获取连接,没有可用的连接[5正在使用]。
位于org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:679)
位于org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:468)
位于org.apache.tomcat.jdbc.pool.ConnectionPool(ConnectionPool.java:143)
位于org.apache.tomee.jdbc.TomEEDataSourceCreator$TomEEConnectionPool(TomEEDataSourceCreator.java:221)
以下是我的资源定义:

<Resource id="global/foo/bar" type="DataSource" classpath="mvn:oracle:ojdbc6:11.2.0.3">
    JdbcDriver = oracle.jdbc.driver.OracleDriver
    MaxActive = 5
    MinIdle = 2
    MaxIdle = 2 
    MaxWait = 10000
    JdbcUrl = jdbc:oracle:thin:@<host>:1521:sus2
    UserName = <userid>
    Password = <password>
</Resource>

JdbcDriver=oracle.jdbc.driver.OracleDriver
MaxActive=5
迷你们=2
MaxIdle=2
MaxWait=10000
JdbcUrl=jdbc:oracle:thin:@:1521:sus2
用户名=
密码=
我省略了主机、用户和密码,但id与所写的一样。我仍然不确定JNDI查找,但这显然是另一个问题

以下是我在Spring上下文中的JNDI查找参考:

    <jee:jndi-lookup jndi-name="java:global/foo/bar" id="sus2ds"/>

下面是Tomcat控制台的更多输出:

    INFO: Configuring Service(id=global/foo/bar, type=Resource, provider-id=Default JDBC Database)
...
INFO: Creating Resource(id=global/foo/bar)
Aug 03, 2016 11:08:27 AM org.apache.tomcat.jdbc.pool.ConnectionPool checkPoolConfiguration
WARNING: initialSize is larger than maxActive, setting initialSize to: 5
Aug 03, 2016 11:08:27 AM org.apache.tomcat.jdbc.pool.ConnectionPool init
SEVERE: Unable to create initial connections of pool.
org.apache.tomcat.jdbc.pool.PoolExhaustedException: [main] NoWait: Pool empty. Unable to fetch a connection, none available[5 in use].
    at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:679)
    at org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:468)
    at org.apache.tomcat.jdbc.pool.ConnectionPool.<init>(ConnectionPool.java:143)
    at org.apache.tomee.jdbc.TomEEDataSourceCreator$TomEEConnectionPool.<init>(TomEEDataSourceCreator.java:221)
...

Aug 03, 2016 11:08:27 AM org.apache.tomee.jdbc.TomEEDataSourceCreator$TomEEDataSource <init>
SEVERE: Can't create DataSource
org.apache.tomcat.jdbc.pool.PoolExhaustedException: [main] NoWait: Pool empty. Unable to fetch a connection, none available[5 in use].
    at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:679)
    at org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:468)
    at org.apache.tomcat.jdbc.pool.ConnectionPool.<init>(ConnectionPool.java:143)
    at org.apache.tomee.jdbc.TomEEDataSourceCreator$TomEEConnectionPool.<init>(TomEEDataSourceCreator.java:221)
...

...
2016-08-03 11:08:30,080 WARN  [localhost-startStop-1] support.AbstractApplicationContext (AbstractApplicationContext.java:549) - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sus2ds': Invocation of init method failed; nested exception is javax.naming.NameNotFoundException: Name "foo/bar" not found.
2016-08-03 11:08:30,084 ERROR [localhost-startStop-1] context.ContextLoader (ContextLoader.java:351) - Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sus2ds': Invocation of init method failed; nested exception is javax.naming.NameNotFoundException: Name "foo/bar" not found.
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1578)
...
Caused by: javax.naming.NameNotFoundException: Name "foo/bar" not found.
    at org.apache.openejb.core.ivm.naming.IvmContext.federate(IvmContext.java:199)
    at org.apache.openejb.core.ivm.naming.IvmContext.lookup(IvmContext.java:151)
    at org.apache.openejb.core.ivm.naming.IvmContext.lookup(IvmContext.java:291)
    at org.apache.naming.NamingContext.lookup(NamingContext.java:828)
...
Aug 03, 2016 11:08:30 AM org.apache.catalina.core.StandardContext listenerStart
SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sus2ds': Invocation of init method failed; nested exception is javax.naming.NameNotFoundException: Name "foo/bar" not found.
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1578)
...
Caused by: javax.naming.NameNotFoundException: Name "foo/bar" not found.
    at org.apache.openejb.core.ivm.naming.IvmContext.federate(IvmContext.java:199)
    at org.apache.openejb.core.ivm.naming.IvmContext.lookup(IvmContext.java:151)
    at org.apache.openejb.core.ivm.naming.IvmContext.lookup(IvmContext.java:291)
    at org.apache.naming.NamingContext.lookup(NamingContext.java:828)
...
INFO:配置服务(id=global/foo/bar,type=Resource,provider id=Default JDBC数据库)
...
信息:创建资源(id=global/foo/bar)
2016年8月3日上午11:08:27 org.apache.tomcat.jdbc.pool.ConnectionPool checkPoolConfiguration
警告:initialSize大于maxActive,正在将initialSize设置为:5
2016年8月3日上午11:08:27 org.apache.tomcat.jdbc.pool.ConnectionPool init
严重:无法创建池的初始连接。
org.apache.tomcat.jdbc.pool.pooldepustedexception:[main]NoWait:pool empty。无法获取连接,没有可用的连接[5正在使用]。
位于org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:679)
位于org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:468)
位于org.apache.tomcat.jdbc.pool.ConnectionPool(ConnectionPool.java:143)
位于org.apache.tomee.jdbc.TomEEDataSourceCreator$TomEEConnectionPool(TomEEDataSourceCreator.java:221)
...
2016年8月3日上午11:08:27 org.apache.tomee.jdbc.TomEEDataSourceCreator$TomEEDataSource
严重:无法创建数据源
org.apache.tomcat.jdbc.pool.pooldepustedexception:[main]NoWait:pool empty。无法获取连接,没有可用的连接[5正在使用]。
位于org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:679)
位于org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:468)
位于org.apache.tomcat.jdbc.pool.ConnectionPool(ConnectionPool.java:143)
位于org.apache.tomee.jdbc.TomEEDataSourceCreator$TomEEConnectionPool(TomEEDataSourceCreator.java:221)
...
...
2016-08-03 11:08:30080警告[localhost-startStop-1]support.AbstractApplicationContext(AbstractApplicationContext.java:549)-上下文初始化期间遇到异常-取消刷新尝试:org.springframework.beans.factory.BeanCreationException:创建名为“sus2ds”的bean时出错:调用init方法失败;嵌套异常为javax.naming.NameNotFoundException:未找到名称“foo/bar”。
2016-08-03 11:08:30084错误[localhost-startStop-1]context.ContextLoader(ContextLoader.java:351)-上下文初始化失败
org.springframework.beans.factory.BeanCreationException:创建名为“sus2ds”的bean时出错:调用init方法失败;嵌套异常为javax.naming.NameNotFoundException:未找到名称“foo/bar”。
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1578)
...
原因:javax.naming.NameNotFoundException:找不到名称“foo/bar”。
位于org.apache.openejb.core.ivm.naming.IvmContext.federate(IvmContext.java:199)
位于org.apache.openejb.core.ivm.naming.IvmContext.lookup(IvmContext.java:151)
位于org.apache.openejb.core.ivm.naming.IvmContext.lookup(IvmContext.java:291)
位于org.apache.naming.NamingContext.lookup(NamingContext.java:828)
...
2016年8月3日上午11:08:30 org.apache.catalina.core.StandardContext listenerStart
严重:将上下文初始化事件发送到类org.springframework.web.context.ContextLoaderListener的侦听器实例时发生异常
org.springframework.beans.factory.BeanCreationException:创建名为“sus2ds”的bean时出错:调用init方法失败;嵌套异常为javax.naming.NameNotFoundException:未找到名称“foo/bar”。
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1578)
...
原因:javax.naming.NameNotFoundException:找不到名称“foo/bar”。
位于org.apache.openejb.core.ivm.naming.IvmContext.federate(IvmContext.java:199)
位于org.apache.openejb.core.ivm.naming.IvmContext.lookup(IvmContext.java:151)
位于org.apache.openejb.core.ivm.naming.IvmContext.lookup(IvmContext.java:291)
位于org.apache.naming.NamingContext.lookup(NamingContext.java:828)
...

我会启动服务器并使用MBean explorer或JNDI explorer webapp查看JNDI树并获得正确的名称。我的怀疑是,您不需要
id=“global/foo/bar”
而是
id=“foo/bar”
并在Spring代码中保持相同的查找

我将启动服务器并使用MBean explorer或JNDI explorer webapp查看JNDI树并获得正确的名称。我的怀疑是,您不需要
id=“global/foo/bar”
而是
id=“foo/bar”
并在Spring代码中保持相同的查找