当前位置: 首页 > 知识库问答 >
问题:

使用JBOSS JNDI数据源时BLOB上的Quartz命中异常

拓拔迪
2023-03-14

我有一个spring启动的quartz scheduler应用程序,以前在默认的quartz数据源下运行良好。但是,在移动到使用JBOSS JNDI数据源之后,它在Oracle12数据库中的BLOB列上遇到了异常。

我有一个定制的REST API,它将调用quartz API来调度作业。应用程序在错误页面和log4j调试日志文件中都没有返回关于异常的太多信息。

下面是关于异常的错误页面:

在我的log4j日志文件中也没有例外。

我试过的:

  1. 最初,我使用的是spring boot石英起动器。但现在我将其更改为SchedulerFactoryBean。
  2. JBOSS JNDI数据源本身看起来很好,我还有其他使用相同JNDI数据源的特性/函数,到目前为止还不错。但请注意,这些函数不涉及带有BLOB列的表。

以下是我以前的quartz属性:

我当前得石英属性:

applicationContext-resources.xml中的当前Quartz配置:

<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>

我当前在JBOSS standalone.xml中的数据源配置:

    <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>

JBoss中的module.xml配置:

<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>

此外,我还在pom.xml中添加了这个c3p0依赖项,但不确定这是否重要。

共有1个答案

洪俊拔
2023-03-14

能够通过以下步骤解决问题:

对于JBoss:1。包括oracle jdbc模块的依赖项,其中该oracle jdbc模块是JBOSS中为ojdbc jar文件定制的模块。2.从pom.xml中排除oracle ojdbc jar。

参见quartz 2.2.1+JBoss EAP 6.4 ClassNotFoundException oracle.sql.blob的回答

对于WebLogic%1。在quartz属性配置中,设置org.quartz.jobstore.driverdelegateClass=org.quartz.impl.jdbcjobstore.WebLogicDelegate2。从pom.xml中排除oracle ojdbc jar

 类似资料:
  • 我希望创建使用JdbcStore的quartz作业,如Burt的示例中文档的集群部分所述。 该示例演示如何使用quartz.Properties文件配置quartz。 现在,我希望我的jdbc存储与我的grails应用程序是同一个数据库,这样我就有更少的设置可以重复。 那么,假设我在数据库中手动创建了所需的表,那么是否可以使用dataSource.groovy中配置的默认数据源和quartz插件呢

  • 无法像 spring 一样从注入的数据源获取连接,如文档(配置多个数据源)中所述,https://micronaut-projects.github.io/micronaut-sql/latest/guide/#:~:text=Configuring 多个数据源抛出

  • 2018-02-28 13:18:20.062警告15208--[restartedMain]ationConfigEmbeddedWebApplicationContext:上下文初始化过程中遇到异常-取消刷新尝试:org.springFramework.Beans.Factor.UnsatistifiedDependencyException:创建类路径资源[org/springFramewo

  • 我在学习http://martinabbott.azurewebsites.net/2016/06/11/fun-with-azure-functions-and-the-emotion-api/ 我在集成选项卡中有名为“图片”的Blob触发器存储容器。myblob路径是“图片/{名称}”没有定义输入。输出是DocumentDB。我已经验证访问密钥是正确的。 我想知道错误的原因是什么?与 Azur

  • 我在尝试运行此程序时遇到以下异常。我正在使用在线编译器。甚至在读取字符串后尝试使用nextLine(),但没有成功。 我得到了以下异常:输入客户名称:在线程“main”java中输入客户id异常。util。NoSuchElementException:在java中找不到行。util。扫描仪。nextLine(Scanner.java:1585)位于Main。main(main.java:12)

  • 我是数据库管理员的新手。我编写示例代码来读取Azure数据库管理员中的存储Blob。 它抛出错误: 我猜它在WASBS链接中没有附加SAS令牌,所以它没有读取数据的权限。 如何在wasbs链接中连接SAS。