数据源问题:java.lang.ClassNotFoundException:org.springframework.jdbc.datasource.DriverManagerDataSource

问题描述

你好 Fuse 开发者

我是fuse world m的初学者,现在尝试开发JDBC项目,遇到问题希望大家帮我解决

1- 我将 Oracle JDBC 驱动程序添加到 EAP Fuse 服务器

Oracle JDBC Driver

2- 我创建了数据源并对其进行了测试

datasource

3- 骆驼语境

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="        http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd        http://camel.apache.org/schema/spring https://camel.apache.org/schema/spring/camel-spring.xsd">
    <bean
        class="org.springframework.jdbc.datasource.DriverManagerDataSource"
        destroy-method="close" id="dataSource">
        <property name="driverClassName" value="oracle.jdbc.OracleDriver"/>
        <property name="url" value="jdbc:oracle://192.168.56.205:1521/orcl"/>
        <property name="username" value="hr"/>
        <property name="password" value="hr"/>
    </bean>
    <camelContext id="spring-context" xmlns="http://camel.apache.org/schema/spring">
        <route id="_route1">
            <from id="_to1" uri="direct:HelloHR"/>
            <log id="_log1" message="======== Start Flow ======="/>
            <setProperty id="_setProperty1" propertyName="DbQuery">
                <simple>sql: select * from employees;</simple>
            </setProperty>
            <setBody id="_setBody1">
                <simple>{property.DbQuery}</simple>
            </setBody>
            <to id="_to2" uri="jdbc:dataSource"/>
            <log id="_log2" message="${body}"/>
        </route>
    </camelContext>
    <!-- Just add a demo to show how to bind a date source for camel in Spring-->
</beans>

4- pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.mycompany</groupId>
  <artifactId>camel-test-spring</artifactId>
  <version>1.0.0-SNAPSHOT</version>
  <packaging>war</packaging>
  <name>Fuse on EAP Camel Spring Application</name>
  <description>Fuse on EAP Camel Example using Spring</description>
  <properties>
    <version.jboss.arquillian>1.1.10.Final</version.jboss.arquillian>
    <maven.compiler.source>1.8</maven.compiler.source>
    <version.wildfly.arquillian>2.1.0.Final</version.wildfly.arquillian>
    <server.config>standalone-camel.xml</server.config>
    <version.maven.war.plugin>3.0.0</version.maven.war.plugin>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <version.wildfly.maven.plugin>1.2.0.Final</version.wildfly.maven.plugin>
    <maven.compiler.target>1.8</maven.compiler.target>
    <version.wildfly>7.1.0.GA-redhat-11</version.wildfly>
    <version.maven.surefire.plugin>2.20.1</version.maven.surefire.plugin>
    <jboss.home>${env.JBOSS_HOME}</jboss.home>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <version.maven.compiler.plugin>3.8.0</version.maven.compiler.plugin>
    <fuse.version>7.8.0.fuse-sb2-780038-redhat-00001</fuse.version>
  </properties>
  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc6</artifactId>
        <version>11.2.0.2.0</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>commons-dbcp</groupId>
        <artifactId>commons-dbcp</artifactId>
        <version>2.8.0</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-dbcp2</artifactId>
        <version>2.8.0</version>
      </dependency>
      <dependency>
        <groupId>org.geotools.jdbc</groupId>
        <artifactId>gt-jdbc-oracle</artifactId>
        <version>25.1.jre8</version>
      </dependency>
      <dependency>
        <groupId>oracle</groupId>
        <artifactId>oracle-jdbc</artifactId>
        <version>6</version>
      </dependency>
      <!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>5.3.8</version>
</dependency>
      <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-jdbc</artifactId>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-dao</artifactId>
        <version>2.0.8</version>
      </dependency>
      <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-jdbc</artifactId>
        <version>x.x.x</version>
      </dependency>
      <dependency>
        <groupId>org.jboss.redhat-fuse</groupId>
        <artifactId>fuse-eap-bom</artifactId>
        <version>${fuse.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.apache.camel</groupId>
      <artifactId>camel-core</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.jboss.spec.javax.servlet</groupId>
      <artifactId>jboss-servlet-api_3.1_spec</artifactId>
      <version>1.0.0.Final-redhat-1</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.jboss.arquillian.junit</groupId>
      <artifactId>arquillian-junit-container</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.camel</groupId>
      <artifactId>camel-josql</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.camel</groupId>
      <artifactId>camel-jdbc</artifactId>
      <version>2.23.2.fuse-780036-redhat-00001</version>
      <scope>provided</scope>
    </dependency>
  </dependencies>
  <repositories>
    <repository>
      <id>jboss-public-repository</id>
      <url>http://repository.jboss.org/nexus/content/groups/public/</url>
    </repository>
    <repository>
      <id>red-hat-ga-repository</id>
      <url>https://maven.repository.redhat.com/ga</url>
    </repository>
  </repositories>
  <build>
    <testResources>
      <testResource>
        <filtering>true</filtering>
        <directory>src/test/resources</directory>
      </testResource>
    </testResources>
    <finalName>${project.artifactId}</finalName>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>${version.maven.compiler.plugin}</version>
        <configuration>
          <source>${maven.compiler.source}</source>
          <target>${maven.compiler.target}</target>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <version>${version.maven.war.plugin}</version>
      </plugin>
      <plugin>
        <groupId>org.wildfly.plugins</groupId>
        <artifactId>wildfly-maven-plugin</artifactId>
        <version>${version.wildfly.maven.plugin}</version>
        <configuration>
          <version>${version.wildfly}</version>
          <serverConfig>${server.config}</serverConfig>
        </configuration>
      </plugin>
    </plugins>
  </build>
  <profiles>
    <profile>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>${version.maven.surefire.plugin}</version>
            <configuration>
              <skip>true</skip>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>arq-managed</id>
      <dependencies>
        <dependency>
          <groupId>org.wildfly.arquillian</groupId>
          <artifactId>wildfly-arquillian-container-managed</artifactId>
          <version>${version.wildfly.arquillian}</version>
          <scope>test</scope>
        </dependency>
      </dependencies>
    </profile>
    <profile>
      <id>arq-remote</id>
      <dependencies>
        <dependency>
          <groupId>org.wildfly.arquillian</groupId>
          <artifactId>wildfly-arquillian-container-remote</artifactId>
          <version>${version.wildfly.arquillian}</version>
          <scope>test</scope>
        </dependency>
      </dependencies>
    </profile>
    <profile>
      <id>jdk9+-build</id>
      <activation>
        <jdk>[9,)</jdk>
      </activation>
      <dependencies>
        <dependency>
          <groupId>javax.annotation</groupId>
          <artifactId>javax.annotation-api</artifactId>
          <version>1.3.1</version>
        </dependency>
        <dependency>
          <groupId>javax.xml.ws</groupId>
          <artifactId>jaxws-api</artifactId>
          <version>2.3.0</version>
          <exclusions>
            <exclusion>
              <artifactId>jaxb-api</artifactId>
              <groupId>javax.xml.bind</groupId>
            </exclusion>
          </exclusions>
        </dependency>
        <dependency>
          <groupId>jakarta.xml.bind</groupId>
          <artifactId>jakarta.xml.bind-api</artifactId>
          <version>2.3.2.redhat-00001</version>
        </dependency>
        <dependency>
          <groupId>com.sun.activation</groupId>
          <artifactId>javax.activation</artifactId>
          <version>1.2.0</version>
        </dependency>
        <dependency>
          <groupId>org.apache.geronimo.specs</groupId>
          <artifactId>geronimo-ws-Metadata_2.0_spec</artifactId>
          <version>1.1.3</version>
        </dependency>
        <dependency>
          <groupId>com.sun.xml.messaging.saaj</groupId>
          <artifactId>saaj-impl</artifactId>
        </dependency>
        <dependency>
          <groupId>org.apache.geronimo.specs</groupId>
          <artifactId>geronimo-jta_1.1_spec</artifactId>
        </dependency>
        <dependency>
          <groupId>org.jboss.spec.javax.rmi</groupId>
          <artifactId>jboss-rmi-api_1.0_spec</artifactId>
          <version>1.0.5.Final-redhat-1</version>
        </dependency>
      </dependencies>
    </profile>
    <profile>
      <id>jdk12+-build</id>
      <activation>
        <jdk>[12,)</jdk>
      </activation>
      <properties>
        <version.maven.war.plugin>3.2.2</version.maven.war.plugin>
      </properties>
    </profile>
  </profiles>
</project>

5-Maven 依赖

Maven dependencies

6- 引用的库

Referenced libraries

我的项目配置有哪些问题,我该如何解决? 最好的问候,

解决方法

commons-dbcpDriverManagerDataSource 并不是真正需要的,因为您已经将 DataSource 配置为由 EAP 容器管理。因此,您可以像这样使用 JNDI 查找替换 dataSource bean。

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName" value="java:jboss/OracleXADS" />
</bean>

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...