Expand Authors Top

If you have a few years of experience in the Java ecosystem and you’d like to share that with the community, have a look at our Contribution Guidelines.

Expanded Audience – Frontegg – Security (partner)
announcement - icon User management is very complex, when implemented properly. No surprise here.

Not having to roll all of that out manually, but instead integrating a mature, fully-fledged solution - yeah, that makes a lot of sense.
That's basically what Frontegg is - User Management for your application. It's focused on making your app scalable, secure and enjoyable for your users.
From signup to authentication, it supports simple scenarios all the way to complex and custom application logic.

Have a look:

>> Elegant User Management, Tailor-made for B2B SaaS

Java Automation Job Top
We’re looking for a Backend Java/Spring Developer with Integration Experience: Read More

1. Overview

To simplify the development of REST web services and their clients in Java, a standard and portable implementation of JAX-RS API has been designed which is called Jersey.

Jersey is an open source framework for developing REST web services that provide support for JAX-RS APIs and serves as a JAX-RS reference implementation.

In this tutorial, we'll look at how we can set up a Jersey response body with different media types.

2. Maven Dependencies

First, we need the following dependencies included in the pom.xml file:


The latest version of JAX-RS can be found  at jaxrs-ri, and Jersey server can be found at jersey-server

3. Response in Jersey

Naturally, there are different ways to build a response using Jersey, and we'll look into how we can build them below.

All the examples here are HTTP GET requests, and we'll be using the curl command to test the resources.

3.1. Ok Text Response

The endpoint shown here is a simple example of how plain text can be returned as a Jersey response:

public Response getOkResponse() {

    String message = "This is a text response";

    return Response

We can do an HTTP GET using curl to verify the response:

curl -XGET http://localhost:8080/jersey/response/ok

This endpoint will send back a response as follows:

This is a text response

When the media type isn't specified, Jersey will default to text/plain.

3.2. Error Response

Errors can also be sent back as a Jersey response:

public Response getNOkTextResponse() {

    String message = "There was an internal server error";

    return Response

To verify the response, we can do an HTTP GET request using curl :

curl -XGET http://localhost:8080/jersey/response/not_ok

The error message will be sent back in the response:

There was an internal server error

3.3. Plain Text Response

We can also return simple plain text responses:

public Response getTextResponseTypeDefined() {

    String message = "This is a plain text response";

    return Response

Again, we can do an HTTP GET using curl to verify the response:

curl -XGET http://localhost:8080/jersey/response/text_plain

The response will be as follows:

This is a plain text response

The same outcome could also be achieved via the Produces annotation instead of using the type() method in the Response:

@Produces({ MediaType.TEXT_PLAIN })
public Response getTextResponseTypeAnnotated() {

    String message = "This is a plain text response via annotation";

    return Response

We can do response verification using curl:

curl -XGET http://localhost:8080/jersey/response/text_plain_annotation

Here's the response:

This is a plain text response via annotation

3.4. JSON Response Using POJO

A simple Plain Old Java Object (POJO) can also be used build a Jersey response.

We have a very simple Person POJO shown below, which we'll use to build a response:

public class Person {
    String name;
    String address;

    // standard constructor
    // standard getters and setters

The Person POJO can now be used to return JSON as the Response body:

public Response getPojoResponse() {

    Person person = new Person("Abhinayak", "Nepal");

    return Response

The working of this GET endpoint can be verified – via the following curl command:

curl -XGET http://localhost:8080/jersey/response/pojo

The Person POJO will be transformed into a JSON and sent back as a response:


3.5. JSON Response Using Simple String

We can use preformatted strings to create a response, and it can be done simply.

The following endpoint is an example of how a JSON represented as a String can be sent back as a JSON in the Jersey response:

public Response getJsonResponse() {

    String message = "{\"hello\": \"This is a JSON response\"}";

    return Response

This can be verified by doing an HTTP GET using curl to verify the response:

curl -XGET http://localhost:8080/jersey/response/json

Calling this resource will return a JSON:

{"hello":"This is a JSON response"}

The same pattern applies for other common media types like XML or HTML. We just need to notify Jersey that it's an XML or HTML using MediaType.TEXT_XML or MediaType.TEXT_HTML and Jersey will handle the rest.

4. Conclusion

In this quick article, we constructed Jersey (JAX-RS) responses for a variety of media types.

All of the code snippets, mentioned in the article, can be found in over on GitHub.

REST bottom

Get started with Spring 5 and Spring Boot 2, through the Learn Spring course :

REST footer banner
Comments are closed on this article!