Tomcat线程永远运行

时间:2016-11-10 02:20:43

标签: java tomcat tomcat8

我遇到问题,我在tomcat上的线程正在进入服务阶段但其中一些从未完成。可能是造成这个问题的原因是什么?这个应用程序正常运行了几个月,但昨天开始发生这种情况。

A IMAGE FROM TOMCAT MANAGER THREADS

以下是其中一个出现此问题的servlet。但是这可能发生在其中任何一个,我认为它是由于基础设施问题或tomcat或java配置而发生的,但我不确定。

private static final long serialVersionUID = 1L;

@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    Connection conMysqlServidor = null;
    Connection conMysqlOperador = null;
    try {

        FornecedorDoPedido fornecedor = (FornecedorDoPedido) request.getSession().getAttribute("fornecedor");


        Operador operador = new OperadorDao().buscarDadosConexaoOperador(fornecedor.getCodOperadorDoPedido());

        conMysqlOperador = new ConnectionFactory().getConnectionMysqlOperador(operador, "database");
        conMysqlOperador.setAutoCommit(false);
        conMysqlServidor = new ConnectionFactory().getConnectionMysqlServidor();
        conMysqlServidor.setAutoCommit(false);
        response.setContentType("application/json");
        JSONArray ofertasJson = new JSONArray(request.getParameter("json"));

        if(validaOfertas(ofertasJson, fornecedor.getCodPedido(), conMysqlOperador) && validaPedido(conMysqlOperador, fornecedor.getCodPedido())) {
            for(int i=0;i<ofertasJson.length();i++) {
                JSONObject ofertaJson = ofertasJson.getJSONObject(i);

                if(!ofertaJson.getString("oferta").replace(".", "").replace(",", ".").isEmpty() && !ofertaJson.getString("oferta").equals("0,00")) {
                    adicionarOferta(fornecedor, ofertaJson, conMysqlOperador);
                }

            }

            atualizaPodeOfertar(fornecedor, conMysqlServidor);


            conMysqlOperador.commit();
            conMysqlServidor.commit();

            response.getWriter().write(ControleJsonRetorno.criarEscopoJsonOk().toString());
        }else {
            JSONObject retorno = ControleJsonRetorno.criarEscopoJsonFalha();
            JSONObject falha = new JSONObject();
            falha.put("mensagem", "Ofertas inválidas!");
            retorno.getJSONObject("sucesso").getJSONArray("falhas").put(falha);
            response.getWriter().write(retorno.toString());
        }

    }catch(OfertaInvalidaException ofertaInvalidaException) {//TRATA OFERTA INVÁLIDA
        System.err.println(ofertaInvalidaException.getMessage());
        JSONObject retornoFalhoJson = ControleJsonRetorno.criarEscopoJsonFalha();
        JSONObject falhaJson = new JSONObject();
        falhaJson.put("mensagem", ofertaInvalidaException.getMessage());
        falhaJson.put("tipo", "ofertaInvalida");
        falhaJson.put("item", ofertaInvalidaException.getnInternoItem());
        //ADICIONADO 27/09/2016 TODO
        falhaJson.put("codigoBarra", ofertaInvalidaException.getCodigoBarra());
        falhaJson.put("descricao", ofertaInvalidaException.getDescricao());
        //
        falhaJson.put("oferta", ofertaInvalidaException.getValorOferta());
        retornoFalhoJson.getJSONObject("sucesso").getJSONArray("falhas").put(falhaJson);
        response.getWriter().write(retornoFalhoJson.toString());
    }
    catch(Exception e) {
        e.printStackTrace();
        response.getWriter().write(ControleJsonRetorno.criarEscopoJsonErro().toString());
    }finally {
        try {
            conMysqlOperador.close();
        }catch(Exception e) {
            System.err.println("Erro no fechamento da conexão com banco de dados do cliente em " + this.getClass());
        }
        try {
            conMysqlServidor.close();
        }catch(Exception e) {
            System.err.println("Erro no fechamento da conexão com banco de dados do servidor em " + this.getClass());
        }
    }

}

}

0 个答案:

没有答案