Исключение попадания кварца в BLOB при использовании источника данных JBOSS JNDI - PullRequest
1 голос
/ 07 мая 2019

У меня есть подпружиненное приложение для кварцевого планировщика, которое ранее работало нормально с источником данных кварца по умолчанию. Однако, после того, как он перешел на использование источника данных JBOSS JNDI, он обнаружил исключение для столбцов BLOB в базе данных Oracle 12.

У меня есть настроенный REST API, который будет вызывать кварцевые API для планирования работы. Приложение не возвращает много информации об исключении ни на странице ошибок, ни в файле журнала отладки log4j.

Ниже приведена страница ошибки об исключении:


enter image description here


В моем файле журнала log4j нет исключений.

Что я пробовал:

  1. Изначально я использовал кварцевый стартер с пружинной загрузкой. но теперь у меня есть изменил его на SchedulerFactoryBean.
  2. Источник данных JBOSS JNDI сам по себе кажется нормальным. функции / функции, использующие тот же источник данных JNDI и до сих пор хорошо. Но учтите, что эти функции не включают таблицу со столбцом BLOB.

Вот мои предыдущие свойства кварца:

enter image description here

Мои текущие свойства кварца:

enter image description here

Моя текущая кварцевая конфигурация в applicationContext-resources.xml:

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName">
        <value>${jdbc.jndiName}</value>
    </property>
</bean>

<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
    <property name="dataSource">
        <ref bean="dataSource" />
    </property>
</bean>

<bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean" lazy-init="false">
    <property name="dataSource" ref="dataSource" />
    <property name="transactionManager" ref="transactionManager" />
    <property name="configLocation">
        <value>classpath:/quartz.properties</value>
    </property>
    <property name="autoStartup" value="true" />
    <property name="startupDelay" value="5" />
    <property name="waitForJobsToCompleteOnShutdown" value="true" />
    <!-- <property name="jobFactory">
        <bean class="com.novacitynets.fornax.schedulejob.integration.springquartz.AutowiringSpringBeanJobFactory">
            <property name="ignoredUnknownProperties" value="applicationContext"/>
        </bean>
    </property> -->
    <!-- <property name="jobSchedulingDataLocations">
        <list>
            <value>classpath:/quartz-jobs.xml</value>
        </list>
    </property> -->
</bean>

Моя текущая конфигурация источника данных в standalone.xml JBOSS:

    <subsystem xmlns="urn:jboss:domain:datasources:5.0">
        <datasources>
            <datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-java-context="true">
                <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE</connection-url>
                <driver>h2</driver>
                <security>
                    <user-name>sa</user-name>
                    <password>sa</password>
                </security>
            </datasource>
            <datasource jta="true" jndi-name="java:jboss/OracleDS" pool-name="OracleDS" enabled="true" use-ccm="true">
                <connection-url>jdbc:oracle:thin:@//10.0.2.234:1521/DAX2intra</connection-url>
                <driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
                <driver>oracle</driver>
                <pool>
                    <min-pool-size>5</min-pool-size>
                    <max-pool-size>150</max-pool-size>
                </pool>
                <security>
                    <user-name>DAX2MGR</user-name>
                    <password>Nova#1234</password>
                </security>
                <validation>
                    <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleValidConnectionChecker"/>
                    <background-validation>true</background-validation>
                    <stale-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleStaleConnectionChecker"/>
                    <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleExceptionSorter"/>
                </validation>
            </datasource>
            <drivers>
                <driver name="h2" module="com.h2database.h2">
                    <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
                </driver>
                <driver name="oracle" module="com.oracle.jdbc">
                    <xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
                </driver>
            </drivers>
        </datasources>
    </subsystem>

Моя конфигурация module.xml в JBOSS:

<module xmlns="urn:jboss:module:1.1" name="com.oracle.jdbc">

    <resources>
        <resource-root path="ojdbc8-12.2.0.1.jar"/>
    </resources>

    <dependencies>
        <module name="javax.api"/>
        <module name="javax.transaction.api"/>
    </dependencies>
</module>

Кроме того, я добавил эту зависимость c3p0 в мой файл pom.xml, хотя не уверен, имеет ли это значение.

1 Ответ

0 голосов
/ 24 мая 2019

Способен решить проблему с помощью следующих шагов:

Для JBOSS: 1. Включите зависимость модуля oracle jdbc, где этот модуль oracle jdbc является настроенным модулем в JBOSS для файла jar ojdbc. 2. исключить ojdbc jar оракула из pom.xml.

См. Ответ от кварц 2.2.1 + jboss EAP 6.4 ClassNotFoundException oracle.sql.BLOB

для WebLogic 1. В конфигурации свойств кварца установите org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.WebLogicDelegate. 2. исключить ojdbc банку оракула из pom.xml

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...