1

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

A) 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 配置的行为很有趣,我无法正确调试两个样本中的任何一个(在任何时间点都没有遇到断点)。有任何想法吗?

4

4 回答 4

4

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

  • 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 缓存。

于 2013-04-08T14:49:05.103 回答
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 示例非常先进。除非您正在寻找可扩展的实体和多租户,否则我不建议您从这个示例开始。

于 2013-04-02T13:10:04.267 回答
1

为了补充 James 的评论,如果您对 JPA-RS 特别感兴趣,也许这些额外的评论会有所帮助。我还建议在 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,这将在您的控制台视图中打开服务器日志。这将向您展示部署中发生的情况,并提醒您注意任何错误。还请务必仔细检查您的网址。

于 2013-04-02T14:55:41.870 回答
0

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

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

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

于 2013-04-05T13:51:29.597 回答