一尘不染

在JPA中使用tomcat的连接池

tomcat

我想在运行于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中的声明?


阅读 348

收藏
2020-06-16

共1个答案

一尘不染

现在,我想在JPA中使用这种连接池。 我怎样才能做到这一点?

假设你已经宣布通过连接池数据源创建<Resource>context.xml,那么你只需要声明的JPA数据源使用在webapp的/META- INF/persistence.xml

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

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

其中<Resource>一个定义了context.xmlservlet容器对数据源的 创建
。可以由多个Web应用程序使用。在<resource-ref>一个在web.xmldefinies中 使用
的数据源的由特定的Web应用程序。注意:使用JPA时,您不需要中的一个web.xml。它进入persistence.xml

2020-06-16