Не удалось получить соединение JDBC. java.sql.SQLException: источник данных закрыт - PullRequest
0 голосов
/ 01 ноября 2018

Это первый раз, когда я работаю с Spring boot & Tomcat 8. После развертывания на сервере Tomcat у меня возникает проблема, я не могу получить экземпляр источника данных JNDI.

В лог-файле я вижу ошибку

Ошибка при получении метаданных базы данных; вложенное исключение - org.springframework.jdbc.support.MetaDataAccessException: не удалось получить соединение для извлечения метаданных; вложенным исключением является org.springframework.jdbc.CannotGetJdbcConnectionException: не удалось получить соединение JDBC; Вложенное исключение - java.sql.SQLException: источник данных закрыт

Ниже приведен код из server.xml и Context.xml

*** Server.xml ***
<Resource name="jdbc/jndiDs" global="jdbc/jndiDs" auth="Container" type="javax.sql.DataSource" maxActive="50" maxIdle="30" maxWait="10000" driverClassName="oracle.jdbc.driver.OracleDriver" url="connection url" username="username" password="password" /> 

***Context.xml ***
<ResourceLink name="jdbc/jndiDs" global="jdbc/jndiDs" auth="Container" type="javax.sql.DataSource" />

Однако, когда я использую DriverManagerDataSource в качестве bean-компонента в своем классе конфигурации, он работает без проблем.

Ниже приведен код Java, используемый для вставки данных с использованием хранимой процедуры

 SimpleJdbcCall call = new SimpleJdbcCall(jdbcTemplate).withProcedureName("COP00166_001_1.Capture")
                    .withoutProcedureColumnMetaDataAccess();
            call.declareParameters(new SqlParameter("sPMsgTx", Types.VARCHAR),
                    new SqlParameter("sPConLegacyId", Types.VARCHAR),
                    new SqlParameter("nPConId", Types.INTEGER),
                    new SqlParameter("nPPceNr", Types.INTEGER),
                    new SqlParameter("nPBulCsysIdCorig", Types.INTEGER),
                    new SqlParameter("nPBulCsysIdOrig", Types.INTEGER),
                    new SqlParameter("nPBulCsysIdDest", Types.INTEGER),
                    new SqlParameter("nPBulCsysIdOcc", Types.INTEGER),
                    new SqlParameter("dPPcsEventLt", OracleTypes.TIMESTAMP),
                    new SqlParameter("sPMsgBarcodeTypCd", Types.VARCHAR),
                    new SqlParameter("sPMsgBarcodeValTx", Types.VARCHAR), 
HashMap<String, Object> map = new HashMap<String, Object>();
        map.put("sPMsgTx", ConsignmentMatchingHelper.linearizeXml(msg));
        map.put("sPConLegacyId", shipmentMatch.getShipmentDetail().getConLegacyNr().trim());
        map.put("nPConId", null);
        map.put("nPPceNr",
                (shipmentMatch.getShipmentDetail().getPieceNr() != null)
                        ? shipmentMatch.getShipmentDetail().getPieceNr().trim()
                        : null);
        map.put("nPBulCsysIdCorig",
                (shipmentMatch.getShipmentDetail().getCsEntryBL() != null)
                        ? shipmentMatch.getShipmentDetail().getCsEntryBL().trim()
                        : null);
        map.put("nPBulCsysIdOrig", null);
        map.put("nPBulCsysIdDest",
                (shipmentMatch.getShipmentDetail().getCsRecBL() != null)
                        ? shipmentMatch.getShipmentDetail().getCsRecBL().trim()
                        : null);
        map.put("nPBulCsysIdOcc",
                (shipmentMatch.getShipmentDetail().getCsEventBL() != null)
                        ? shipmentMatch.getShipmentDetail().getCsEventBL().trim()
                        : null);
        map.put("dPPcsEventLt", ConsignmentMatchingHelper
                .covertToTimestamp(shipmentMatch.getShipmentDetail().getEventDate().getLocal()));
        map.put("sPMsgBarcodeTypCd",
                (shipmentMatch.getShipmentDetail().getBarCdType() != null)
                        ? shipmentMatch.getShipmentDetail().getBarCdType().trim()
                        : null);
        map.put("sPMsgBarcodeValTx",
                (shipmentMatch.getShipmentDetail().getBarCdValue() != null)
                        ? shipmentMatch.getShipmentDetail().getBarCdValue().trim()
                        : null);
    call.execute(map);

org.springframework.jdbc.support.MetaDataAccessException - когда вызывается метод execute.

...