java.lang. NullPointerException в JSP с SQL Server

Я разрабатываю поле ввода власти, где я сделал следующую хранившуюся процедуру:

CREATE PROCEDURE sp_reporteSemana @FECHA DATE
AS

DECLARE @INICIO_SEMANA AS DATE
DECLARE @MARTES AS DATE
DECLARE @MIERCOLES AS DATE
DECLARE @JUEVES AS DATE
DECLARE @VIERNES AS DATE
DECLARE @SABADO AS DATE
DECLARE @FIN_SEMANA AS DATE

SET @INICIO_SEMANA = CAST(DATEADD(wk, DATEDIFF(wk, 0, @FECHA), 0) AS DATE)
SET @MARTES = DATEADD(DAY, 1, @INICIO_SEMANA)
SET @MIERCOLES = DATEADD(DAY, 2, @INICIO_SEMANA)
SET @JUEVES = DATEADD(DAY, 3, @INICIO_SEMANA)
SET @VIERNES = DATEADD(DAY, 4, @INICIO_SEMANA)
SET @SABADO = DATEADD(DAY, 5, @INICIO_SEMANA)
SET @FIN_SEMANA = CAST(DATEADD(wk, DATEDIFF(wk, 0, @FECHA), 6) AS DATE)

;with cte as (
  SELECT a.OPER_CODIGO CODIGO,
         a.OPER_NOMBRE + ' ' + a.OPER_APEPATER + ' ' + a.OPER_APEMATER OPERARIO,
         CAST(c.TCKT_FFINAL AS DATE) FECHAS,
         COUNT(b.TCKT_NUMERO) CANTIDAD
    FROM OPERARIO a
    JOIN BITACORA b ON a.OPER_CODIGO = b.OPER_CODIGO
    JOIN TICKET c ON b.TCKT_NUMERO = c.TCKT_NUMERO
   WHERE CAST(c.TCKT_FFINAL AS DATE) BETWEEN @INICIO_SEMANA AND @FIN_SEMANA 
   AND (c.EST_CODIGO = 3 OR c.EST_CODIGO = 5)
   GROUP BY a.OPER_CODIGO,
            a.OPER_NOMBRE + ' ' + a.OPER_APEPATER + ' ' + a.OPER_APEMATER,
            CAST(c.TCKT_FFINAL AS DATE)
)
select codigo,
       operario,
       coalesce(sum(case when fechas = @inicio_semana then cantidad end),0) as lunes,
       coalesce(sum(case when fechas = @martes then cantidad end),0) as martes,
       coalesce(sum(case when fechas = @miercoles then cantidad end),0) as miercoles,
       coalesce(sum(case when fechas = @jueves then cantidad end),0) as jueves,
       coalesce(sum(case when fechas = @viernes then cantidad end),0) as viernes,
       coalesce(sum(case when fechas = @sabado then cantidad end),0) as sabado,
       coalesce(sum(case when fechas = @fin_semana then cantidad end),0) as domingo
  from cte
 group by codigo, operario
 order by codigo, operario;
GO

introducir la descripción de la imagen aquí

Получи как параметр дату формата ДАТИРУЙТЕ "20161201", этот SP бросает мне массив, который я хочу показать в моем JSP.

introducir la descripción de la imagen aquí

Я использую книжный магазин Датепиккер Боотстрап для дат, но на данный момент показываю массив с установленной датой, так как я еще не проверяю, как форматировать дату "dd-mm-yyyy" в java.

Когда я выполняю проект и ввожу информацию в компьютер в меню Недельного Доклада, загрузь массив, но проблема появляется, когда я изменяю выбор и пробую возвращаться к этой, там, где он бросает следующую ошибку:

type Exception доклад

messageInternal Сервер Эррор

descriptionThe server encountered an internal ошибка that prevented it from fulfilling this request.

exception

org.apache.jasper. JasperException: java.lang. NullPointerException

root вызовите

java.lang. NullPointerException

заметьте The full stack наметь of the exception and its root вызови пашите available in the Глассфис Сервер Опен Соурсе Edition 4.1 logs.

Я присоединяю коды:

DAO

package DAO;

import conexion.Conexion;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;

public class RecordSemanalDAO {

    private static final Conexion con = Conexion.conectar();
    private static ResultSet res = null;
    private static final String sproc = "{call sp_reporteSemana (?)}";

    private int codigo;
    private String nombre;
    private int lunes;
    private int martes;
    private int miercoles;
    private int jueves;
    private int viernes;
    private int sabado;
    private int domingo;

    public RecordSemanalDAO() {
    }

    public RecordSemanalDAO(int codigo, String nombre, int lunes, int martes, int miercoles, int jueves, int viernes, int sabado, int domingo) {
        this.codigo = codigo;
        this.nombre = nombre;
        this.lunes = lunes;
        this.martes = martes;
        this.miercoles = miercoles;
        this.jueves = jueves;
        this.viernes = viernes;
        this.sabado = sabado;
        this.domingo = domingo;
    }

    public static Vector ReporteSemanal(String fecha) {
        Vector reporte = null;
        try (Connection conn = con.getCnn();
                CallableStatement cs = conn.prepareCall(sproc);) {
            cs.setString(1, fecha);

            reporte = new Vector();

            try (ResultSet res = cs.executeQuery()) {
                while (res.next()) {
                    reporte.add(new RecordSemanalDAO(res.getInt(1), res.getString(2), res.getInt(3), res.getInt(4), res.getInt(5), res.getInt(6), res.getInt(7), res.getInt(8), res.getInt(9)));
                }
                return reporte;
            }
        } catch (Exception e) {
            Logger.getLogger(RecordSemanalDAO.class.getName()).log(Level.SEVERE, null, e);
        } finally {
            try {
                if (res != null) {
                    res.close();
                }
                con.cerrarConexion();
            } catch (Exception e) {
            }
        }
        return null;
    }

    public int getCodigo() {
        return codigo;
    }

    public void setCodigo(int codigo) {
        this.codigo = codigo;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public int getLunes() {
        return lunes;
    }

    public void setLunes(int lunes) {
        this.lunes = lunes;
    }

    public int getMartes() {
        return martes;
    }

    public void setMartes(int martes) {
        this.martes = martes;
    }

    public int getMiercoles() {
        return miercoles;
    }

    public void setMiercoles(int miercles) {
        this.miercoles = miercles;
    }

    public int getJueves() {
        return jueves;
    }

    public void setJueves(int jueves) {
        this.jueves = jueves;
    }

    public int getViernes() {
        return viernes;
    }

    public void setViernes(int viernes) {
        this.viernes = viernes;
    }

    public int getSabado() {
        return sabado;
    }

    public void setSabado(int sabado) {
        this.sabado = sabado;
    }

    public int getDomingo() {
        return domingo;
    }

    public void setDomingo(int dmingo) {
        this.domingo = domingo;
    }
}

Страница JSP

<%@page import="java.util.Vector"%>
<%@page import="DAO.RecordSemanalDAO"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <%@include file="../WEB-INF/jspf/jscss.jspf" %>
        <link rel="stylesheet" href="css/estilos.css"/>
        <title>Inkafarma - Dashboard</title>
    </head>
    <body>
        <div class="container-fluid">
            <div class="row">
                <div class="col-md-2 sidebar">
                    <img src="img/perfil.png" class="img-circle" alt="Responsive image" id="imagen">
                    <h3 class="text-center nombre">Wilfredo Roel</h3>
                    <h4 class="text-center apellidos">Pedroso Melgarejo</h4>
                    <br>
                    <ul class="botones">
                        <a href="<%=request.getContextPath()%>/index.do?op=index"><li class="activado"><i class="icono izquierda fa fa-home"></i>Inicio</li></a>
                        <br>
                        <a><li><i class="icono izquierda fa fa-arrow-up"></i>Records<i class="icono derecha fa fa-chevron-down"></i></li></a>
                        <ul>
                            <a href="<%=request.getContextPath()%>/index.do?op=reporteSemanal"><li>Record Semanal</li></a>
                            <a href="<%=request.getContextPath()%>/index.do?op=reporteMensual"><li>Record Mensual</li></a>
                        </ul>
                        <br>
                        <a><li><i class="icono izquierda fa fa-bar-chart"></i>Balances<i class="icono derecha fa fa-chevron-down"></i></li></a>
                        <ul>
                            <a href="<%=request.getContextPath()%>/index.do?op=ticketsTop"><li>Tickets Top</li></a>
                            <a href="<%=request.getContextPath()%>/index.do?op=ticketsReportadosLocales"><li>Tickets Reportados Locales</li></a>
                            <a href="<%=request.getContextPath()%>/index.do?op=ticketsReportadosArea"><li>Tickets Reportados Áreas</li></a>
                            <a href="<%=request.getContextPath()%>/index.do?op=incidentesTop"><li>Incidentes Top</li></a>
                            <a href="<%=request.getContextPath()%>/index.do?op=requerimientosTop"><li>Requerimientos Top</li></a>
                            <a href="<%=request.getContextPath()%>/index.do?op=incidentesFueraSLA"><li>Inc. Top fuera del SLA</li></a>
                            <a href="<%=request.getContextPath()%>/index.do?op=requerimientosFueraSLA"><li>Req. Top fuera del SLA</li></a>
                        </ul>
                        <br>
                    </ul>
                </div>
                <div class="col-md-10 col-md-offset-2 main">
                    <div class="row encabezado">
                        <img src="img/inkafarmaheader.png">   
                    </div>
                    <br>
                    <div class="row">
                        <div class="row">
                            <div class="col-md-2 col-md-offset-3"> 
                                <label>Seleccione Fecha: </label>
                            </div>
                            <div class="col-md-5">
                                <form class="form-inline" action="<%=request.getContextPath()%>/index.do?op=recordSemanal" method="post"> 
                                    <div class="input-group date" data-provide="datepicker" data-date-format="yyyymmdd">
                                        <input type="text" class="form-control" name="fecha">
                                        <div class="input-group-addon">
                                            <span class="glyphicon glyphicon-th"></span>
                                        </div>
                                    </div>
                                    <button type="submit" class="btn btn-info">Mostrar</button>
                                </form>
                            </div>
                        </div>
                        <br><br><br>
                        <div class="row">
                            <div class="col-md-10 col-md-offset-1 table-responsive">                  
                                <table class="table table-bordered table-striped">
                                    <tr class="success">
                                        <th class="text-center">Código</th>
                                        <th class="text-center">Operario</th>
                                        <th class="text-center">Lunes</th>
                                        <th class="text-center">Martes</th>
                                        <th class="text-center">Miércoles</th>
                                        <th class="text-center">Jueves</th>
                                        <th class="text-center">Viernes</th>
                                        <th class="text-center">Sábado</th>
                                        <th class="text-center">Domingo</th>
                                    </tr>

                                    <%
                                        RecordSemanalDAO objRec = new RecordSemanalDAO();
                                        Vector record = new Vector();
                                        record = RecordSemanalDAO.ReporteSemanal("20161201");
                                        for (int i = 0; i < record.size(); i++) {
                                            objRec = (RecordSemanalDAO) record.get(i);
                                    %>

                                    <tr>
                                        <td class="text-center active"><%=objRec.getCodigo()%></td>
                                        <td class="active"><%=objRec.getNombre()%></td>
                                        <td class="text-center"><%=objRec.getLunes()%></td>
                                        <td class="text-center"><%=objRec.getMartes()%></td>
                                        <td class="text-center"><%=objRec.getMiercoles()%></td>
                                        <td class="text-center"><%=objRec.getJueves()%></td>
                                        <td class="text-center"><%=objRec.getViernes()%></td>
                                        <td class="text-center"><%=objRec.getSabado()%></td>
                                        <td class="text-center"><%=objRec.getDomingo()%></td>
                                    </tr>  
                                    <%
                                        }
                                    %>
                                </table>
                            </div>
                        </div>
                    </div>
                    <br><br>
                    <script src="js/main.js"></script>                 
                </div>
            </div>
        </div>
    </body>
</html>

Stacktrace:

Серьезно: com.microsoft.sqlserver.jdbc. SQLServerException: Связь закрытая. at com.microsoft.sqlserver.jdbc. SQLServerException.makeFromDriverError (SQLServerException.java:191) at com.microsoft.sqlserver.jdbc. SQLServerConnection.checkClosed (SQLServerConnection.java:395) at com.microsoft.sqlserver.jdbc. SQLServerConnection.prepareCall (SQLServerConnection.java:2302) at com.microsoft.sqlserver.jdbc. SQLServerConnection.prepareCall (SQLServerConnection.java:1939) at Дао.Рекордсеманальдао.Репортесеманаль (RecordSemanalDAO.java:47) at org.apache.jsp.reportes.reporteSemanal_jsp. _ jspService (reporteSemanal_jsp.java:197) at org.apache.jasper.runtime. HttpJspBase.service (HttpJspBase.java:111) at javax.servlet.http. HttpServlet.service (HttpServlet.java:790) at org.apache.jasper.servlet. JspServletWrapper.service (JspServletWrapper.java:411) at org.apache.jasper.servlet. JspServlet.serviceJspFile (JspServlet.java:473) at org.apache.jasper.servlet. JspServlet.service (JspServlet.java:377) at javax.servlet.http. HttpServlet.service (HttpServlet.java:790) at org.apache.catalina.core. StandardWrapper.service (StandardWrapper.java:1682) at org.apache.catalina.core. ApplicationDispatcher.doInvoke (ApplicationDispatcher.java:875) at org.apache.catalina.core. ApplicationDispatcher.invoke (ApplicationDispatcher.java:739) at org.apache.catalina.core. ApplicationDispatcher.processRequest (ApplicationDispatcher.java:575) at org.apache.catalina.core. ApplicationDispatcher.doDispatch (ApplicationDispatcher.java:546) at org.apache.catalina.core. ApplicationDispatcher.dispatch (ApplicationDispatcher.java:428) at org.apache.catalina.core. ApplicationDispatcher.forward (ApplicationDispatcher.java:378) at controlador.index.processRequest (index.java:35) at controlador.index.doGet (index.java:102) at javax.servlet.http. HttpServlet.service (HttpServlet.java:687) at javax.servlet.http. HttpServlet.service (HttpServlet.java:790) at org.apache.catalina.core. StandardWrapper.service (StandardWrapper.java:1682) at org.apache.catalina.core. StandardWrapperValve.invoke (StandardWrapperValve.java:318) at org.apache.catalina.core. StandardContextValve.invoke (StandardContextValve.java:160) at org.apache.catalina.core. StandardPipeline.doInvoke (StandardPipeline.java:734) at org.apache.catalina.core. StandardPipeline.invoke (StandardPipeline.java:673) at com.sun.enterprise.web. WebPipeline.invoke (WebPipeline.java:99) at org.apache.catalina.core. StandardHostValve.invoke (StandardHostValve.java:174) at org.apache.catalina.connector. CoyoteAdapter.doService (CoyoteAdapter.java:415) at org.apache.catalina.connector. CoyoteAdapter.service (CoyoteAdapter.java:282) at com.sun.enterprise.v3.services.impl. ContainerMapper $HttpHandlerCallable.call (ContainerMapper.java:459) at com.sun.enterprise.v3.services.impl. ContainerMapper.service (ContainerMapper.java:167) at org.glassfish.grizzly.http.server. HttpHandler.runService (HttpHandler.java:201) at org.glassfish.grizzly.http.server. HttpHandler.doHandle (HttpHandler.java:175) at org.glassfish.grizzly.http.server. HttpServerFilter.handleRead (HttpServerFilter.java:235) at org.glassfish.grizzly.filterchain. ExecutorResolver$9.execute (ExecutorResolver.java:119) at org.glassfish.grizzly.filterchain. DefaultFilterChain.executeFilter (DefaultFilterChain.java:284) at org.glassfish.grizzly.filterchain. DefaultFilterChain.executeChainPart (DefaultFilterChain.java:201) at org.glassfish.grizzly.filterchain. DefaultFilterChain.execute (DefaultFilterChain.java:133) at org.glassfish.grizzly.filterchain. DefaultFilterChain.process (DefaultFilterChain.java:112) at org.glassfish.grizzly. ProcessorExecutor.execute (ProcessorExecutor.java:77) at org.glassfish.grizzly.nio.transport. TCPNIOTransport.fireIOEvent (TCPNIOTransport.java:561) at org.glassfish.grizzly.strategies. AbstractIOStrategy.fireIOEvent (AbstractIOStrategy.java:112) at org.glassfish.grizzly.strategies. WorkerThreadIOStrategy.run0 (WorkerThreadIOStrategy.java:117) at org.glassfish.grizzly.strategies. 100 WorkerThreadIOStrategy.access$ (WorkerThreadIOStrategy.java:56) at org.glassfish.grizzly.strategies. WorkerThreadIOStrategy $WorkerThreadRunnable.run (WorkerThreadIOStrategy.java:137) at org.glassfish.grizzly.threadpool. AbstractThreadPool $Worker.doWork (AbstractThreadPool.java:565) at org.glassfish.grizzly.threadpool. AbstractThreadPool $Worker.run (AbstractThreadPool.java:545) at java.lang. Thread.run (Thread.java:745)

Предостережение: Servlet.service () for servlet jsp threw exception java.lang. NullPointerException at org.apache.jsp.reportes.reporteSemanal_jsp. _ jspService (reporteSemanal_jsp.java:198) at org.apache.jasper.runtime. HttpJspBase.service (HttpJspBase.java:111) at javax.servlet.http. HttpServlet.service (HttpServlet.java:790) at org.apache.jasper.servlet. JspServletWrapper.service (JspServletWrapper.java:411) at org.apache.jasper.servlet. JspServlet.serviceJspFile (JspServlet.java:473) at org.apache.jasper.servlet. JspServlet.service (JspServlet.java:377) at javax.servlet.http. HttpServlet.service (HttpServlet.java:790) at org.apache.catalina.core. StandardWrapper.service (StandardWrapper.java:1682) at org.apache.catalina.core. ApplicationDispatcher.doInvoke (ApplicationDispatcher.java:875) at org.apache.catalina.core. ApplicationDispatcher.invoke (ApplicationDispatcher.java:739) at org.apache.catalina.core. ApplicationDispatcher.processRequest (ApplicationDispatcher.java:575) at org.apache.catalina.core. ApplicationDispatcher.doDispatch (ApplicationDispatcher.java:546) at org.apache.catalina.core. ApplicationDispatcher.dispatch (ApplicationDispatcher.java:428) at org.apache.catalina.core. ApplicationDispatcher.forward (ApplicationDispatcher.java:378) at controlador.index.processRequest (index.java:35) at controlador.index.doGet (index.java:102) at javax.servlet.http. HttpServlet.service (HttpServlet.java:687) at javax.servlet.http. HttpServlet.service (HttpServlet.java:790) at org.apache.catalina.core. StandardWrapper.service (StandardWrapper.java:1682) at org.apache.catalina.core. StandardWrapperValve.invoke (StandardWrapperValve.java:318) at org.apache.catalina.core. StandardContextValve.invoke (StandardContextValve.java:160) at org.apache.catalina.core. StandardPipeline.doInvoke (StandardPipeline.java:734) at org.apache.catalina.core. StandardPipeline.invoke (StandardPipeline.java:673) at com.sun.enterprise.web. WebPipeline.invoke (WebPipeline.java:99) at org.apache.catalina.core. StandardHostValve.invoke (StandardHostValve.java:174) at org.apache.catalina.connector. CoyoteAdapter.doService (CoyoteAdapter.java:415) at org.apache.catalina.connector. CoyoteAdapter.service (CoyoteAdapter.java:282) at com.sun.enterprise.v3.services.impl. ContainerMapper $HttpHandlerCallable.call (ContainerMapper.java:459) at com.sun.enterprise.v3.services.impl. ContainerMapper.service (ContainerMapper.java:167) at org.glassfish.grizzly.http.server. HttpHandler.runService (HttpHandler.java:201) at org.glassfish.grizzly.http.server. HttpHandler.doHandle (HttpHandler.java:175) at org.glassfish.grizzly.http.server. HttpServerFilter.handleRead (HttpServerFilter.java:235) at org.glassfish.grizzly.filterchain. ExecutorResolver$9.execute (ExecutorResolver.java:119) at org.glassfish.grizzly.filterchain. DefaultFilterChain.executeFilter (DefaultFilterChain.java:284) at org.glassfish.grizzly.filterchain. DefaultFilterChain.executeChainPart (DefaultFilterChain.java:201) at org.glassfish.grizzly.filterchain. DefaultFilterChain.execute (DefaultFilterChain.java:133) at org.glassfish.grizzly.filterchain. DefaultFilterChain.process (DefaultFilterChain.java:112) at org.glassfish.grizzly. ProcessorExecutor.execute (ProcessorExecutor.java:77) at org.glassfish.grizzly.nio.transport. TCPNIOTransport.fireIOEvent (TCPNIOTransport.java:561) at org.glassfish.grizzly.strategies. AbstractIOStrategy.fireIOEvent (AbstractIOStrategy.java:112) at org.glassfish.grizzly.strategies. WorkerThreadIOStrategy.run0 (WorkerThreadIOStrategy.java:117) at org.glassfish.grizzly.strategies. 100 WorkerThreadIOStrategy.access$ (WorkerThreadIOStrategy.java:56) at org.glassfish.grizzly.strategies. WorkerThreadIOStrategy $WorkerThreadRunnable.run (WorkerThreadIOStrategy.java:137) at org.glassfish.grizzly.threadpool. AbstractThreadPool $Worker.doWork (AbstractThreadPool.java:565) at org.glassfish.grizzly.threadpool. AbstractThreadPool $Worker.run (AbstractThreadPool.java:545) at java.lang. Thread.run (Thread.java:745)

Предостережение: StandardWrapperValve [index]: Servlet.service () for servlet index threw exception java.lang. NullPointerException at org.apache.jsp.reportes.reporteSemanal_jsp. _ jspService (reporteSemanal_jsp.java:198) at org.apache.jasper.runtime. HttpJspBase.service (HttpJspBase.java:111) at javax.servlet.http. HttpServlet.service (HttpServlet.java:790) at org.apache.jasper.servlet. JspServletWrapper.service (JspServletWrapper.java:411) at org.apache.jasper.servlet. JspServlet.serviceJspFile (JspServlet.java:473) at org.apache.jasper.servlet. JspServlet.service (JspServlet.java:377) at javax.servlet.http. HttpServlet.service (HttpServlet.java:790) at org.apache.catalina.core. StandardWrapper.service (StandardWrapper.java:1682) at org.apache.catalina.core. ApplicationDispatcher.doInvoke (ApplicationDispatcher.java:875) at org.apache.catalina.core. ApplicationDispatcher.invoke (ApplicationDispatcher.java:739) at org.apache.catalina.core. ApplicationDispatcher.processRequest (ApplicationDispatcher.java:575) at org.apache.catalina.core. ApplicationDispatcher.doDispatch (ApplicationDispatcher.java:546) at org.apache.catalina.core. ApplicationDispatcher.dispatch (ApplicationDispatcher.java:428) at org.apache.catalina.core. ApplicationDispatcher.forward (ApplicationDispatcher.java:378) at controlador.index.processRequest (index.java:35) at controlador.index.doGet (index.java:102) at javax.servlet.http. HttpServlet.service (HttpServlet.java:687) at javax.servlet.http. HttpServlet.service (HttpServlet.java:790) at org.apache.catalina.core. StandardWrapper.service (StandardWrapper.java:1682) at org.apache.catalina.core. StandardWrapperValve.invoke (StandardWrapperValve.java:318) at org.apache.catalina.core. StandardContextValve.invoke (StandardContextValve.java:160) at org.apache.catalina.core. StandardPipeline.doInvoke (StandardPipeline.java:734) at org.apache.catalina.core. StandardPipeline.invoke (StandardPipeline.java:673) at com.sun.enterprise.web. WebPipeline.invoke (WebPipeline.java:99) at org.apache.catalina.core. StandardHostValve.invoke (StandardHostValve.java:174) at org.apache.catalina.connector. CoyoteAdapter.doService (CoyoteAdapter.java:415) at org.apache.catalina.connector. CoyoteAdapter.service (CoyoteAdapter.java:282) at com.sun.enterprise.v3.services.impl. ContainerMapper $HttpHandlerCallable.call (ContainerMapper.java:459) at com.sun.enterprise.v3.services.impl. ContainerMapper.service (ContainerMapper.java:167) at org.glassfish.grizzly.http.server. HttpHandler.runService (HttpHandler.java:201) at org.glassfish.grizzly.http.server. HttpHandler.doHandle (HttpHandler.java:175) at org.glassfish.grizzly.http.server. HttpServerFilter.handleRead (HttpServerFilter.java:235) at org.glassfish.grizzly.filterchain. ExecutorResolver$9.execute (ExecutorResolver.java:119) at org.glassfish.grizzly.filterchain. DefaultFilterChain.executeFilter (DefaultFilterChain.java:284) at org.glassfish.grizzly.filterchain. DefaultFilterChain.executeChainPart (DefaultFilterChain.java:201) at org.glassfish.grizzly.filterchain. DefaultFilterChain.execute (DefaultFilterChain.java:133) at org.glassfish.grizzly.filterchain. DefaultFilterChain.process (DefaultFilterChain.java:112) at org.glassfish.grizzly. ProcessorExecutor.execute (ProcessorExecutor.java:77) at org.glassfish.grizzly.nio.transport. TCPNIOTransport.fireIOEvent (TCPNIOTransport.java:561) at org.glassfish.grizzly.strategies. AbstractIOStrategy.fireIOEvent (AbstractIOStrategy.java:112) at org.glassfish.grizzly.strategies. WorkerThreadIOStrategy.run0 (WorkerThreadIOStrategy.java:117) at org.glassfish.grizzly.strategies. 100 WorkerThreadIOStrategy.access$ (WorkerThreadIOStrategy.java:56) at org.glassfish.grizzly.strategies. WorkerThreadIOStrategy $WorkerThreadRunnable.run (WorkerThreadIOStrategy.java:137) at org.glassfish.grizzly.threadpool. AbstractThreadPool $Worker.doWork (AbstractThreadPool.java:565) at org.glassfish.grizzly.threadpool. AbstractThreadPool $Worker.run (AbstractThreadPool.java:545) at java.lang. Thread.run (Thread.java:745)

Класс Связь

package conexion;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;

public class Conexion {

    public static Conexion instance;
    private Connection cnn;
    private String url = "jdbc:sqlserver://Muse\\MSSQLSERVER:1433;databaseName=BD_INKAFARMA";
    private String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
    private String usuario = "sa";
    private String pass = "rakel123";

    private Conexion() {

        try {
            Class.forName(driver);
            cnn = DriverManager.getConnection(url, usuario, pass);
        } catch (ClassNotFoundException | SQLException ex) {
            Logger.getLogger(Conexion.class.getName()).log(Level.SEVERE, null, ex);
        }

    }

    public synchronized static Conexion conectar() {

        if (instance == null) {
            instance = new Conexion();
        }
        return instance;

    }

    public Connection getCnn() {
        return cnn;
    }

    public void cerrarConexion() {
        instance = null;
    }
}
1
задан 13.01.2017, 00:40
0 ответов

Проблема имеет общее с чем-то, что мы видим раз вслед за разом в различных вопросах где-то здесь: использование связи в глобальной переменной:

public class RecordSemanalDAO {

    private static final Conexion con = Conexion.conectar();

У этой практики есть много проблем. Но в твоем специфическом случае, ошибка вызвана, потому что ты открываешь связь единственный раз, когда распределяется статическая переменная con в предыдущем решении, но ты закрываешь ее в каждый вызов метода ReporteSemanal(). В самом деле ты это закрываешь 2 раза в каждый раз:

  1. В конце блока try (Connection conn = con.getCnn()), связь закрывается autmáticamente
  2. В finally также ты выполняешь con.cerrarConexion(); для эмфазы :)

Код:

public static Vector ReporteSemanal(String fecha) {
    Vector reporte = null;
    try (Connection conn = con.getCnn();
            CallableStatement cs = conn.prepareCall(sproc);) {
        cs.setString(1, fecha);

        reporte = new Vector();

        try (ResultSet res = cs.executeQuery()) {
            while (res.next()) {
                reporte.add(new RecordSemanalDAO(res.getInt(1), res.getString(2), res.getInt(3), res.getInt(4), res.getInt(5), res.getInt(6), res.getInt(7), res.getInt(8), res.getInt(9)));
            }
            return reporte;
        }
    // 1. aquí se cierra, por estar al final del `try-with-resources`
    } catch (Exception e) {
        Logger.getLogger(RecordSemanalDAO.class.getName()).log(Level.SEVERE, null, e);
    } finally {
        try {
            if (res != null) {
                res.close();
            }
            con.cerrarConexion(); // 2. Y aquí lo vuelves a cerrar.
        } catch (Exception e) {
        }
    }
    return null;
}

Это означает, что uan раз, что ты выполняешь метод ReporteSemanal() однажды, для следующих вызовов связь закроется и бросит в тебя исключение.

Вторая проблема состоит в том, что ты стараешься манипулировать исключением, которым ты в действительности не можешь манипулировать. Когда бросилось исключение, atrapastes и метод попробовал продолжать возвращать стоимость null в конце концов. Это очень плохой рисунок, так как неизбежно, он это просто вызывает, что ты вновь имел ошибку, ниже из-за того, что не мог манипулировать null правильно.

Так что решение

  1. Удалять эту глобальную связь (и шага ResultSet глобальный также) и скорее открывать ее внутри самого метода и распределять ее в локальную переменную, которую ты можешь закрывать, закончив метод.
  2. Удалять try-catch ненужные. Если ты не можешь манипулировать исключением, не старайся ловить ее. Позволь, чтобы исключение продолжило пересылать батарейку вызовов.

Пример улучшенной и упрощенной версии:

public static Vector ReporteSemanal(String fecha) {
    try (Connection conn = Conexion.conectar().getCnn();
            CallableStatement cs = conn.prepareCall(sproc)) {
        cs.setString(1, fecha);

        try (ResultSet res = cs.executeQuery()) {
            Vector reporte = new Vector();
            while (res.next()) {
                reporte.add(new RecordSemanalDAO(res.getInt(1), res.getString(2), res.getInt(3), res.getInt(4), res.getInt(5), res.getInt(6), res.getInt(7), res.getInt(8), res.getInt(9)));
            }
            return reporte;
        }
    }
}

Из-за suspuesto, может быть другой прогресс, который ты можешь делать, например:

  • Упрощать твой класс Conexion. я не могу видеть Ваше осуществление, но Ваше использование, почти конечно, что он нуждается в прогрессе, так как она, кажется, разработана для maejar глобальные связи, что не хорошая идея.
  • Меняться Vector из-за ArrayList. Если только у тебя не будет довольно свойственная необходимость, Vector уже не было бы нужно использовать.

... но это менее важные детали.

Редактирование

Оказывается, что сейчас, что ты имел твой класс Conexion, остается ясным, что там у тебя есть другая серьезная проблема. Ты считаешь это определенным как singleton. Или же, который ты направляешь в ту же проблему, потому что у тебя действительно есть единственная разделенная связь, что не правильно.

Я предлагаю тебе изменения этого класса во что-то, упрощенное как следующее, чтобы удалять singleton.

public class Conexion {
    private static final String URL = "jdbc:sqlserver://Muse\\MSSQLSERVER:1433;databaseName=BD_INKAFARMA";
    private static final String DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
    private static final String USUARIO = "sa";
    private static final String PASS = "rakel123";

    static {
        try {
            Class.forName(DRIVER);
        } catch(ClassNotFoundException e) {
            throw new RuntimeException(e);
        }
    }

    public static Connection conectar() {
        try {
            return DriverManager.getConnection(URL, USUARIO, PASS);
        } catch(SQLException e) {
            throw new RuntimeException(e);
        }
    }
}

С этим измененным классом, ты должен делать следующего точно подойди в решение с try:

try (Connection conn = Conexion.conectar(); // quitar el .getCnn()
        CallableStatement cs = conn.prepareCall(sproc)) {
1
ответ дан 03.12.2019, 17:41
  • 1
    Это уже habí в обсужденный с этим пользователем в этом вопросе . Как кажется, я пишу ответы впустую... –  12.01.2017, 22:32
  • 2
    @Luiggi: Ни так. Когда я увидел вопрос, я sorprendió видеть có я говорю, что он использует хорошо patró n try-with-resources. Это почти никогда не видно в вопросах aquí. Но увидев твой ответ, сейчас я понимаю откуда salió. Así что, по крайней мере исходит из твоего ответа sobrevivió и sirvió. :) –  12.01.2017, 22:40
  • 3
    @LuiggiMendoza, большое спасибо из-за того, что берет на себя труд enseñ вооружите, правда состоит в том, что есть вещи, что не sé потому что я - студент aú n. Я издаю вопрос добавляя мой класс Связь, так как implementé mé совсем, что я facilitó sstan и aú n продолжает выходить та же проблема conexió n закрывшая. –  13.01.2017, 00:39
  • 4
    @Wil: Так как просвет. Дело в том, что ademá s глобальной переменной вышеупомянутый, definistes класс такие Conexion как singleton. То есть вернись в ту же проблему, потому что allí tambié n у тебя есть переменная está костариканская глобальная, который имеет conexió n. Нужно упорядочивать это. Agregué edició n. –  13.01.2017, 01:00
  • 5
    Только agregarí в который, хотя иметь conexió n глобальный окончательно это не правильное, открывать и закрывать conexió n каждый раз, когда ты нуждаешься в этом смоги иметь некое попадание в результате. Обычно, в чем ты нуждаешься, состоит в том, чтобы использовать connection пул . Я предлагаю тебе исследовать có mo ты можешь объединять один с драйвером, который ты используешь. Заметь отдельно, я не думаю, что ты нуждаешься в решении Class.forName(DRIVER). Попытайся без нее, чтобы видеть, функционирует ли все хорошо. –  13.01.2017, 03:37

Ошибка, которая дает тебе, - из-за книжного магазина Джаспер доклады. Проверь, что ты не сослался на этот книжный магазин в твоем коде.

Чтобы форматировать дату в Java это очень просто. Просто tenes, что использовать класс SimpleDateFormat. Эдж:

public final class DateUtils {

public static String formatDate(Date fecha){
    SimpleDateFormat format = new SimpleDateFormat("dd-mm-yyyy");
    return format.format(fecha);        
}

public static Date parseDate(String fecha) throws ParseException{
    SimpleDateFormat format = new SimpleDateFormat("dd-mm-yyyy");
    return format.parse(fecha);        
}

}

-1
ответ дан 03.12.2019, 17:41
  • 1
    Это не относится к делу. Má s добро, это значит, что, когда Джаспер производит доклад, один из pará посланные метры обладай недействительной стоимостью, поэтому ошибка выходит allí. ¿ Cuá l pará метры, в qué уедь? Требуется полный stacktrace, чтобы знать лучше эти детали и знание có mo упорядочивать это. –  12.01.2017, 22:19
  • 2
    Потому что ты делаешь меня отрицательным? Если я говорю ему, что ошибка приходит со стороны Джаспера. Пример форматирования, - потому что, если ты читаешь весь Ваш вопрос, также консультируется, как форматирование даты. –  12.01.2017, 22:26
  • 3
    Потому что твой ответ неправильный. Прочитай эту часть: " Проверь, что ты не сослался на эту librerí в в твоем có digo." ¿ Это значит, что если librerí он дает мне NPE я должен прекращать использовать ее? ¿ Значь, что я не usá ndola плохо, просто она дефектная и я не должен доверять ей? ¿ Aú n в печаль, что есть много проектов, которые используют ее, если в mí он бьет козырем меня тогда я должен прекращать снабжать ссылками librerí за полным, потому что он будет давать мне NPE? ¿ Это - то, что ты пробуешь сказать? ¿ И có mo NPE и Джаспер связан с форматом даты? –  12.01.2017, 22:30
  • 4
    Если ты хочешь форматировать дату, должен будь быть в стороне клиента, у тебя есть <fmt:formatDate>, которые уже используют один SimpleDateFormat в ученика закрытого учебного заведения, ты не нуждаешься в том, чтобы форматировать дату с backend. –  12.01.2017, 22:34