2017-10-06

JavaEE - wyświetlenie całego URI za pomocą UriInfo

UriInfo (za pomocą którego jest możliwe wyciągnięcie całego URI) można wstrzyknąć za pomocą adnotacji @Context jako pole klasy:
package pl.marceen.test.boundary;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.ejb.Stateless;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.UriInfo;

@Stateless
@Path("test")
public class TestRestReceiver {
    private final static Logger logger = LoggerFactory.getLogger(TestRestReceiver.class);

    @Context
    private UriInfo uriInfo;

    @GET
    @Path("logStatus")
    public String logStatus() {
        logger.info("Path: {}", uriInfo.getAbsolutePath());

        return "OK";
    }
}
Można wstrzyknąć UriInfo również jako atrybut metody:
package pl.marceen.test.boundary;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.ejb.Stateless;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.UriInfo;

@Stateless
@Path("test")
public class TestRestReceiver {
    private final static Logger logger = LoggerFactory.getLogger(TestRestReceiver.class);

    @GET
    @Path("logStatus")
    public String logStatus(@Context UriInfo uriInfo) {
        logger.info("Path: {}", uriInfo.getAbsolutePath());

        return "OK";
    }
}