【发布时间】:2023-03-17 04:50:01
【问题描述】:
我有一个网络应用程序。无论何时部署它,都会启动一个 servlet。一旦 servlet 启动,它必须将自己注册为外部服务的回调 url 以获取一些通知。注册回调可能只是对外部服务的简单 POST 请求,请求正文中包含回调 url。
我进行了很多搜索,但找不到任何关于如何在 servlet 中构造回调 url 的方法。
例如如果应用程序部署为 protocol://A.B.C.D:XXXX 并且 servlet 路径是 /myservlet 则回调 url 将变为 protocol://A.B.C.D:XXXX/myservlet
我不确定如何在 servlet 代码中获取 IPaddress (A.B.C.D) 和 port number (XXXX)。任何人都可以在这里帮忙吗?
请注意,它应该在 servlet 启动后立即完成,可能在 init() 中,因此我没有 HTTPServletRequest 对象来获取此信息。
【问题讨论】:
-
一个 Servlet 通常不能(也可能不应该)知道它在哪台主机上运行。 IMO,你需要一些外部配置。
-
没有请求,你怎么能得到那个请求的 URL?正如 Sotirios 所说,不可能。
-
注意,如果您想在容器启动后立即运行代码,您应该使用 ServletContextListner,而不是 servlet 的 init 方法。仅当 servlet 被实例化时才会调用该 init。更多信息stackoverflow.com/questions/13819773/…
-
即便如此我将如何获得应用程序部署的机器地址和端口?