我最近在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 :
以下是我添加到类路径中的类(以及其他一些类)
:
任何帮助是极大的赞赏 .
1 回答
我从未能让 Jackson 工作,但我转而使用Jettison,一切正常 . 这对我来说已经足够了 .