【发布时间】:2015-03-19 17:58:21
【问题描述】:
当我使用 IntelliJ 14.0 将 Web 应用程序部署到本地 Apache Tomcat 实例时收到错误消息。我正在使用 Spring Boot 1.2.1.RELEASE 和 JNDI 连接。
我的 application.yaml 文件的内容如下所示:
spring:
profiles:
active: production
---
spring:
profiles: development
datasource:
platform: h2
---
spring:
profiles: production
datasource:
jndi-name: java:/comp/env/jdbc/teams
platform: mysql
jpa:
hibernate:
ddl-auto: create-drop
我的配置文件 Application.java 如下所示:
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
我使用的是 Apache Tomcat 8.0.15,并在 context.xml 文件中配置了 JNDI 连接。
<Resource name="jdbc/teams" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" username="***" password="***" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/teams"/>
我正在使用 IntelliJ 14.0 使用生产配置文件将我的应用程序本地部署到 Apache Tomcat。
当我尝试部署应用程序时收到的错误如下:
org.springframework.jmx.export.UnableToRegisterMBeanException:无法使用键“dataSource”注册 MBean [org.apache.tomcat.dbcp.dbcp2.BasicDataSource@4f83492a];嵌套异常是 javax.management.InstanceAlreadyExistsException: Catalina:type=DataSource,host=localhost,context=/project,class=javax.sql.DataSource,name="jdbc/teams"
应用程序的配置方式可能有什么问题?
【问题讨论】:
-
你能发布完整的堆栈跟踪吗?我认为您可以通过将
spring.jmx.enabled设置为false来解决此问题 -
我修改了 application.yaml 文件,它现在可以工作了。我添加了 spring.jmx.enabled 和 spring.jpa.database-platform 属性。弹簧:配置文件:活动:生产---弹簧:配置文件:开发数据源:平台:h2 ---弹簧:配置文件:生产数据源:jndi-name:java:/comp/env/jdbc/teams平台:mysql jpa:休眠: ddl-auto: create-drop database-platform: org.hibernate.dialect.MySQL5Dialect jmx: enabled: false
标签: java spring spring-boot jndi