【发布时间】:2013-08-28 10:00:26
【问题描述】:
我有一个 servlet,它的 init 方法必须对其自身进行一些 HTTP 调用。这是因为我使用的是嵌入式应用程序,它启动并且它的主界面是一个 RESTful API。我不能也不想使用内部类,因为它们没有文档记录且难以使用。所以我更喜欢通过本地 HTTP 使用 REST API。
因此,我扩展了应用程序附带的 servlet,并修改了 init 方法,以便它启动一个线程并对自身进行一些 HTTP 调用。目前我硬连线“http://localhost:port/servlet/mapping/”作为路径,但我想要一些动态的东西,至少可以检测到端口号和映射。
有什么体面的方法可以做到这一点吗?我发现了很多从 HttpServletRequest 对象中提取该信息的示例,但是在 init 方法中您没有它。你只有ServletContext。
啊,对了,我用的是servlet API 3.0。
【问题讨论】:
-
对自身进行 HTTP 调用到底是什么意思? servlet 容器在其
init()方法完成之前不会使 servlet 可用于 HTTP 调用 -
如果您仔细阅读,我写道“所以我启动了一个执行 HTTP 调用的线程”。 init 方法将在启动线程后终止,线程将继续执行请求。