JBoss JDBC警告 - “无法填充池”

时间:2010-04-05 17:55:19

标签: java oracle jdbc jboss

我们正在接受JBoss的随机警告..任何想法为什么?

当没有活动线程时,它会在随机时间发生。当任何处理恢复时,一切都有效。

13:49:31,764 WARN  [JBossManagedConnectionPool] [ ] Unable to fill pool
org.jboss.resource.JBossResourceException: Could not create connection; - nested throwable: (java.sql.SQLException: Listener ref
used the connection with the following error:
ORA-12516, TNS:listener could not find available handler with matching protocol stack
The Connection descriptor used by the client was:
//localhost:1521/orcl
)
        at org.jboss.resource.adapter.jdbc.xa.XAManagedConnectionFactory.createManagedConnection(XAManagedConnectionFactory.java
:144)
        at org.jboss.resource.connectionmanager.InternalManagedConnectionPool.createConnectionEventListener(InternalManagedConne
ctionPool.java:577)
        at org.jboss.resource.connectionmanager.InternalManagedConnectionPool.fillToMin(InternalManagedConnectionPool.java:524)
        at org.jboss.resource.connectionmanager.PoolFiller.run(PoolFiller.java:74)
        at java.lang.Thread.run(Thread.java:619)
Caused by: java.sql.SQLException: Listener refused the connection with the following error:
ORA-12516, TNS:listener could not find available handler with matching protocol stack
The Connection descriptor used by the client was:
//localhost:1521/orcl

更新:根据richj的帖子,以下是我们使用的四种数据源之一的格式:

  <xa-datasource>
        <jndi-name>ABCOracleDS</jndi-name>
        <track-connection-by-tx/>
        <isSameRM-override-value>false</isSameRM-override-value>
        <xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
        <xa-datasource-property name="URL">jdbc:oracle:thin:@//localhost:1521/orcl</xa-datasource-property>
        <xa-datasource-property name="User">myuser</xa-datasource-property>
        <xa-datasource-property name="Password">mypw</xa-datasource-property>
        <min-pool-size>20</min-pool-size>
        <max-pool-size>200</max-pool-size>
        <valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleValidConnectionChecker
        </valid-connection-checker-class-name>
        <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter
        </exception-sorter-class-name>
        <no-tx-separate-pools/>

        <metadata>
            <type-mapping>Oracle10g</type-mapping>
        </metadata>
    </xa-datasource> 

1 个答案:

答案 0 :(得分:1)

The Connection descriptor used by the client was:
//localhost:1521/orcl

我认为问题很可能出在数据源定义的某个地方。 您的JBoss热部署目录中是否有多个数据源定义? 您的数据源定义是否正确和完整 - 尤其是用于构建连接URL的属性?

更新1

我不确定斜线,我想也许是URL:

jdbc:oracle:thin:@//localhost:1521/orcl

应如下所示:

jdbc:oracle:thin:@localhost:1521:orcl

更新2

以下是来自Oracle的引用,它支持带斜杠的语法 以下是来自Orafaq的引用,它支持使用冒号的语法。

即使斜线是合法的,也许值得一试?

更新3

来自“绝望”的技巧框中的一些想法:

ORA-12516: TNS:listener could not find available handler with matching protocol stack

此消息看起来像是TNS配置问题。 JDBC瘦驱动程序不应该需要TNS配置,但我发现有时它只是拒绝在没有TNS配置的情况下工作。

您还可以尝试使用完全限定的主机名,而不是 localhost 。有时 machine.company.com 机器本身不起作用时有效。