首页 文章

RESTEasy找不到MessageBodyWriter - Jackson Configured

提问于
浏览
0

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

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

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

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

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

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

我不确定我做错了什么,因为我能找到的所有答案都表明我需要做的就是确保 Jackson 被正确引用 - 从我所能说的是,它是 . 以下是我的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 {

     ...

   }

EDIT :

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

classpath

任何帮助是极大的赞赏 .

1 回答

  • 0

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

相关问题