Java 21 and RMI. Tomcat 10.1.
I want to get the client IP that is consuming my JAX-RS resource.
Here is my code:
Path("/")
public class RequestHandlerWebSession
extends AMWebServiceHandler
{
private final CWebSessionController controller;
/**
* @throws Exception
*/
public RequestHandlerWebSession() throws Exception
{
super("RequestHandlerWebSession");
this.controller = CWebSessionController.getInstance();
}
@GET
@Path("/systime")
@Produces({MediaType.APPLICATION_JSON})
public Response systime()
{
String methode = "systime()";
try
{
// do something
return Response.ok(jsonString, MediaType.APPLICATION_JSON)
.build();
}
catch (Exception ex)
{
return createErrorResponse(ex, methode, new SystimeResponse());
}
}
I tried this:
Path("/")
public class RequestHandlerWebSession
extends AMWebServiceHandler
{
private final CWebSessionController controller;
** @Context
private HttpServletRequest httpRequest;**
@GET
@Path("/systime")
@Produces({MediaType.APPLICATION_JSON})
public Response systime()
{
String methode = "systime()";
try
{
** String ipAddress = httpRequest.getRemoteAddr();**
return Response.ok(jsonString, MediaType.APPLICATION_JSON)
.build();
}
catch (Exception ex)
{
return createErrorResponse(ex, methode, new SystimeResponse());
}
}
But I'm getting 500 Error:
jakarta.servlet.ServletException: jakarta.enterprise.inject.InjectionException: Exception occurred during Jersey/JAX-RS annotations processing in the class: class de.maris.mweb.handler.RequestHandlerWebSession
org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:409)
org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:346)
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:357)
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:311)
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
org.apache.catalina.filters.CorsFilter.handleNonCORS(CorsFilter.java:331)
org.apache.catalina.filters.CorsFilter.doFilter(CorsFilter.java:158)
Root Cause
jakarta.enterprise.inject.InjectionException: Exception occurred during Jersey/JAX-RS annotations processing in the class: class de.maris.mweb.handler.RequestHandlerWebSession
I also tried @Inject instead of @Context, but that gives me CORS Violation Error. I didnt have any CORS error before adding the HttpServletRequest.
Any idea how to solve this?