jboss wildfly datasource-Verbindung nicht - Nicht verwaltet-verbindungen innerhalb konfiguriert blocking-timeout
Ich habe einen jboss wildfly server mit einer mysql-Datenbank über ein datasource-Konfiguration auf dem app-server.
Ihn anrufen einiger Zeit, dass die mysql-Datenbank ist nicht zugänglich für eine gewisse Zeit (netework problem etc...), wenn der mysql ist nicht erreichbar, ich erhalte in den logs die Meldung :
09:42:30,015 ERROR [org.jboss.seam.async.AsynchronousExceptionHandler] (4pm_services_QuartzScheduler_Worker-4) Exception thrown whilst executing asynchronous call: java.
lang.RuntimeException: javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: Cannot open connection
dies ist zu erwarten, da dein mysql ist nicht verfügbar, in diesem moment, das porblem ist, dass wenn der mysql-server mal wieder online kommt der Fehler weiterhin besteht, und der jboss-server ist nicht in der Lage zu bekommen, eine gültige aus dem Verbindungs-pool.
Habe ich:
wildfly 8.1
mysql 5.5
verwenden JPA zur comunicating mit Datenbank
hier ist die datasource-Konfiguration:
<datasource jta="true" jndi-name="java:jboss/services_DS" pool-name="fourPmDSServices" enabled="true" use-java-context="true">
<connection-url>jdbc:mysql://192.168.10.110:3306/FOUR_PM__SERVICES?useUnicode=true&characterEncoding=UTF-8</connection-url>
<driver>mysql</driver>
<new-connection-sql>select 1</new-connection-sql>
<transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>
<pool>
<min-pool-size>1</min-pool-size>
<max-pool-size>5</max-pool-size>
<prefill>true</prefill>
<use-strict-min>false</use-strict-min>
</pool>
<security>
<user-name>*********</user-name>
<password>*********</password>
</security>
<validation>
<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker"/>
<check-valid-connection-sql>select 1</check-valid-connection-sql>
<stale-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLStaleConnectionChecker"/>
<exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter"/>
</validation>
<statement>
<prepared-statement-cache-size>10</prepared-statement-cache-size>
<share-prepared-statements>true</share-prepared-statements>
</statement>
</datasource>
Und hier ist der komplette stack-trace des Fehlers:
00:00:00,017 WARN [org.hibernate.util.JDBCExceptionReporter] (4pm_services_QuartzScheduler_Worker-2) SQL Error: 0, SQLState: null
00:00:00,018 ERROR [org.hibernate.util.JDBCExceptionReporter] (4pm_services_QuartzScheduler_Worker-2) javax.resource.ResourceException: IJ000453: Unable to get managed connection for java:jboss/services_DS
00:00:00,018 ERROR [org.jboss.seam.async.AsynchronousExceptionHandler] (4pm_services_QuartzScheduler_Worker-2) Exception thrown whilst executing asynchronous call: java.lang.RuntimeException: javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: Cannot open connection
at si.arctur.fourPmServices.scheduleJobs.QuartzJobBase.executeInternal(QuartzJobBase.java:91) [4pm_services-ejb.jar:]
at si.arctur.fourPmServices.scheduleJobs.QuartzJobBase.schedule(QuartzJobBase.java:76) [4pm_services-ejb.jar:]
at sun.reflect.GeneratedMethodAccessor98.invoke(Unknown Source) [:1.6.0_32]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.6.0_32]
at java.lang.reflect.Method.invoke(Method.java:622) [rt.jar:1.6.0_32]
at org.jboss.seam.util.Reflections.invoke(Reflections.java:22) [jboss-seam.jar:2.2.2.Final]
at org.jboss.seam.intercept.RootInvocationContext.proceed(RootInvocationContext.java:32) [jboss-seam.jar:2.2.2.Final]
at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:56) [jboss-seam.jar:2.2.2.Final]
at org.jboss.seam.transaction.RollbackInterceptor.aroundInvoke(RollbackInterceptor.java:28) [jboss-seam.jar:2.2.2.Final]
at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68) [jboss-seam.jar:2.2.2.Final]
at org.jboss.seam.core.BijectionInterceptor.aroundInvoke(BijectionInterceptor.java:77) [jboss-seam.jar:2.2.2.Final]
at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68) [jboss-seam.jar:2.2.2.Final]
at org.jboss.seam.core.MethodContextInterceptor.aroundInvoke(MethodContextInterceptor.java:44) [jboss-seam.jar:2.2.2.Final]
at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68) [jboss-seam.jar:2.2.2.Final]
at org.jboss.seam.async.AsynchronousInterceptor.aroundInvoke(AsynchronousInterceptor.java:52) [jboss-seam.jar:2.2.2.Final]
at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68) [jboss-seam.jar:2.2.2.Final]
at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:107) [jboss-seam.jar:2.2.2.Final]
at org.jboss.seam.intercept.JavaBeanInterceptor.interceptInvocation(JavaBeanInterceptor.java:185) [jboss-seam.jar:2.2.2.Final]
at org.jboss.seam.intercept.JavaBeanInterceptor.invoke(JavaBeanInterceptor.java:103) [jboss-seam.jar:2.2.2.Final]
at si.arctur.fourPmServices.scheduleJobs.emailSender.MailChecker_$$_javassist_seam_2.schedule(MailChecker_$$_javassist_seam_2.java) [4pm_services-ejb.jar:]
at sun.reflect.GeneratedMethodAccessor104.invoke(Unknown Source) [:1.6.0_32]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.6.0_32]
at java.lang.reflect.Method.invoke(Method.java:622) [rt.jar:1.6.0_32]
at org.jboss.seam.util.Reflections.invoke(Reflections.java:22) [jboss-seam.jar:2.2.2.Final]
at org.jboss.seam.util.Reflections.invokeAndWrap(Reflections.java:144) [jboss-seam.jar:2.2.2.Final]
at org.jboss.seam.async.AsynchronousInvocation$1.process(AsynchronousInvocation.java:62) [jboss-seam.jar:2.2.2.Final]
at org.jboss.seam.async.Asynchronous$ContextualAsynchronousRequest.run(Asynchronous.java:80) [jboss-seam.jar:2.2.2.Final]
at org.jboss.seam.async.AsynchronousInvocation.execute(AsynchronousInvocation.java:44) [jboss-seam.jar:2.2.2.Final]
at org.jboss.seam.async.QuartzDispatcher$QuartzJob.execute(QuartzDispatcher.java:243) [jboss-seam.jar:2.2.2.Final]
at org.quartz.core.JobRunShell.run(JobRunShell.java:202) [quartz.jar:1.6.0]
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:529) [quartz.jar:1.6.0]
Caused by: javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: Cannot open connection
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1389) [hibernate-core.jar:3.6.10.Final]
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1317) [hibernate-core.jar:3.6.10.Final]
at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:255) [hibernate-core.jar:3.6.10.Final]
at si.arctur.fourPmServices.scheduleJobs.emailSender.MailChecker.checkQueue(MailChecker.java:37) [4pm_services-ejb.jar:]
at si.arctur.fourPmServices.scheduleJobs.emailSender.MailChecker.execute(MailChecker.java:26) [4pm_services-ejb.jar:]
at si.arctur.fourPmServices.scheduleJobs.QuartzJobBase$TransactionalWork.work(QuartzJobBase.java:144) [4pm_services-ejb.jar:]
at org.jboss.seam.util.Work.workInTransaction(Work.java:61) [jboss-seam.jar:2.2.2.Final]
at si.arctur.fourPmServices.scheduleJobs.QuartzJobBase.executeInternal(QuartzJobBase.java:89) [4pm_services-ejb.jar:]
... 30 more
Caused by: org.hibernate.exception.GenericJDBCException: Cannot open connection
at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:140) [hibernate-core.jar:3.6.10.Final]
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:128) [hibernate-core.jar:3.6.10.Final]
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66) [hibernate-core.jar:3.6.10.Final]
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:52) [hibernate-core.jar:3.6.10.Final]
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:449) [hibernate-core.jar:3.6.10.Final]
at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:167) [hibernate-core.jar:3.6.10.Final]
at org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:161) [hibernate-core.jar:3.6.10.Final]
at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1700) [hibernate-core.jar:3.6.10.Final]
at org.hibernate.loader.Loader.doQuery(Loader.java:801) [hibernate-core.jar:3.6.10.Final]
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:274) [hibernate-core.jar:3.6.10.Final]
at org.hibernate.loader.Loader.doList(Loader.java:2542) [hibernate-core.jar:3.6.10.Final]
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2276) [hibernate-core.jar:3.6.10.Final]
at org.hibernate.loader.Loader.list(Loader.java:2271) [hibernate-core.jar:3.6.10.Final]
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:459) [hibernate-core.jar:3.6.10.Final]
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:365) [hibernate-core.jar:3.6.10.Final]
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:196) [hibernate-core.jar:3.6.10.Final]
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1268) [hibernate-core.jar:3.6.10.Final]
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:102) [hibernate-core.jar:3.6.10.Final]
at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:246) [hibernate-core.jar:3.6.10.Final]
... 35 more
Caused by: java.sql.SQLException: javax.resource.ResourceException: IJ000453: Unable to get managed connection for java:jboss/services_DS
at org.jboss.jca.adapters.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:137)
at org.hibernate.ejb.connection.InjectedDataSourceConnectionProvider.getConnection(InjectedDataSourceConnectionProvider.java:71) [hibernate-core.jar:3.6.10.Final]
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446) [hibernate-core.jar:3.6.10.Final]
... 49 more
Caused by: javax.resource.ResourceException: IJ000453: Unable to get managed connection for java:jboss/services_DS
at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.getManagedConnection(AbstractConnectionManager.java:390)
at org.jboss.jca.core.connectionmanager.tx.TxConnectionManagerImpl.getManagedConnection(TxConnectionManagerImpl.java:368)
at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.allocateConnection(AbstractConnectionManager.java:464)
at org.jboss.jca.adapters.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:129)
... 51 more
Caused by: javax.resource.ResourceException: IJ000655: No managed connections available within configured blocking timeout (30000 [ms])
at org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreArrayListManagedConnectionPool.getConnection(SemaphoreArrayListManagedConnectionPool.java:377)
at org.jboss.jca.core.connectionmanager.pool.AbstractPool.getTransactionNewConnection(AbstractPool.java:495)
at org.jboss.jca.core.connectionmanager.pool.AbstractPool.getConnection(AbstractPool.java:374)
at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.getManagedConnection(AbstractConnectionManager.java:329)
... 54 more
- könnten Sie Ihre Probleme lösen bereits? Haben Sie sich Gedanken über mein Angebot bezüglich VPN-support, indem Sie einige details hier?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sieht es aus wie Sie benötigen, um zu definieren, einen flush Strategie Sie fehlgeschlagene verbindungen.
überprüfen Sie die "flush-Strategie" param.
Ein guter Startpunkt ist hier:
https://docs.jboss.org/author/display/WFLY8/DataSource+Konfiguration
Auf die Sie verweisen diese XSD:
http://www.ironjacamar.org/doc/schema/datasources_1_1.xsd
Und der XSD-Beschreibung ist hier:
http://www.ironjacamar.org/doc/userguide/1.2/en-US/html_single/index.html#deployingds
In deinem Fall würde ich versuchen, herauszufinden, die Netzwerk-Probleme.
Unabhängig von diesem. Ich würde in deinem Fall (mit der schlechten Verbindung Probleme) bündig meine komplette Verbindungs-pool:
flush-Strategie => EntirePool
Glück auf die Behebung solch eine merkwürdige Frage
Was Bedeutet Die Meldung Keine Verwaltete Verbindung bedeuten?
Es bedeutet, dass alle möglichen verbindungen zu der db im Einsatz sind und/oder dass ein thread timed out waiting for a connection zu öffnen.
Mögliche Lösungen:
Erhöhen Sie Ihre Verbindungs-pool-Größe
Hinzufügen
<max-pool-size>whatever</max-pool-size>
Ihren ds.xml Datei zu erhöhen
die Anzahl von verbindungen zur Verfügung. Der Standardwert ist 20
Gibt es ein Attribut
MaxConnectionsInUse
sichtbar auf die jmx-Konsole gegen die
ManagedConnectionPool
kann Ihnen helfen, zu verstehen, wie viele verbindungen Sie wirklich brauchen.
Sagen, deine threads länger warten für eine Verbindung zu öffnen,
Hinzufügen
<blocking-timeout-millis>whatever</blocking-timeout-millis>
Ihren ds.xml Datei erhöhen die Länge der Zeit zu warten. Der Standardwert ist 30000 (5000 vor der JBoss-3.2.4) milli-Sekunden.
Stellen Sie sicher, dass Sie richtig schließen von geöffneten verbindungen
Traf ich dieses Problem auch. Aber, meine Verbindung funktionierte kurz und dann aufgehört zu arbeiten, nachdem eine Reihe von Anfragen. Es stellte sich heraus, dass eine nicht geschlossene Verbindung zu der Datenbank, die verursacht verbindungen verbraucht werden und schließlich anstrengend connection pool. Einfach Erhöhung der Verbindungs-pool-size wird nur die eventuelle Verzögerung Fehler. Sie müssen identifizieren, wo Sie nicht richtig schließen Sie Ihre Verbindung, um dieses Problem zu beheben.
debug="true" error="true" in der JCA in standalone-ha.xml
Stellen Sie sicher, dass es in der jca subsystem und set debug="true".
...
...
Dann im server.melden Sie es schreiben wird, wenn alle verbindungen nicht schließen kann mit stack-trace-code.
Hatte ich ein ähnliches Problem habe ich Fix mit der Antwort, dass @Hart gesagt. Ich erhöhte die maxpoolsize von 20 bis 100 und das problem ist Weg.
Verursacht durch: javax.Ressource.ResourceException: IJ000655: Nein verwaltete verbindungen innerhalb konfiguriert blocking-timeout (30000 [ms])
Diese Meldung sagt, das konfiguriert pool kann keine Verbindung innerhalb der konfigurierten timeout 3sec (3000msec). Entweder Ihr Schwimmbad ist zu niedrig oder Ihre verbindungen nicht geschlossen werden, nach der Benutzung, vielleicht steigt die pool-Größe zu arbeiten.
Überprüfen Sie auch die enge Verbindung von JBoss.
Verursacht durch: javax.Ressource.ResourceException: IJ000453: Nicht verwaltet-Verbindung für java:jboss/services_DS
Es scheint, dass ein problem in Bezug auf einige Datenbank-Tabelle und java-Konfiguration wie hbm.xml. Für jede Tabelle den Typ-parameter der java-api öffnet eine Verbindung zur Datenbank oder durch einige andere Umwelt-Konfiguration.
Entnehmen Sie bitte folgenden link, hier bekommen Sie gleiche problem mit Lösung.
https://developer.jboss.org/thread/211940
http://www.coderanch.com/t/556721/JBoss/Jboss-Datasource-configured-correctly-unable