使用jax-rs调用resteasy服务使报错

发布于 2021-11-28 09:44:26 字数 6076 浏览 807 评论 2

使用jax-rs调用resteasy服务使报错如下:

有遇到过相同问题的吗?

org.jboss.resteasy.spi.ReaderException: org.codehaus.jackson.map.exc.UnrecognizedPropertyException: Unrecognized field "user" (Class com.dtd365.domain.User), not marked as ignorable
 at [Source: org.apache.catalina.connector.CoyoteInputStream@1bdc246f; line: 1, column: 10] (through reference chain: com.dtd365.domain.User["user"])
    at org.jboss.resteasy.core.MessageBodyParameterInjector.inject(MessageBodyParameterInjector.java:183)
    at org.jboss.resteasy.core.MethodInjectorImpl.injectArguments(MethodInjectorImpl.java:89)
    at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:112)
    at org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTarget(ResourceMethodInvoker.java:296)
    at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:250)
    at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:237)
    at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:356)
    at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:179)
    at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:220)
    at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:56)
    at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:51)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:957)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:620)
    at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2516)
    at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2505)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)



@Controller
public class HelloWorldController {
    private static String REST_SERVICE_URL = "http://localhost:8080/mplus-rest/book";

    public static void main(String[] args) {
        /*
         * User user = new User(11, "11", "11", "11", "11", "11", 1);
         * user.setCreateDate(new Date()); TestUser tUser=new
         * TestUser(123,"chushiyun");
         */
        Book book = new Book();
        book.setId(123);
        book.setPrice(1);
        book.setPublished(new Date());
        book.setTitle("jcodjfop");
        Client client = ClientBuilder.newClient();
        client
                .target(REST_SERVICE_URL)
                .request()
                .post(Entity.entity(book, MediaType.APPLICATION_JSON));

这是调用的代码片段;


@Component
@Path("/book")
public class BookRest {
    @POST
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    public Response saveBook(final Book book) {
        System.out.println(book);
        Book b=new Book();
        return Response.ok(b).build();
    }
}

这是resteasy服务;

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

自此以后,行同陌路 2021-11-30 18:00:17

当我把MediaType给我XML时服务端可以正常映射为Book对象,但是返回值只能是json或xml格式,无法映射为Book对象;

Client client = ClientBuilder.newClient();

        client

                .target(REST_SERVICE_URL)

                .request()

                .post(Entity.entity(book, MediaType.APPLICATION_XML)).readEntity(String.class);

倾城泪 2021-11-30 13:08:08

当我把参数改为String类型时,接收到的参数为:

{"book":{"id":123,"title":"jcodjfop","price":1,"published":"2015-08-12T16:35:33.993+08:00"}}

不知道为什么为把book添加到json对象里,从而导致以上错误

@POST
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    public Response saveBook(String book) {
        System.out.println(book);
        Book b=new Book();
        return Response.ok(b).build();
    }

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文