【问题标题】:How to add c3p0 or DBCP Connection pool?如何添加 c3p0 或 DBCP 连接池?
【发布时间】:2011-02-07 12:25:24
【问题描述】:

您能否向我解释一下如何将独立的 c3pO 或 DBCP 连接池添加到我的基于 toplink 的 JPA 项目中?

我有一个persistence.xml 文件,每次我想查询数据库时,我都是这样做的:

EntityManagerFactory emf = this.getEntityManagerFactory();

//肯定是用persistence.xml设置工厂的

EntityManager em = emf.createEntityManager(); ...

在哪里建立外部连接池管理器和 Toplink 之间的桥梁?欢迎任何想法或链接。

问候, 让

【问题讨论】:

    标签: jpa toplink-essentials apache-commons-dbcp c3p0


    【解决方案1】:

    我不使用 Toplink,所以我没有对此进行测试,但是,我对在网上找到的各种资源的理解是,您需要提供 SessionCustomizer 的实现。在此实现中,使用JNDIConnector 类通过setDataSource(javax.sql.DataSource) 方法提供一个DataSource 对象(c3p0 实现DataSource API)。

    改编来自Working with a non JTA DataSource in Toplink Essentials的样本。

    【讨论】:

    • 我真的不明白该怎么办。对于初学者来说页面如此模糊。尽管如此,我还是单独创建了一个 SessionCustomizer 类。这是我的 customize() 方法: public void customize(Session session) throws Exception{ DataSource ds = DataSources.unpooledDataSource("myServerURL", "login", "pwd");数据源池 = DataSources.pooledDataSource(ds); JNDIConnector conn = (JNDIConnector)session.getLogin().getConnector(); conn.setDataSource(pooled); conn.setLookupType(JNDIConnector.STRING_LOOKUP); }
    • @Jean 好吧,问题是我没有使用 Toplink,很难找到资源甚至指向文档的指针,最重要的是,我什至不确定您正在使用什么(是 Toplink Essentials 吗?)。你能先确认一下吗?
    【解决方案2】:

    我真的不明白该怎么做。对于初学者来说页面如此模糊。尽管如此,我还是单独创建了一个 SessionCustomizer 类。这是我的自定义()方法,使用 c3p0:

    public void customize(Session session) throws Exception{ 
    DataSource ds = DataSources.unpooledDataSource("myServerURL", "login", "pwd"); 
    DataSource pooled = DataSources.pooledDataSource(ds); 
    JNDIConnector conn = (JNDIConnector)session.getLogin().getConnector(); 
    conn.setDataSource(pooled); 
    conn.setLookupType(JNDIConnector.STRING_LOOKUP); 
    }
    

    我什至不认为这是正确的。我在代码中清楚地说明了我的连接信息,真的很奇怪。

    其次,在来自链接的 persistence.xml 示例中,他们放了:

    <non-jta-data-source>java:comp/env/jdbc/DefaultDS</non-jta-data-source>
       <class>sample.MyEntity</class>
       <properties>
         <property name="toplink.session.customizer" value="es.claro.commons.ds.DataSourceSessionCustomizer"/>
       </properties>
    

    我应该放什么,尤其是“non-jta-data-source”标签?有没有办法将连接信息放入该 xml 而不是代码中?

    帮助。

    【讨论】:

      猜你喜欢
      • 2012-07-06
      • 2019-03-03
      • 2010-10-05
      • 2013-08-20
      • 2012-12-22
      • 2011-12-11
      • 2017-04-19
      • 1970-01-01
      相关资源
      最近更新 更多