使用Hibernate和C3P0的分布式Web模块的连接池

时间:2011-09-08 09:59:14

标签: java hibernate distributed connection-pooling

我有一个与数据库通信的Web服务(model-layer)。该模块负责保存和检索数据以及管理事务。她也定义了许多BL。其他隔离的Web模块使用此服务来保存和检索所需的数据。

现在model-layer正在成为瓶颈。我需要改变架构。

我想将Hibernate Entity类和BL移动到他们受尊敬的Web模块。因此每个Web模块将与同一个数据库进行通信。但我不希望在每个模块上维护分布式连接池和事务。

我知道应该有一种方法可以为所有分布式Web模块使用单个连接池。但我需要一个专业的意见,我该怎么做。

我不想使用Spring框架,该框架已被组织拒绝解决。

现在我正在尝试通过在LDAP上保存连接的序列化对象来找到解决方案,并且所有模块都将使用该连接池。现在,我正在摸不着头脑,想知道我是否朝着正确的方向前进。

请指导我改正路径。如果春天是唯一的选择,那么请告诉我。我会试着说服我的公司。

1 个答案:

答案 0 :(得分:0)

我想我找到了答案。

我在一台JBoss服务器上使用了共享数据源 (*-ds.xml)

数据源文件如下

<datasources>
  <local-tx-datasource>
    <jndi-name>jdbc/wc-mysql</jndi-name>
    <connection-url>jdbc:mysql://MyPC-IP:3306/DB</connection-url>
    <driver-class>com.mysql.jdbc.Driver</driver-class>
    <user-name>xUser</user-name>
    <password>xXxXx</password>
    <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>

    <use-java-context>false</use-java-context>

    <metadata>
       <type-mapping>mySQL</type-mapping>
    </metadata>
  </local-tx-datasource>
</datasources>

此DS可供在不同位置运行的所有JBoss服务器使用。

要确保<use-java-context>false</use-java-context>能够公开提供DS,以便您自己进行安全握手,这是一回事。