gpt4 book ai didi

java - 找不到 WebApplicationContext : not in a DispatcherServlet request

转载 作者:行者123 更新时间:2023-12-04 14:42:00 24 4
gpt4 key购买 nike

我有一个 Spring 应用程序。出于某些原因,我有一个标准的 servlet,我需要该 servlet 才能访问一些 spring bean(我知道这并不理想,将来我会寻找更好的东西)。

在 Web.xml 中

<servlet>
<servlet-name>mvc-dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
<async-supported>true</async-supported>
</servlet>

<servlet-mapping>
<servlet-name>mvc-dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

<servlet>
<description>Tunnel servlet.</description>
<servlet-name>Tunnel</servlet-name>
<servlet-class>
com.something.GuacamoleController
</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>Tunnel</servlet-name>
<url-pattern>/path</url-pattern>
</servlet-mapping>

和 GuacamoleController

public class GuacamoleController extends GuacamoleHTTPTunnelServlet {

@Override
protected GuacamoleTunnel doConnect(HttpServletRequest request)
throws GuacamoleException {

WebApplicationContext webApplicationContext = RequestContextUtils.getWebApplicationContext(request);

[...]
}
}

但是它抛出了这个错误:

java.lang.IllegalStateException: No WebApplicationContext found: not in a DispatcherServlet request?

如何使这种情况成为 DispatcherServlet 请求?

我需要 Web 应用程序上下文,以便我可以使用 getBean 方法手动访问服务实例

最佳答案

您不在 DispatcherServlet 的上下文中,而是在您自己的 Servlet 实现中滚动。

可能处于ContextLoaderListener 的上下文中。使用

WebApplicationContext webApplicationContext = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getServletContext());

获取由 ContextLoaderListener 加载的 WebApplicationContext。如果不存在,该方法将抛出异常。

关于java - 找不到 WebApplicationContext : not in a DispatcherServlet request,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26598914/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com