Пул соединений Glassfish 3 выдает java.sql.SQLSyntaxErrorException: ORA-00933

Я использую сервер Glassfish 3 для запуска веб-службы. Пул соединений реализован на сервере и может пинговать базу данных.

Соединение получено с сервера, но оно выдает исключение java.sql.SQLSyntaxErrorException: ORA-00933: SQL command not properly ended во время выполнения PreparedStatement.

Glassfish 4 не выдает никаких исключений

Запрос берется из файла свойств

QUERY=select * from TABLE where SYSTEMID=?1

Использование двух отдельных классов Java для получения соединения и дальнейшей обработки

JDBCUtil.java

public static Connection connectionFromConnectionPool()
        throws NamingException, SQLException {
    Context initCtx = new InitialContext();
    DataSource dataSource = (DataSource) initCtx.lookup(PropertyFileReader
                            .getPropertyValue("connectionPool.JNDI.name"));
    Connection connection = (Connection) dataSource.getConnection();
    if (connection != null) {
        logger.info("Received Connection");
    } else {
        logger.info("No Connection Received");
    }

    return connection;
}

ДАО.java

ResultSet resultSet = null;
    PreparedStatement preparedStatement = null;
    Connection connection = null;
    try {
        connection = JDBCUtil.connectionFromConnectionPool();

        if (connection != null) {
            preparedStatement = connection
                    .prepareStatement(PropertyFileReader
                            .getPropertyValue("QUERY"));
            if (preparedStatement != null) {
                preparedStatement.setString(1, "systemID");
                resultSet = preparedStatement.executeQuery();     // line No:56

Сгенерированный журнал:

18:13:35,328 INFO - *****.JDBCUtil.connectionFromConnectionPool(JDBCUtil.java:38) - Received Connection
18:13:35,397ERROR - *****(DAO.java:81) - **************************** :: 
java.sql.SQLSyntaxErrorException: ORA-00933: SQL command not properly ended

at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:440)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:396)
at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:837)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:445)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:191)
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:523)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:207)
at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:863)
at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1153)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1275)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3576)
at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3620)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1491)
at com.sun.gjc.spi.jdbc40.PreparedStatementWrapper40.executeQuery(PreparedStatementWrapper40.java:642)
at *************************************(DAO.java:56)
....................

ojdbc6.jar помещен в папки glassfish3\glassfish\lib и glassfish4\glassfish\lib.


person MeVenk    schedule 25.06.2015    source источник


Ответы (1)


Проверьте, есть ли какой-либо другой ojdbc jar в папке сервера, особенно в папке домена, которую вы используете.

Если в папке сервера есть разные jar-файлы или разные версии jar-файлов, это может вызвать такие ошибки.

Например: glassfish3\glassfish\domains\domain1\lib...

Если есть jar-файлы разных версий, замените их одной версией.

Я использую Glassfish4. Я хранил банку ojdbc только в glassfish4\glassfish\lib, что меня вполне устраивает.

person Venkatesh    schedule 26.06.2015
comment
Проблема решилась заменой сервера на новый. - person MeVenk; 26.06.2015