gpt4 book ai didi

jersey - 从 JAX-RS 资源内部获取 HTTP URL

转载 作者:行者123 更新时间:2023-12-02 04:42:27 27 4
gpt4 key购买 nike

从我的 JAX-RS (Jersey) 资源内部,我需要获取用于“发布”该资源的 Jersey Servlet 的基本 URL。我尝试按照描述注入(inject) ServletContext here ,然后执行:

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) 协议(protocol)、(b) 协议(protocol)后面的单斜杠而不是双斜杠、(c) 端口号和 (d) 缺少用于触发 Jersey servlet 的 URL 模式。那么,我如何获得:

  1. Jersey servlet 的基本 http:// URL
  2. 触发特定 @GET@POST 带注释方法的完整 URL?

最佳答案

您正在寻找UriInfo 。使用 @Context 将其注入(inject)到您的资源中:

@Context
private UriInfo uriInfo;

然后你可以调用getBaseUri()方法:

uriInfo.getBaseUri();

关于jersey - 从 JAX-RS 资源内部获取 HTTP URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20180923/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com