在 Web 应用程序中引用 jpa persistence.xml 中的 jar 文件的正确路径是什么?

2023-12-12

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(使用前将#替换为@)

在 Web 应用程序中引用 jpa persistence.xml 中的 jar 文件的正确路径是什么? 的相关文章

随机推荐

  • 如何在Smarty中关闭html转义

    我在用html checkboxes用于生成选择菜单 问题是在复选框名称中我有一些 html 代码 而 Smarty 转义了它 I have html checkboxes name select menu values user data
  • 我的按钮在 iPhone 6 和 6 plus 上居中,但在 iPhone 5 上则不然

    我确实打开了自动布局 但由于某种原因 我的中心按钮没有针对其他手机尺寸居中 我设置了约束 就像我提到的自动布局一样 所以我有点困惑 所有其他项目 按钮 其他标签等 都位于其应在的位置 除了 iPhone 6 之外的所有型号 顶部的一个特定标
  • 单元格值更改事件,c#

    我有一个 DataGridView 其中有 3 列 数量 费率和金额 DataGridView 是可编辑的 当我在 费率 列中输入一个值时 应立即更改 金额 中的值 Amount Qty rate 它正在发生 但是当我单击任何其他单元格时
  • C# 中如何在不同线程上运行新表单?

    我只是尝试在每次单击按钮时运行一个新线程 这应该创建一个新表单 我在 MainForm 的按钮单击事件中尝试了此操作 private void button1 Click object sender EventArgs e worker1
  • 为什么 IOS7 中 NSAttributedString 的字距调整失败

    我的应用程序有一个格式化为 NSAttributedString 的 UILabel 属性 NSKernAttributeName 1 9 当下面的代码在运行 IOS6 的 iPad 上编译时 kern 按预期工作 在运行 IOS7 的 i
  • 如何找到整数数组中的最大不重复数?

    假设我有一个未排序的整数数组 3 1 4 5 3 2 5 我想找到最大的非重复数 在本例中为 4 5 是无效的 因为它是重复的 我怎样才能实现这个目标 使用无序映射来计算每个元素的频率 作为一种优化 跟踪遇到的最大元素并跳过低于该元素的元素
  • Struts2:如何存储从操作到操作的安全用户名和密码

    在我的登录页面中 我通过用户名和密码 从 jsp 页面获取 登录 然后检查 LDAP 如果凭据正确 则继续浏览其他页面 我想在某个地方存储用户名和密码 因为在接下来的一些页面中 我可能需要它们来制作其他东西 我想将它们存储在会话中 但我担心
  • 在 TextInput 中写入一个字符后键盘隐藏问题(Flatlist 标题内的文本输入)

    我花了两天时间解决这个问题 问题是 当我将 TextInput 放入 Flatlist 中时 TextInput 的行为已更改 键盘在写入每个字符后失去焦点 版本 反应本机 0 63 2 反应 16 13 1 反应 dom 16 13 1
  • 为什么我不能向下转换指向模板参数中成员的指针?

    如果我创建一个指向基成员的指针 通常可以将其转换为指向派生成员的指针 但在像下面的 Buzz 这样的模板中使用时则不行 其中第一个模板参数影响第二个模板参数 我是否正在与编译器错误作斗争 或者标准是否真的强制要求这不起作用 struct F
  • Java Date 对象显示未来的时间

    我正在当前时间之前的某个时间创建一个新的日期对象 如果我在今天前 1 天展示它 效果很好 但如果我想显示 30 天前 它会转到未来 Date date new Date long sometime 24 60 60 1000 a day S
  • Python-将部分子列表的元素转换为int

    假设您有一个类似的列表 a 1 2 3 b 4 5 6 c 7 8 9 我想将每个子列表的索引 1 到 2 的元素转换为整数 因为您可以看到它们本身就是字符串 是否可以 如果是 那么最短的方法是什么 到目前为止我所做的是 lists a 1
  • 当我在模拟器中启动应用程序时,Xcode 被阻止在“附加到(应用程序名称)”

    我知道有很多帖子都有同样的问题 我花了至少 2 个小时阅读它们 并尝试了我在回复中看到的所有内容 但仍然不起作用 我不知道该怎么办了 有人能帮我吗 我使用 Xcode 4 2 1 这个问题对我来说经常发生 解决方案总是杀死名为的进程Simu
  • 如何从一组输入的数字中获取最大值和最小值?

    以下是我到目前为止所拥有的 我不知道如何排除 0 作为最小数字 分配要求 0 作为退出编号 因此我需要在最小字符串中出现除 0 之外的最小数字 有任何想法吗 int min max Scanner s new Scanner System
  • 如何在 iPhone 应用程序中实现 activesync 协议?

    如何在 iPhone 应用程序中实现 activesync 协议 任何建议 任何文档和教程都很好 我已阅读Exchange ActiveSync 和 iOS 4 设备来自苹果 有这方面的真正文档吗 尽管在评论中提出了问题 但您可能正在寻找E
  • android asynctask 与线程

    我创建了一个 asynctask 并在其 doInBackground 方法中启动了一个如下线程 private class myAsyntask extends Asynctask doInBackground Thread t new
  • 在 SQL Server 中实施审计跟踪的最佳方法?

    我不知道这些要求是否标准 但我想知道是否有一个解决方案可以执行以下操作 对于指定的一组表 在相关表的审核版本中更改记录之前保留记录的副本 我宁愿不必为每个表都编写此代码 我想知道是否有一个可以在 SQL Server 上安装的解决方案来为您
  • 调用没有名称的 Java 方法

    我正在查看下面的代码 发现有些奇怪的东西 public class Sequence Sequence System out print c System out print y public static void main String
  • java - 忽略过期的ssl证书

    URL myUrl new URL https www 网站的 SSL 证书已过期 如何避免它并使 URL 起作用 你应该建立一个TrustManager包装默认的信任管理器 捕获CertificiateExpiredException并忽
  • TensorFlow 无法为张量“Placeholder:0”提供形状 (100, 784) 的值

    我正在学习 TensorFLow 因此 为了了解如何制作某些东西 我尝试从源代码复制一些代码并执行它 但我遇到了错误消息 所以我尝试了这个网站上的一些解决方案 但它不起作用 我将测试保留在评论中 programme 1 import ten
  • 在 Web 应用程序中引用 jpa persistence.xml 中的 jar 文件的正确路径是什么?

    persistence xml 如下所示