PostgreSQL - Quartz JDBC-JobStoreTX - getTriggersForJob - ArrayIndexOutOfBoundsException

时间:2015-10-04 17:45:21

标签: java postgresql jdbc quartz-scheduler

DB:PostgreSQL 9.2

主持:Openshift

配置:

org.quartz.scheduler.instanceName = OneTimeJob
org.quartz.threadPool.threadCount = 3
org.quartz.jobStore.useProperties = true

org.quartz.threadPool.class: org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread: true

org.quartz.jobStore.misfireThreshold: 60000

org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX

org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.PostgreSQLDelegate
org.quartz.jobStore.dataSource = Name

org.quartz.dataSource.Name.connectionProvider.class = com.name.scheduler.DBConnectionProvider

堆栈跟踪:

  

以下失败导致SQLException:   java.lang.ArrayIndexOutOfBoundsException at   com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:106)at at   com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:65)at   com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:62)at   com.mchange.v2.c3p0.impl.NewPooledConnection.handleThrowable(NewPooledConnection.java:369)   在   com.mchange.v2.c3p0.impl.NewProxyResultSet.getBytes(NewProxyResultSet.java:2795)   在   org.quartz.impl.jdbcjobstore.PostgreSQLDelegate.getJobDataFromBlob(PostgreSQLDelegate.java:88)   在   org.quartz.impl.jdbcjobstore.StdJDBCDelegate.getMapFromProperties(StdJDBCDelegate.java:881)   在   org.quartz.impl.jdbcjobstore.StdJDBCDelegate.selectTrigger(StdJDBCDelegate.java:1778)   在   org.quartz.impl.jdbcjobstore.StdJDBCDelegate.selectTriggersForJob(StdJDBCDelegate.java:1704)   在   org.quartz.impl.jdbcjobstore.JobStoreSupport.getTriggersForJob(JobStoreSupport.java:2141)

     

引起:java.lang.ArrayIndexOutOfBoundsException:2 at   org.postgresql.util.PGbytea.toBytes(PGbytea.java:76)at   org.postgresql.jdbc2.AbstractJdbc2ResultSet.getBytes(AbstractJdbc2ResultSet.java:2271)     在   org.postgresql.jdbc2.AbstractJdbc2ResultSet.getBytes(AbstractJdbc2ResultSet.java:2451)     在   com.mchange.v2.c3p0.impl.NewProxyResultSet.getBytes(NewProxyResultSet.java:2781)

PS:适用于postgres 9.4

1 个答案:

答案 0 :(得分:2)

这个JIRA https://issues.liferay.com/browse/LPS-15133具有相同的堆栈跟踪,并且它是一个过时的驱动程序问题。

如果您尝试使用PostgreSQL jdbc驱动程序的最新版本,可能包含org.postgresql groupId的依赖项,logback依赖于postgres的旧版驱动程序作为groupId,因此您在应用中包含了两个依赖项。

请尝试以这种方式排除旧的jdbc版本:

<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.1.3</version>
    <exclusions>
        <exclusion>
            <groupId>postgresql</groupId>
            <artifactId>postgresql</artifactId>
        </exclusion>
    </exclusions>
</dependency>

告诉我们这种解释是否会让您的应用运行起来。

希望它有所帮助!