persistence.xml 如下所示:
<persistence-unit name="testPU" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<non-jta-data-source>jdbc/test</non-jta-data-source>
<jar-file>../../lib/app-services-1.0.jar</jar-file>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
</persistence-unit>
它是一个Web项目,因此部署单元是一个war文件。
我试图引用的 jar 文件位于WEB-INF/lib/文件夹 ,持久性.xml is in WEB-INF/类/META-INF文件夹。部署时,它只是告诉我
“警告:无法找到文件(忽略):文件:.../../lib/app-services-1.0.jar”。
我也尝试了我能想到的所有可能的路径,即../lib/app-services-1.0.jar, lib/app-services-1.0.jar.
这样做的正确途径是什么?
看看jsr总是有效的!
8.2.1.6.3 Jar 文件
可以使用以下命令指定一个或多个 JAR 文件jar-file
元素代替或补充中指定的映射文件mapping-file
元素。如果指定,将在这些 JAR 文件中搜索托管持久性类,并且将处理在它们上找到的任何映射元数据注释,或者将使用本规范定义的映射注释默认值来映射它们。
此类 JAR 文件是相对于包含持久性单元根的目录或 jar 文件指定的。
下面的例子说明了使用jar-file
元素来引用其他持久性类。这些示例使用的约定是,名称以“PUnit”结尾的 jar 文件包含persistence.xml
文件,并且名称以“Entities”结尾的 jar 文件包含其他持久性类。
Example 1:
app.ear
lib/earEntities.jar
earRootPUnit.jar (with META-INF/persistence.xml )
persistence.xml contains:
<jar-file>lib/earEntities.jar</jar-file>
Example 2:
app.ear
lib/earEntities.jar
lib/earLibPUnit.jar (with META-INF/persistence.xml )
persistence.xml contains:
<jar-file>earEntities.jar</jar-file>
Example 3:
app.ear
lib/earEntities.jar
ejbjar.jar (with META-INF/persistence.xml )
persistence.xml contains:
<jar-file>lib/earEntities.jar</jar-file>
Example 4:
app.ear
war1.war
WEB-INF/lib/warEntities.jar
WEB-INF/lib/warPUnit.jar (with META-INF/persistence.xml )
persistence.xml contains:
<jar-file>warEntities.jar</jar-file>
Example 5:
app.ear
war2.war
WEB-INF/lib/warEntities.jar
WEB-INF/classes/META-INF/persistence.xml
persistence.xml contains:
<jar-file>lib/warEntities.jar</jar-file>
Example 6:
app.ear
lib/earEntities.jar
war2.war
WEB-INF/classes/META-INF/persistence.xml
persistence.xml contains:
<jar-file>../../lib/earEntities.jar</jar-file>
Example 7:
app.ear
lib/earEntities.jar
war1.war
WEB-INF/lib/warPUnit.jar (with META-INF/persistence.xml )
persistence.xml contains:
<jar-file>../../../lib/earEntities.jar</jar-file>
正如您所看到的,没有 war 文件的示例,上面示例中的所有 war 文件都位于 Ear 文件内!
但是我在war文件中进行了测试,只有当我指定jar文件的绝对路径时它才有效,这对于生产环境来说不是一个好方法!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)