我遇到问题,我在tomcat上的线程正在进入服务阶段但其中一些从未完成。可能是造成这个问题的原因是什么?这个应用程序正常运行了几个月,但昨天开始发生这种情况。
以下是其中一个出现此问题的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());
}
}
}
}