Jersey 从JAX-RS资源内部获取HTTP URL
从我的JAX-RS(Jersey)资源中,我需要获得JerseyJersey 从JAX-RS资源内部获取HTTP URL,jersey,tomcat7,jax-rs,Jersey,Tomcat7,Jax Rs,从我的JAX-RS(Jersey)资源中,我需要获得JerseyServlet的基本URL,该Servlet“发布”了该资源。我尝试按所述注入ServletContext,然后执行以下操作: return servletContext.getResource("/").toString(); 获取此资源的JerseyServlet的“基本”URL 但是,上面的代码返回如下值: jndi:/localhost/jax-rs-tomcat-test/ 在那里我期待着更像: http://loca
Servlet的基本URL,该Servlet“发布”了该资源。我尝试按所述注入ServletContext
,然后执行以下操作:
return servletContext.getResource("/").toString();
获取此资源的JerseyServlet
的“基本”URL
但是,上面的代码返回如下值:
jndi:/localhost/jax-rs-tomcat-test/
在那里我期待着更像:
http://localhost:8080/jax-rs-tomcat-test/jax-rs
其中“jax-rs
”是我在web.xml中的内容:
<servlet-mapping>
<servlet-name>jersey-servlet</servlet-name>
<url-pattern>/jax-rs/*</url-pattern>
</servlet-mapping>
泽西servlet
/jax-rs/*
也就是说,有四个“区别”:(a)协议,(b)协议后面是单斜杠而不是双斜杠,(c)端口号,(d)缺少用于触发Jersey servlet的URL模式。那么,我如何获得:
Jersey servlet的基本http://
URL
触发特定@GET
或@POST
注释方法的完整URL李>
你在找我。使用@Context
将其注入资源:
@Context
private UriInfo uriInfo;
然后可以调用getBaseUri()
方法:
uriInfo.getBaseUri();