Oracle10g 使用带有JNDI Oracle数据源的独立Tomcat进行Spring引导

Oracle10g 使用带有JNDI Oracle数据源的独立Tomcat进行Spring引导,oracle10g,spring-boot,jndi,tomcat8,Oracle10g,Spring Boot,Jndi,Tomcat8,我有一个新的SpringBoot(1.2.1.RELEASE)web/Jpa应用程序,我想连接到JNDI数据源(独立Tomcat的context.xml中定义的Oracle数据库) 然而,当我尝试这样做时,我总是得到以下异常: Unable to register MBean [org.apache.tomcat.dbcp.dbcp2.BasicDataSource@102f8ea9] with key 'dataSource'; nested exception is javax.manage

我有一个新的SpringBoot(1.2.1.RELEASE)web/Jpa应用程序,我想连接到JNDI数据源(独立Tomcat的context.xml中定义的Oracle数据库)

然而,当我尝试这样做时,我总是得到以下异常:

Unable to register MBean [org.apache.tomcat.dbcp.dbcp2.BasicDataSource@102f8ea9] with key 'dataSource'; nested exception is javax.management.InstanceAlreadyExistsException: Catalina:type=DataSource,class=javax.sql.DataSource,name="jdbc/npacore"
我的pom.xml如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.springframework</groupId>
    <artifactId>bootwar</artifactId>
    <version>0.1.0</version>
    <packaging>war</packaging>

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

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.hibernate</groupId>
                    <artifactId>hibernate-entitymanager</artifactId>
                </exclusion>
                <exclusion>
                    <artifactId>tomcat-jdbc</artifactId>
                    <groupId>org.apache.tomcat</groupId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
        </dependency>

        <!-- <dependency> -->
        <!-- <groupId>oracle.ojdbc</groupId> -->
        <!-- <artifactId>ojdbc</artifactId> -->
        <!-- <version>6</version> -->

        <!-- </dependency> -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
    </dependencies>


    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <start-class>hello.Application</start-class>
        <java.version>1.7</java.version>
    </properties>

    <build>
        <finalName>${artifactId}</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

    <repositories>
        <repository>
            <id>spring-releases</id>
            <name>Spring Releases</name>
            <url>http://repo.spring.io/libs-release</url>
        </repository>
    </repositories>

    <pluginRepositories>
        <pluginRepository>
            <id>spring-releases</id>
            <name>Spring Releases</name>
            <url>http://repo.spring.io/libs-release</url>
        </pluginRepository>
    </pluginRepositories>

</project>
我在这里关注了与MySQL非常相似的博客:

您在Spring Boot中遇到的问题。您可以通过将
spring.jmx.enabled
设置为
false
来解决这个问题

spring.datasource.jndi-name=java:/comp/env/jdbc/npacore
spring.datasource.driverClassName=oracle.jdbc.driver.OracleDriver
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.Oracle10gDialect