如何让Eclipselink样本起作用:“student”和“mysports”样本

时间:2013-04-01 17:33:32

标签: jpa glassfish eclipselink sample

我一直试图让以下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如何在appserver中注册?我该怎么判断它是不是?它映射到哪个URL? - 这个神奇的“java:global / mysports”数据源如何工作? - maven配置很有趣,我无法正确调试两个样本中的任何一个(在任何时间点都没有命中断点)。有什么想法吗?

4 个答案:

答案 0 :(得分:4)

如果您使用Glassfish早于Glassfish 4.0(http://dlc.sun.com.edgesuite.net/glassfish/4.0/promoted/),则需要从http://www.eclipse.org/eclipselink/downloads/nightly.php下载更新版本的EclipseLink 2.4.2二进制文件(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缓存。

答案 1 :(得分: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示例非常先进。除非您正在寻找可扩展的实体和多租户,否则我不建议从这个示例开始。

答案 2 :(得分:1)

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

JPA-RS通过WEB-INF / lib目录中存在的org.eclipse.persistence.jpars_ [version] .jar在appserver中注册。这个jar包含web-fragment.xml,它定义了JPA-RS服务。如果以下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-&gt;查看日志文件,它将在控制台视图中打开服务器日志。这将向您显示部署时发生的情况,并将提醒您任何错误。另外请务必仔细检查您的网址。

答案 3 :(得分:0)

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

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

无论那意味着什么,但这再一次让我相信我暂时不会使用这个功能/ lib。应该在所有日志级别上都可以看到异常,特别是如果我下到FINE(如示例中所述!)!因此,我几乎失去了三天。