【问题标题】:jboss connection pool doesn't handle errors gracefullyjboss 连接池不能优雅地处理错误
【发布时间】:2014-03-11 04:33:08
【问题描述】:

我正在使用配置了多个数据源的 jboss 5.0.1。

似乎在启动时,如果其中一个配置不正确,jboss会抛出异常并拒绝启动。

我想知道是否可以将 jboss 配置为对此类问题具有弹性。

【问题讨论】:

    标签: jboss datasource jboss5.x


    【解决方案1】:

    您可以在包含连接参数/映射的 xml 文件中配置连接。就我而言,我使用 microsoft sql server 作为数据源,所以我必须使用 mssql-ds.xml 文件(在 server/deploy 目录中)来指定:

    <?xml version="1.0" encoding="UTF-8"?>
    <datasources>
       <local-tx-datasource>
          <jndi-name>myTestServer</jndi-name>
          <connection-url>jdbc:sqlserver://xxx.xxx.xxx.xxx:1433;databaseName=MyDB</connection-url>
          <driver-class>com.microsoft.sqlserver.jdbc.SQLServerDriver</driver-class>
          <user-name>test</user-name>
          <password>abc123</password>
          <min-pool-size>10</min-pool-size>
          <max-pool-size>25</max-pool-size>
    
          <!-- sql to call when connection is created -->
          <new-connection-sql>select getdate()</new-connection-sql>
          <!-- -->
    
          <!-- sql to call on an existing pooled connection when it is obtained from pool
          This will be run before a managed connection is removed from the pool
          for use by a client -->
          <check-valid-connection-sql>select getdate()</check-valid-connection-sql>
    
       </local-tx-datasource>
     </datasources>
    

    这有助于控制池中的连接,并且应该停止狡猾的死锁。我不完全确定这是否会测试相关连接上的当前事务级别,所以如果你想绝对确定,你可以试试:&lt;check-valid-connection-sql&gt;IF @@TRANCOUNT &gt; 0 raiserror ('%s',18,1,'Open Transactions Discovered')&lt;/check-valid-connection-sql&gt; 这会给你一个显式的 SQLException 来处理。

    但如果您在启动时遇到错误,查看这些错误是什么会非常有用。

    【讨论】:

    • 您好 Rich,感谢您的帮助。我们已经进行了连接检查。有问题的错误来自不正确的用户名/密码。我们要确保 jboss 继续启动,并且其他连接(已正确配置)设置正确。
    猜你喜欢
    • 2017-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-19
    相关资源
    最近更新 更多