Ho una domanda sul contesto config nella Tomcat 8. I migrazione progetto dal Tomcat 7-8 e hanno problema insolito: se il cambiamento non in config ho preso un errore:Migrazione a Tomcat 8: InstanceAlreadyExistsException datasource
"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.BasicDataS[email protected]]
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"
Parte del contesto:
<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&characterEncoding=UTF-8&profileSQL=false&autoSlowLog=false&slowQueryThresholdMillis=100&autoReconnect=true"/>
Quindi, è lavori in Tomcat 7 senza alcun problema. In Tomcat 8 posso risolvere questo problema in 2 modi:
- Aggiungendo a risorsa:
singleton = "false";
- Aggiungendo a risorsa:
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
Se ho capito chiaramente Tomcat crea origine dati per la mia app e per jmx, ma in Tomcat 7 era un singolo oggetto, in Tomcat 8 doveva essere diverso. Quindi la mia domanda è: perché questa situazione è accaduta? Non sono riuscito a trovare alcuna informazione su questo cambiamento nella documentazione. E sono interessante ciò che è meglio: creare un'unica origine dati (penso di sì) o crearne diversi in fabbrica.
Quali sono le versioni tomcat 7 (da) e tomcat 8 (a)? Puoi anche aggiungere il tuo web.xml? La tua applicazione utilizza la dichiarazione sopra menzionata nel suo proprio file context.xml (META-INF)? In caso affermativo, puoi pubblicare questo? Btw quando si usa una risorsa JDBC, singleton deve essere "true" – swinkler