【问题标题】:How to get Eclipselink samples to work: "student" and "mysports" samples如何让 Eclipselink 示例工作:“student”和“mysports”示例
【发布时间】:2023-03-26 05:50:01
【问题描述】:

我一直在尝试使以下 Eclipselink 示例正常工作,但成功率不到 0%:

一) http://wiki.eclipse.org/EclipseLink/Examples/JPARS/Simple

B) git://git.eclipse.org/gitroot/eclipselink/examples/mysports.git

这两个示例都是最新的,应该“开箱即用”。我的结果: A) 在 glassfish 上启动和部署,但应用程序完全没有响应 B) 不部署,因为 glassfish 没有找到持久性 xml 中提到的数据源:java:global/mysports

我试图获取关于它们应该如何工作的信息,但是在搜索了两天的文档之后,我可以有把握地说:实际上没有任何文档记录。

对于 A)我完全一无所知,没有什么可以为这个示例配置,但是提供的用于与 REST 服务交互的 URL 总是返回 404 并且没有任何日志或错误消息。

对于 B)除了损坏的数据源(我猜是我的错),我尝试设置默认 JDBC 数据源,以查看至少 REST 服务本身是否有效:它看起来死了,打开示例 JSF 时出现异常页面(页面内的引用变量都解析为 NULL)。

有人尝试过实际运行这些示例吗?在远离任何可测试的事物数小时后,我感到非常沮丧......

也许一些问题可以作为起点: - JPA-RS 如何在应用服务器中注册?我怎么知道它是否存在?它映射到哪个 URL? - 这个神奇的“java:global/mysports”数据源是如何工作的? - Maven 配置的行为很有趣,我无法正确调试两个样本中的任何一个(在任何时间点都没有命中断点)。有什么想法吗?

【问题讨论】:

    标签: jpa glassfish eclipselink sample


    【解决方案1】:

    如果您使用早于 Glassfish 4.0 (http://dlc.sun.com.edgesuite.net/glassfish/4.0/promoted/) 的 Glassfish,您需要从 http://www.eclipse.org/eclipselink/downloads/nightly.php (2.4.2 Nightly Build Results) 下载更新版本的 EclipseLink 2.4.2 二进制文件,并替换 $GLASSFISH_HOME/ 下的以下文件glassfish/modules 以及您在上面下载的相应 jar:

    • org.eclipse.persistence.antlr.jar
    • org.eclipse.persistence.jpa.jar
    • org.eclipse.persistence.asm.jar
    • org.eclipse.persistence.jpa.modelgen.jar
    • org.eclipse.persistence.core.jar
    • org.eclipse.persistence.oracle.jar
    • javax.persistence.jar
    • org.eclipse.persistence.dbws.jar
    • org.eclipse.persistence.jpa.jpql.jar

    确保在替换上面列出的捆绑包之后和重新启动 Glassfish 之前,通过删除 $GLASSFISH_HOME\glassfish\domains\your_domain\osgi-cache 目录来清除 Glassfish osgi 缓存。

    【讨论】:

      【解决方案2】:

      这些都是高级示例,除非您正在寻找这些特定功能,否则我建议您从更简单的示例开始。

      这里记录了许多 EclipseLink JPA 示例,

      http://wiki.eclipse.org/EclipseLink/Examples

      这里大部分例子还在SVN中,

      http://dev.eclipse.org/svnroot/rt/org.eclipse.persistence/trunk/examples/

      有关 JPA-RS 示例的文档,请参阅,

      http://wiki.eclipse.org/EclipseLink/Examples/JPA#JPA-RS

      如果您遇到特定问题,请尝试将问题添加到示例的 wiki 讨论页面。

      MySports 示例非常先进。除非您正在寻找可扩展的实体和多租户,否则我不建议您从这个示例开始。

      【讨论】:

      • 谢谢,我会试试那里的wiki。无论如何,我尝试过的样本基本上已经是“简单”版本(学生样本)。 JPA 东西本身适用于每个样本,对我来说并不是很有趣,我正在寻找诸如 RS 部分之类的扩展功能。但我可能不会去做,因为我对缺乏“调试能力”的 atm 感到非常紧张。我只是想了解我的问题并从中吸取教训以备将来使用(并与 JAX-RS 保持一段时间)。
      【解决方案3】:

      要添加到 James 的 cmets,如果您对 JPA-RS 特别感兴趣,也许这些额外的 cmets 会有所帮助。我还建议在 wiki 讨论页面上提问。

      JPA-RS 通过 WEB-INF/lib 目录中的 org.eclipse.persistence.jpars_[version].jar 在应用服务器中注册。这个 jar 包含定义 JPA-RS 服务的 web-fragment.xml。如果以下 URL 模式返回持久性单元元数据,您将知道它是否已部署:

      http://<server>:<port>/<applicationName>/persistence
      

      JPA-RS 的一些附加文档: - http://www.eclipse.org/eclipselink/documentation/2.4/solutions/restful_jpa001.htm - wiki.eclipse.org/EclipseLink/Development/2.4.0/JPA-RS/REST-API

      有助于调试的一件事是查看 Glassfish 服务器日志。如果您在 Eclipse 中运行,请在 Server 视图中右键单击 Glassfish 服务器,转到 Glassfish->View Log File,这将在您的控制台视图中打开服务器日志。这将向您展示部署中发生的情况,并提醒您任何错误。还请务必仔细检查您的网址。

      【讨论】:

      • 感谢您的回复。我尝试尽可能多地调试样本,但有趣的是:既没有错误,也没有任何让我认为 jpa-rs 服务正常工作的东西。对于示例应用程序,我希望看到一些日志或类似的输出(只是为了清楚/学习)。由于没有经过测试的样本有效,我认为这与我的特定设置有关......顺便说一句:每个样本中的 JPA/实体都可以通过 EJB/Entity-Manager 访问(我后来为此目的对其进行了修改)。作为副作用,我认为我现在(在宇宙中)是已知最快的样本部署者:-)。
      【解决方案4】:

      好的,女士们。我的一个朋友有一个绝妙的主意,即强制所有日志记录在 eclipselink-jpars 库上(通过在我们能想到的每个文件中设置这个值),实际上我们发现了一个隐藏在最低日志级别的异常:

      javax.xml.bind.PropertyException: name: eclipselink.json.include-root value: false
      

      不管这意味着什么,但这再次让我相信我暂时不会使用这个特性/lib。在所有日志级别上都应该可见异常,尤其是当我降到 FINE 时(如示例中所述!)!就因为这个,我差点丢了三天。

      【讨论】:

      • EclipseLink JPA-RS 利用 EclipseLink MOXy 作为 JSON 绑定提供程序。 JSON 绑定在 EclipseLink 2.4.0 中添加到 MOXy,但 GlassFish 3.1.2 包含早期版本(因此例外)。您需要将 GlassFish 中的 EclipseLink 版本更新为 2.4.2 或 2.5.0,以下文章将帮助您做到这一点:blog.bdoughan.com/2012/03/…
      • 我在了解异常后打开的另一个主题中添加了对此的评论:stackoverflow.com/questions/15838089/…
      • 感谢发布。它肯定会帮助遇到同样问题的人。好消息是,从 GlassFish 4.0 开始,不再需要额外的配置。
      • 还有一个问题,因为您似乎阅读了 cmets :-):您知道这个神奇的“java:global/mysports”数据源是如何工作的,即使没有在应用服务器上注册?这听起来像是一个更广泛的概念,但除了传统的 jdbc 数据源,我从未使用过其他任何东西。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-22
      • 2015-07-29
      • 2020-12-10
      • 1970-01-01
      相关资源
      最近更新 更多