泽西岛资源没有产出

时间:2014-12-09 00:49:07

标签: java xml scala jax-rs jersey-2.0

我有一个资源:

 @GET
  @Path("/{v1}")
  @Produces(Array(MediaType.APPLICATION_XML))
  def asyncGet(@Suspended asyncResponse: AsyncResponse, @PathParam("v1") v1: Int): Unit = {...}

在它的主体中它以Result对象(asyncResponse.resume(resultObject))异步响应,该对象被声明为

@XmlRootElement
case class Result(res: Double)

在我的pom中,我有下一个依赖项:

javax.ws.rs:javax.ws.rs-api:2.0
org.glassfish.jersey.containers:jersey-container-grizzly2-http:2.13

这些是与网络或休息有关的唯一依赖项。 当我对我的资源执行请求时,我得到Internal server error响应(并且没有在服务器端记录任何内容),但是在编组参数之前,资源的逻辑一切正常。

我怀疑在选择marshaller时会出现问题,因为当我设置资源以使用对象的字符串表示进行响应时(通过toString方法),它可以正常工作。

1 个答案:

答案 0 :(得分:0)

问题在于

@XmlRootElement
case class Result(res: Double)

JAXB需要no-arg构造函数才能正常运行(并且在调试时我得到异常,表明但是其他客户端得到的异常与此问题无关)。所以这个类的正确版本是

    @XmlRootElement
    case class Result(res: Double) {
      def this() = this(0)
    }