我试图搜索 JPA 数据源存储位置的默认设置以及如何指定特定位置,但没有找到任何东西。
我发现在 Tomcat 下,数据库保存在一个目录中,其中数据源的名称位于 Tomcat 目录的 bin/ 中,这让我感到困惑有两个原因:
- 因为数据库不是可执行文件,不应驻留在 bin/
- 因为所有 webapps 共享相同的 bin/ 目录,所以两个具有相同名称但属于两个不同 webapps 的数据源会发生冲突。
如果我理解正确,数据源代表实际的 JPA 底层数据库,而持久性单元将存储在数据源中的实体组合在一起。所以我应该寻找数据源的属性而不是持久性单元的属性。
==编辑==
到目前为止,我已经在 persistence.xml 中声明了一个持久性单元名称,我已经在 META-INF/context.xml 中添加了这个持久性单元的配置,其中包含以下内容
<Context path="/exampleWeb">
<ResourceLink global="ds/exampleDS" name="ds/exampleDS" type="javax.sql.DataSource"/>
</Context>
我认为要使用的数据库类型取决于我拥有的库,唯一可用的是eclipselink-2.4.1.jar。
在 web.xml 里面我有:
<resource-ref>
<description>DB Connection</description>
<res-ref-name>ds/exampleDS</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
==编辑 2==
在Tomcat的server.xml里面我有
<Resource
auth="Container"
driverClassName="org.apache.derby.jdbc.EmbeddedDriver"
maxActive="20"
maxIdle="10"
maxWait="-1"
name="ds/exampleDS"
type="javax.sql.DataSource"
url="jdbc:derby:exampleDB;create=true"
/>