Когда вы используете Grails для управления соединением MySQL, вам необходимо (чтобы обрабатывать пересоединения) раздел свойств по строкам этого в вашем DataSource. заводной:следует объединить = true или pooled = false для Grails с использованием ресурса базы данных tomcat через JNDI
dataSource {
pooled = true
driverClassName = "com.mysql.jdbc.Driver"
dialect = "org.hibernate.dialect.MySQL5InnoDBDialect"
properties {
maxActive = -1
minEvictableIdleTimeMillis=1800000
timeBetweenEvictionRunsMillis=1800000
numTestsPerEvictionRun=3
testOnBorrow=true
testWhileIdle=true
testOnReturn=true
validationQuery="SELECT 1"
}
environments {
production{
dataSource {
dbCreate = "upate"
url = "jdbc:mysql://127.0.0.1:3306/mydb"
username = "myuser"
password = "mypass"
}
}
При переходе на использование пула соединений Tomcat, большинство примеров дают это:
production {
dataSource {
dbCreate = "update"
jndiName = "java:comp/env/revolve"
}
Вопрос 1
Должен ли пул = true или false в DataSource.grovvy для такого типа соединения (т. используя tomcat), или это имеет значение? Есть сообщения, которые говорят, что это ложь, сообщения говорят, что это должно быть правдой, а некоторые не указали это. Если установлено значение «Истина», это означает, что существует пул пулов, но это то, что рекомендуется большинством примеров.
Вопрос 2
игнорировали ли раздел свойства? Если нет, укажите рекомендуемые поля. Из моей пробной версии и ошибки свойства, похоже, игнорируются, в отличие от сообщений, таких как this one.
E.g. validationQuery = "SELECT 1" в свойствах DataSource.java, кажется, игнорируется при использовании JNDI. То есть если я перезапущу БД, приложение Tomcat навсегда потеряло соединение с БД. Если добавить эту же строку в Tomcat context.xml Thusly:
<Resource name="revolve" auth="Container" type="javax.sql.DataSource"
maxActive="50" maxIdle="5" maxWait="10000"
username="myuser" password="mypass" driverClassName="com.mysql.jdbc.Driver"
validationquery="SELECT 1;"
url="jdbc:mysql://127.0.0.1:3306/mydb"/>
и перезапустить Tomcat, теперь, если я перезапустить базу данных, приложение на Tomcat продолжает работать.
Это означает, что раздел свойств источника данных в DataSource.groovy игнорируется при использовании пула соединений Tomcat.
В соответствии с этим ответом в приложении с использованием источника данных jndi, настроенном на сервере weblogic, следующее исключение никогда не должно происходить: weblogic.jdbc.extensions.PoolLimitSQLException. Что касается этого, не могли бы вы помочь в этом отношении? –