gpt4 book ai didi

java - 异常处理程序卡在 tomcat 上

转载 作者:行者123 更新时间:2023-11-28 23:42:17 24 4
gpt4 key购买 nike

我对 tomcat 7、spring 3.1.1 和 windows 7 pro x64 有一个大而奇怪的问题。

当我的 web 应用程序抛出异常并且它由这个自定义 HandlerExceptionResolver 管理时出现问题:

public class JsonHandlerExceptionResolver implements HandlerExceptionResolver {

private static Logger log = Logger.getLogger(JsonHandlerExceptionResolver.class);


@Override
@ResponseBody
public ModelAndView resolveException(HttpServletRequest req, HttpServletResponse response, Object obj, Exception e) {
Output out=new Output(false);
out.setException(e.getClass().getName());
out.setError(e.getLocalizedMessage());
response.setContentType("application/json");
log.error("",e);
try{
response.getWriter().println(new Gson().toJson(new Output(e.getMessage(),e.getClass().getSimpleName())));
response.getWriter().flush();
response.getWriter().close();
}catch (Exception e1) {
log.error(e1);
e1.printStackTrace();
}
return null;
}

}

http 请求挂起,我必须停止 tomcat 才能解锁。在日志文件中我可以看到正确的堆栈跟踪,但它仅在 tomcat 关闭命令后打印(因此我知道 tomcat 确实被挂起)。

奇怪的是,只有当 tomcat 由 C# 应用程序启动(它运行带有适当参数的 javaw 进程)时,这个问题才会出现,如果我尝试通过命令行启动它(使用相同 命令)问题不会发生!请注意,此错误不是系统性的,在许多相同的系统(win7 + tomcat)中它都有效。你知道可以做什么吗?

最佳答案

我的猜测是,如果 C# 正在生成 Tomcat,那么共享 IO 可能存在一些问题,这可以通过检查 StartInfo.RedirectStandardError 属性来验证。

参见 ProcessInfo and RedirectStandardOutput详细解释

干杯

关于java - 异常处理程序卡在 tomcat 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18459520/

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