Undertow:使用现有的 Servlet 实例
Undertow: Using existing Servlet instance
我正在尝试用 Undertow 替换现有应用程序中的嵌入式 Web 服务器,因为旧的在某些情况下无法正常工作。
嵌入式网络服务器用于为一些简单的 servlet 提供服务。我的主要问题是我找不到在 Undertow 中注册现有 HttpServlet
实例的方法。
我能找到的所有 API 方法只接受 Class<? extends Servlet>
。此外,servlet tutorials 和其他人仅使用 Class<? extends Servlet>
来注册 servlet。
但是我的 Servlet 已经存在,我需要直接使用它们,因为每个 servlet 都已经配置了某些参数,因此不能仅通过提供 class 名称来创建。
是否有任何方法可以使用 class 的现有实例直接在 Undertow 中实现 javax.servlet.Servlet
或者 Undertow 不能用于这种情况?
可以使用 Servlet.servlet(String, Class<? extends Servlet>, InstanceFactory<? extends Servlet> servlet)
:
方法在 Undertow 中使用现有的 Servlet
实例
Servlet myServletInstance = ...
Servlets.servlet("MessageServlet", MessageServlet.class,
new ImmediateInstanceFactory<Servlet>(myServletInstance))
.addMapping("/*")
在这种情况下,class 参数被忽略,而不是通过 Undertow 内部的构造函数创建新实例,而是使用提供的 servlet 实例。
我正在尝试用 Undertow 替换现有应用程序中的嵌入式 Web 服务器,因为旧的在某些情况下无法正常工作。
嵌入式网络服务器用于为一些简单的 servlet 提供服务。我的主要问题是我找不到在 Undertow 中注册现有 HttpServlet
实例的方法。
我能找到的所有 API 方法只接受 Class<? extends Servlet>
。此外,servlet tutorials 和其他人仅使用 Class<? extends Servlet>
来注册 servlet。
但是我的 Servlet 已经存在,我需要直接使用它们,因为每个 servlet 都已经配置了某些参数,因此不能仅通过提供 class 名称来创建。
是否有任何方法可以使用 class 的现有实例直接在 Undertow 中实现 javax.servlet.Servlet
或者 Undertow 不能用于这种情况?
可以使用 Servlet.servlet(String, Class<? extends Servlet>, InstanceFactory<? extends Servlet> servlet)
:
Servlet
实例
Servlet myServletInstance = ...
Servlets.servlet("MessageServlet", MessageServlet.class,
new ImmediateInstanceFactory<Servlet>(myServletInstance))
.addMapping("/*")
在这种情况下,class 参数被忽略,而不是通过 Undertow 内部的构造函数创建新实例,而是使用提供的 servlet 实例。