user4324018
user4324018

Reputation: 33

Jersey declarative linking doesn't work

I try to make a restfull web service with Jersey. I would like to give a link in the response of that request :

GET /mac/ws/gtm HTTP/1.1
Host: localhost:8080
Accept: application/json
Cache-Control: no-cache

I want the response to be :

HTTP/1.1 200 OK
link: </dossiers>;rel=dossiers

{
    "message": "Hello"
}

But the response is :

HTTP/1.1 200 OK

{
    "message": "Hello"
}

The link is not produce !

Look my Gtm Resource :

@Component
@Path("/gtm")
public class GTmRessource
{
    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public GTm getJson()
    {
        GTm gtm = new GTm();
        return gtm;
    }
}

And my Gtm entity

@XmlRootElement()
@Link(value = @Ref(value = "/dossiers", method = "get"), rel = "dossiers")
public class GTm
{
    String message = "Hello";

    public String getMessage()
    {
        return message;
    }

    public void setMessage(String message)
    {
        this.message = message;
    }
}

What's wrong ?

Thanks for help. By

Upvotes: 3

Views: 609

Answers (1)

Paul Samsotha
Paul Samsotha

Reputation: 208964

See Declarative Hyperlinking: Configuration

You need to add the LinkFilter either programmatically:

resourceConfig.getContainerResponseFilters().add(LinkFilter.class);

or through web.xml

<init-param>
  <param-name>com.sun.jersey.spi.container.ContainerResponseFilters</param-name>
  <param-value>com.sun.jersey.server.linking.LinkFilter</param-value>
</init-param>

C:\>curl -i http://localhost:8080/gtm

HTTP/1.1 200 OK
Content-Type: application/json
Link: </dossiers>;rel=dossiers
Date: Thu, 04 Dec 2014 12:38:06 GMT
Transfer-Encoding: chunked

{"message":"Hello"}

Upvotes: 2

Related Questions