我有一个Spring-Boot应用程序,其dependencyManagement
如下:
<dependencyManagement>
<dependencies>
<dependency>
<!-- Import dependency management from Spring Boot -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.1.5.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
以及以下依赖关系
:
spring-boot-starter-jersey
spring-boot-starter-jdbc(exclusion:tomcat-jdbc)
HikariCP(version:3.3.1)
ojdbc7
我在 Tomcat 上配置了一个JNDI数据源如下:
<Resource name="jdbc/myDS"
type="javax.sql.DataSource"
driverClassName="oracle.jdbc.driver.OracleDriver"
username="Superuser"
password="secret"
url="jdbc:oracle:thin:@xxxDbX"
../>
在
.properties
文件中,我添加了以下属性:spring.datasource.type=org.apache.tomcat.jdbc.pool.DataSource
spring.datasource.jndi-name=jdbc/myDS
作为Spring-Boot,它能够从属性中配置一个DataSource,我让它这样做,并且不需要编写任何额外的DataSource代码。在独立的Tomcat中部署,它工作得非常完美。
从逻辑上讲,Spring Boot无法在嵌入式Tomcat中找到JNDI资源,并且在将应用作为Spring-Boot-Application启动时,我收到了以下错误提示:
***************************
APPLICATION FAILED TO START
***************************
Description:
Failed to bind properties under 'spring.datasource.type' to java.lang.Class<javax.sql.DataSource>:
Property: spring.datasource.type
Value: org.apache.tomcat.jdbc.pool.DataSource
Origin: class path resource [application.properties]:12:24
Reason: No converter found capable of converting from type [java.lang.String] to type [java.lang.Class<javax.sql.DataSource>]
Action:
Update your application's configuration
我希望能够启动应用程序作为 Spring-Boot-Application 并构建一个 war 文件,该文件可以部署在任何独立的 Tomcat 中。
如果要将应用程序作为 Spring-Boot-Application 启动,同时构建一个 war 文件部署到独立的 Tomcat 中,是否可以通过添加第二个数据源的 properties
来实现?还是我必须拥有第二个 .properties
文件?
.properties
文件中添加一些属性,以便Spring-Boot可以像为独立的Tomcat做的那样,使用这些属性自动配置数据源,用于嵌入式Tomcat。 - Meziane