【问题标题】:Jersey-based REST service at Google App Engine - how do I set up my project?Google App Engine 上基于 Jersey 的 REST 服务 - 如何设置我的项目?
【发布时间】:2013-02-08 09:42:56
【问题描述】:

有没有人通过 POJO 映射到 JSON 让 Jersey 在 Google AppEngine 工作? 我现在已经花了几个小时来让这个工作,但我被困在 两个地方。在 Jetty 本地运行我比在 AppEngine,但我还没有。这是我遇到的两个问题 相遇:

本地

Jetty 产生以下错误:

SEVERE: A message body writer for Java class
nilsnett.chinese.backend.BusinessObject, and Java type class
nilsnett.chinese.backend.BusinessObject, and MIME media type
application/json was not found

nilsnett.chinese.backend.BusinessObject 是我创建的一个普通 Java 类 看起来像这样:

package nilsnett.chinese.backend;
import javax.xml.bind.annotation.XmlRootElement;
public class BusinessObject {
    public String text;
    public int value;
}

这里有什么问题?

在 AppEngine

Uncaught exception from servlet java.lang.IncompatibleClassChangeError

现在我在本地也遇到了这个错误,这与我在 两者都引用了泽西所依赖的asm-3.3.1.jar,以及本地的asm-4.0.jar, which AppEngine depends on. If I _only_ referencedasm-4.0.jar`,我 会在这里得到同样的错误。引用两者显然效果不佳 在 AppEngine。我该如何解决这个问题?

更多数据

  • 本地错误的完整 Jetty 日志here
  • 来自 AppEngine here 的完整异常日志
  • My web.xml

SDK 引用:

  • AppEngine v1.7.4
  • Java SE 1.6

引用的与泽西岛相关的罐子:

  • Jersey-bundle-1.17.jar
  • Asm-3.3.1.jar
  • Jettison-1.1jar

我正在 Windows 8 上的 Eclipse Juno 中进行开发。

【问题讨论】:

    标签: eclipse google-app-engine jersey


    【解决方案1】:

    您正在导入 XmlRootElement 注释,但没有使用它。你应该在课堂前添加@XmlRootElement

    关于第二个问题 - 你看过: java.lang.IncompatibleClassChangeError: Implementing class deploying to app engine?

    【讨论】:

    • 第一个问题:对@XmlRootElement 没有帮助(并且没有必要)。第二个问题:解决了问题-谢谢!至少我现在可以部署并使用 Gson 绕过 Json 序列化。
    【解决方案2】:

    本地的第一个问题是由于缺少 .jar 文件。我误读了Jersey documentation,并认为我只需要11.1 Core Server11.4.3 JSON 章节下列出的文件:

    • jettison-1.1.jar
    • jersey-bundle-1.17.jar
    • asm-3.3.1.jar

    原来我还需要JAXB 下列出的罐子:

    • jackson-core-asl.jar
    • jackson-mapper-asl.jar
    • jackson-jaxrs.jar
    • jettison.jar
    • jaxb-impl.jar
    • jaxb-api.jar
    • activation.jar
    • stax-api.jar

    我被这样一个事实所愚弄,即在 Glassfish 中运行时没有引用最后一个 jar 的设置有效,但这是因为 jar 与 Glassfish 捆绑在一起。码头不是这样。

    【讨论】:

      猜你喜欢
      • 2012-08-27
      • 1970-01-01
      • 2017-11-12
      • 1970-01-01
      • 1970-01-01
      • 2011-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多