Jersey 2.x does not support POJO for json?

While I am trying to convert a java object to a json object using jersey.i, I have an exception.

Java code :-( POJO)

  package org.jersey.media.type;
  import javax.xml.bind.annotation.XmlRootElement;
  @XmlRootElement
  public class MyJaxbBean {
  public String name;
  public int age;

  public MyJaxbBean() {} // JAXB needs this

  public MyJaxbBean(String name, int age) {
    this.name = name;
    this.age = age;
    }
 }

Resource: -

package org.jersey.media.type;
import javax.ws.rs.GET;
import javax.ws.rs.Path; 
import javax.ws.rs.Produces;
@Path("/media")
public class MediaResources {
@GET
@Produces("application/xml")
public MyJaxbBean getMyBean() {
    return new MyJaxbBean("Agamemnon", 32);
 }
}

An exception: -

Sep 05, 2015 4:20:38 PM org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWr   iterInterceptor aroundWriteTo
    SEVERE: MessageBodyWriter not found for media type=application/json,            type=class org.jersey.media.type.MyJaxbBean, genericType=class     org.jersey.media.type.MyJaxbBean.

Deployment Descriptor: -

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<display-name>JerseyAuthentication</display-name>
<servlet>
    <servlet-name>Application</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>jersey.config.server.provider.packages</param-name>
        <param-value>org.jersey.media.type</param-value>
    </init-param>
    <!-- <init-param>
        <param-name>jersey.config.server.provider.classnames</param-name>
        <param-value>org.glassfish.jersey.jackson.JacksonFeature,org.glassfish.jersey.jackson.JacksonBinder</param-value>
    </init-param> -->
</servlet>
<servlet-mapping>
    <servlet-name>Application</servlet-name>
    <url-pattern>/service/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
    <welcome-file>login.html</welcome-file>
</welcome-file-list>
  </web-app>

Dependencies: - enter image description here

I do not use maven, kindly help me solve this problem.

+4
source share
1 answer

Yes, that's why Jersey distribution does not come with JSON / POJO support. You must find them yourself and add them to your project.

JacksonFeature, . , , , . .

  • --JSON--2,17
  • ---2,17
  • -jaxrs-JSON- 2.3.2
  • --2.3.2
  • -DataBind-2.3.2
  • --2.3.2
  • -jaxrs -2.3.2
  • --JAXB--2.3.2

, , Jersey 2.17. , , . . .

Jackson , , Jackson jersey-media-json-jackson. "", , , . .

, 2.21 jersey-media-json-jackson, , Jackson 2.5 +0,4. , 2.5.4 2.3.2, .


Maven, , ,

<dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-json-jackson</artifactId>
    <version>${jersey2.version}</version>
</dependency>

, .

+7

Source: https://habr.com/ru/post/1606049/


All Articles