使用带有JPA的tomcat连接池

时间:2011-06-09 14:09:14

标签: tomcat jpa

我想在我运行在tomcat上的web应用程序中使用带JPA / TopLink的连接池。早期我使用jdbc的Connection和Statement类来操作数据库中的数据;以这种方式使用连接池我只需在context.xml中声明资源并在应用程序中获取此资源:

Context c = new InitialContext();
DataSource source = (DataSource) ((Context)c.lookup("java:comp/env")).lookup("jdbc/MySource");

现在我想在JPA中使用这样的连接池。我怎么能这样做?

还有一个问题:我在一些例子中看到reosurce是在context.xml中声明的,然后在web.xml中的<资源引用取代。为什么我应该在不同的地方声明它或者它是相同的声明,我的意思是它相当于context.xml中的声明?

1 个答案:

答案 0 :(得分:6)

  

现在我想在JPA中使用这样的连接池。我该怎么做?

假设您已经在<Resource>中通过context.xml声明了连接池数据源创建,那么您只需要在webapp的/META-INF/persistence.xml中声明JPA的数据源用法。< / p>

<persistence-unit name="YourPersistenceUnit" transaction-type="JTA">
    <jta-data-source>jdbc/MySource</jta-data-source>
</persistence-unit>

  

还有一个问题:我在一些例子中看到,reosurce在context.xml中声明,然后在web.xml <resource-ref>中声明。为什么我应该在不同的地方宣布它或者它是同一个声明,我的意思是它等同于context.xml中的声明?

<Resource>中的context.xml一个由servletcontainer定义数据源的创建。它可以被多个webapps使用。 <resource-ref>中的web.xml一个定义了特定webapp的数据源的用法。注意:使用JPA时,您不需要web.xml中的那个。它进入persistence.xml