Java 异常处理程序挂起在tomcat上

Java 异常处理程序挂起在tomcat上,java,spring,shell,tomcat,command-line,Java,Spring,Shell,Tomcat,Command Line,我在Tomcat7、Spring3.1.1和Windows7Pro x64上遇到了一个大而奇怪的问题 当my web app引发异常并由此自定义HandlerExceptionResolver管理时,会出现问题: public class JsonHandlerExceptionResolver implements HandlerExceptionResolver { private static Logger log = Logger.getLogger(JsonHandlerEx

我在Tomcat7、Spring3.1.1和Windows7Pro x64上遇到了一个大而奇怪的问题

当my web app引发异常并由此自定义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来解锁它。在日志文件中,我可以看到正确的stacktrace,但它只有在tomcat shutdown命令之后才会被打印出来(因此我知道tomcat确实被挂起了)

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

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

请参阅详细解释


干杯

也许这是你的C#应用程序的问题。也许是的,但为什么cmd可以使用相同的命令?为什么只有在异常事件中,另一个http请求才能正常工作呢!如果C#正在生成Tomcat,那么共享IO可能存在一些问题。只是猜测对不起,这可能是个好主意。。。让我试试我的上帝。c#属性process.StartInfo.RedirectStandardError挂起jvm。请回答我并投票否决我的问题!;-)非常感谢。