0

我有一个 servlet,它的 init 方法必须对其自身进行一些 HTTP 调用。这是因为我使用的是嵌入式应用程序,它启动并且它的主界面是一个 RESTful API。我不能也不想使用内部类,因为它们没有文档记录且难以使用。所以我更喜欢通过本地 HTTP 使用 REST API。

因此,我扩展了应用程序附带的 servlet,并修改了 init 方法,以便它启动一个线程并对自身进行一些 HTTP 调用。目前我硬连线“ http://localhost:port/servlet/mapping/”作为路径,但我想要一些动态的东西,至少可以检测到端口号和映射。

有什么体面的方法可以做到这一点吗?我发现了很多从HttpServletRequest对象中提取信息的例子,但是在 init 方法中你没有它。你所拥有的只是ServletContext.

啊,对了,我用的是servlet API 3.0。

4

1 回答 1

0

In servlets 3 you can do this to get current mappings for a given servlet:

String servletName = servletConfig.getServletName();
ServletRegistration reg = servletConfig.getServletContext().getServletRegistration(servletName);
for(String mapping: reg.getMappings()) {
    // Do something with the mapping
}

About the port number, given the fact that a servlet container can be "listening" on more than one port, there is no standard way you can know the port number even if there is only one.

于 2013-08-28T10:36:51.137 回答