首页 > 解决方案 > Spring Boot:无法查找数据源

问题描述

我在 Spring Boot 上运行需要查找数据源的应用程序框架 (jbpm)。我面临以下错误:

    java.lang.RuntimeException: Unable to look up data source: java:jboss/datasources/ExampleDS - Need to specify class name in environment or system property, or in an application resource file: java.naming.factory.initial
        at org.jbpm.process.workitem.executesql.ExecuteSqlWorkItemHandler.<init>(ExecuteSqlWorkItemHandler.java:83) ~[execute-sql-workitem-7.52.0.Final.jar:7.52.0.Final]
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:na]

我在 application.properties 中有以下属性:

    spring.datasource.username=sa
    spring.datasource.password=sa
    spring.datasource.url=jdbc:h2:mem:testdb
    spring.datasource.driver-class-name=org.h2.Driver
    
    #hibernate configuration
    spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect

我还在我的配置类中添加了以下内容:

    @Bean
    public DataSource jndiDataSource() throws IllegalArgumentException, NamingException {
            JndiObjectFactoryBean bean = new JndiObjectFactoryBean();
            bean.setJndiName("java:jboss/datasources/ExampleDS");
            bean.setProxyInterface(DataSource.class);
            bean.setLookupOnStartup(false);
            bean.afterPropertiesSet();
            return (DataSource) bean.getObject();
    }

我检查了 jbpm 处理程序的代码: https ://github.com/kiegroup/jbpm-work-items/blob/main/execute-sql-workitem/src/main/java/org/jbpm/process/workitem/ executesql/ExecuteSqlWorkItemHandler.java#L79 我看到这是进行查找的代码:

    this.ds = InitialContext.doLookup(dataSourceName);

我的代码/配置中缺少什么?谢谢

编辑:这是 pom.xml 的核心部分:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.2.10.RELEASE</version>
</parent>

<properties>
    <version.org.kie>7.52.0.Final</version.org.kie>
    <maven.compiler.target>1.8</maven.compiler.target>
    <maven.compiler.source>1.8</maven.compiler.source>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <narayana.version>5.9.0.Final</narayana.version>
    <fabric8.version>3.5.40</fabric8.version>
</properties>

<dependencies>

    <dependency>
        <groupId>org.kie</groupId>
        <artifactId>kie-server-spring-boot-starter</artifactId>
        <version>${version.org.kie}</version>
    </dependency>
    <dependency>
        <groupId>org.jbpm.contrib</groupId>
        <artifactId>execute-sql-workitem</artifactId>
        <version>${version.org.kie}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>org.hsqldb</groupId>
        <artifactId>hsqldb</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

标签: spring-bootjbpm

解决方案


推荐阅读