【发布时间】:2013-12-09 11:05:15
【问题描述】:
从我的 JAX-RS (Jersey) 资源中,我需要获取 Jersey Servlet 的基本 URL,即“发布”该资源。我尝试按照here 的描述注入ServletContext,然后执行以下操作:
return servletContext.getResource("/").toString();
获取该资源的 Jersey Servlet 的“基本”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>
也就是说,有四个“区别”:(a) 协议,(b) 协议后面的单斜杠而不是双斜杠,(c) 端口号和 (d) 缺少用于触发 Jersey servlet 的 URL 模式。那么,我如何获得:
- Jersey servlet 的基本
http://URL - 触发特定
@GET或@POST注释方法的完整URL?
【问题讨论】: