RESTEasy找不到MessageBodyWriter - Jackson Configured

时间:2014-06-09 23:08:26

标签: java json jackson tomcat7 resteasy

我最近在Tomcat 7上设置了RESTEasy。我们不使用Maven。我在早期提到这一点,因为我在我的问题中找到的所有答案都建议添加对pom.xml的引用。到目前为止,添加对我的项目的引用并没有解决我的问题(但是,也许我错过了一些东西)。

此时,我只是想重新创建我在网上看到的开箱即用的示例,我应该能够正确地注释POJO,并使用RESTEasy将其作为JSON返回,假设我有我的构建配置正确。我的构建参考:

 - jackson.core.asl
 - jackson.jaxrs
 - jackson.mapper.asl

以及所有必需的RESTEasy罐子。事实上,如果我返回一个Response,我可以成功地从GET中获取我想要的JSON(如我在这里找到的示例中所示:RestEasy: Could not find MessageBodyWriter for response object of type: java.util.ArrayList of media type: application/json)。当然,这根本就不是通过RESTEasy使用杰克逊。

每当我尝试返回任何类型的物体时,我都会得到:

  • 找不到类型为:... application / json
  • 的响应对象的MessageBodyWriter

我不确定我做错了什么,因为我能找到的所有答案都表明我需要做的是确保杰克逊被正确引用 - 从我所能说的是,它是。以下是我的web.xml的相关部分。

<listener>
    <listener-class>
        org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap
    </listener-class>
</listener>

<servlet>
    <servlet-name>Resteasy</servlet-name>
    <servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>
    <init-param>
        <param-name>javax.ws.rs.Application</param-name>
        <param-value>rest_services.RootRestService</param-value>
    </init-param>
</servlet>

<servlet-mapping>
    <servlet-name>Resteasy</servlet-name>
    <url-pattern>/services/*</url-pattern>
</servlet-mapping>

<context-param>
    <param-name>resteasy.scan</param-name>
    <param-value>true</param-value>
</context-param>

<context-param>
    <param-name>resteasy.servlet.mapping.prefix</param-name>
    <param-value>/services</param-value>
</context-param>

这是我的服务方法:

    @GET
    @Path("/getTables")
    @Produces(MediaType.APPLICATION_JSON)
    public List<MyTable> getTables() {
       ...
    }

这是它返回的课程:

   @XmlRootElement
   public final class MyTable {

     ...

   }

编辑:

以下是我添加到类路径中的类(以及其他几个)

classpath

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我从未能让杰克逊工作,但我转而使用Jettison,一切正常。这对我来说已经足够了。