如何查找我的 Web 服务的 URL?

2022-09-04 02:44:47

我知道这似乎是一个愚蠢的问题,但我只是无法找到有关此问题的任何信息。我有一个java Web服务(使用NetBeans生成),在Web服务类中,我想知道部署Web服务的URL。例如,如果我在本地 glassFish 服务器上部署 Web 服务,则 Web 服务在“http://localhost:8080/MyService/”处可用,其中“MyService”是我的服务名称。我需要知道这个URL的原因是因为我的Web服务生成了一些文件,我需要在此URL上提供这些文件。例如,Web服务调用返回一个URL“http://localhost:8080/MyService/report.html”我找到了一些关于“WebServiceContext”的链接,但我无法获得运行Web服务的URL。

编辑

澄清:在MyWebService.java类中,我想找出部署我的Web服务的URL(在这种情况下,我的Web服务以“http://localhost:8080/MyService/”运行,但是一旦将其部署在生产服务器上,此URL将更改)


答案 1

在我看来更容易,例如:

@GET
public URI redirectSendMail(@Context UriInfo ui) {
  return ui.getBaseUri();
}

如果我们想将一个 String 发送回客户端,指示某些资源的确切路径,我们可能需要类似这样的东西。

@GET
public String getResourcePath(@Context UriInfo ui) {
  return ui.getAbsolutePath();
}

答案 2

如果您询问如何查找 servlet 容器正在侦听的主机名(例如“localhost”或“www.example.com”),您有几种选择:

  • 添加在部署时设置的配置点(例如配置文件、系统属性)
  • 查看您的 servlet 容器是否通过 JMX 公开任何“虚拟主机”配置或读取其配置文件(例如 tomcat 主机))
  • 查找服务器的 IP 地址并执行 DNS 查找以获取其配置的主机名
  • 检查传入 HttpServletRequest 的“主机”标头

    String hostname = request.getRequestHeader("Host");