我想在运行于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中的声明?
现在,我想在JPA中使用这种连接池。 我怎样才能做到这一点?
假设你已经宣布通过连接池数据源创建<Resource>的context.xml,那么你只需要声明的JPA数据源使用在webapp的/META- INF/persistence.xml。
<Resource>
context.xml
/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?
web.xml
<resource- ref>
其中<Resource>一个定义了context.xmlservlet容器对数据源的 创建 。可以由多个Web应用程序使用。在<resource-ref>一个在web.xmldefinies中 使用 的数据源的由特定的Web应用程序。注意:使用JPA时,您不需要中的一个web.xml。它进入persistence.xml。
<resource-ref>
persistence.xml