JAX-RS REST @Consumes both XML and JSON Example

Previously we have learnt how to use @Produces annotation, Consuming JSON or Consuming XML separately. We have consumed either xml or json request but not both xml and json in a single method. In this example we will learn how to consume multiple media type which the client is giving as input, lets see how we can achieve it.

Folder Structure

  1. Create a Dynamic Web Project RESTful_Example and create a package for our src files com.javainterviewpoint
  2. Place the required jar files under WEB-INF/Lib 


  3. Create the Java classes ConsumesBothExample.java and Student.java under  com.javainterviewpoint folder.
  4. Place the web.xml  under the WEB-INF directory


The getBothRequest() method is capable of consuming both xml and json request, as we have added both media types to @Consumes annotation

package com.javainterviewpoint;

import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.core.MediaType;

public class ConsumesBothExample 
    public void getBothRequest(Student s)
        System.out.println("****Student Details*****");
        System.out.println("Student Name : "+s.getName());
        System.out.println("Student Age  : "+s.getAge());


We have annotated our Student class with @XmlRootElement marking the root element.

package com.javainterviewpoint;

import javax.xml.bind.annotation.XmlRootElement;

public class Student 
    private String name;
    private int age;
    public Student() {
    public String getName() {
        return name;
    public void setName(String name) {
        this.name = name;
    public int getAge() {
        return age;
    public void setAge(int age) {
        this.age = age;


<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:web="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee%20http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd http://java.sun.com/xml/ns/j2ee%20http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" id="WebApp_ID" version="2.4">
 <display-name>Restful Web Application</display-name>

We register our jersey container “com.sun.jersey.spi.container.servlet.ServletContainer” in the servlet-class of our web.xml and we will mention the source files location as the value to the init param “com.sun.jersey.config.property.packages” so that the container will scan for annotations of the class files within that package.

Output :

XML Request


In the postman client under "Body" tab select "raw" format and select "xml" in dropdown
****Student Details*****
Student Name : JavaInterviewPoint99
Student Age  : 99

JSON Request

In the postman client under "Body" tab select "raw" format and select "json" in dropdown
Consumes_JSON1****Student Details*****
Student Name : JavaInterviewPoint
Student Age : 11

Leave a Reply

Your email address will not be published. Required fields are marked *