java – 迁移到Tomcat 8:InstanceAlreadyExistsException数据源

前端之家收集整理的这篇文章主要介绍了java – 迁移到Tomcat 8:InstanceAlreadyExistsException数据源前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个关于Tomcat 8中的上下文配置的问题.我将项目从Tomcat 7迁移到8并且有异常的问题:如果配置中没有改变我发现错误
"2015-02-03 12:05:48,310 FIRST_ADMIN ERROR web.context.ContextLoader:331 
-> Context initialization Failed org.springframework.jmx.export.UnableToRegisterMBeanException: 
    Unable to register MBean [org.apache.tomcat.dbcp.dbcp2.BasicDataSource@434990dd]
     with key 'dataSource'; nested exception is 
    javax.management.InstanceAlreadyExistsException:  
    Catalina:type=DataSource,host=localhost,context=/first-
    admin,class=javax.sql.DataSource,name="jdbc/datasource/first"

上下文的一部分:

<Resource name="jdbc/datasource/first"
              auth="Container"
              type="javax.sql.DataSource"
              poolPreparedStatements="true"
              initialSize="25"
              maxActive="100"
              maxIdle="100"
              minIdle="25"
              username="us"
              password="pa"
              driverClassName="com.MysqL.jdbc.Driver"
              validationQuery="select 1"
              testOnBorrow="true"
          url="jdbc:MysqL://localhost:3306/firstproject?useUnicode=true&amp;characterEncoding=UTF-8&amp;profilesql=false&amp;autoSlowLog=false&amp;slowQueryThresholdMillis=100&amp;autoReconnect=true"/>

所以,它在tomcat 7中没有任何问题.在Tomcat 8中,我可以通过两种方式解决这个问题:

>加入资源:singleton =“false”;
>通过添加到资源:factory =“org.apache.tomcat.jdbc.pool.DataSourceFactory”

如果我明白tomcat为我的应用程序和jmx创建数据源,但在Tomcat 7中,它是单个对象,在Tomcat 8中它必须是不同的.所以我的问题是为什么这种情况发生了?我在文档中找不到有关此更改的任何信息.我有趣的是更好:创建单个数据源(我想是这样),或者通过工厂创建几个数据源.

解决方法

我有同样的错误,并通过将registration =“ignoreExisting”添加到mbean-export部分来解决它:
<context:mbean-export server="mbeanServer" default-domain="mydomain" registration="ignoreExisting" />

猜你在找的Java相关文章