пул соединений в wildfly-SWARM с postgresql

Я использую postgres, wildfly-swarm, hibernate, и мои транзакции управляются bean-компонентами.

мой проект-defaults.yml источники данных: источники данных: часть

 Adadawdadsa:
   driver-name: postgresql
   connection-url: dadadasdadas
   user-name: aawdwaasda
   password: waddsawdas
   jta: true
   use-java-context: true
   pool-name: awdasdadwaadads
   min-pool-size: 10
   initial-pool-size: 15
   max-pool-size: 40
   pool-prefill: false
   validate-on-match: true
   use-fast-fail: false
   connection-checker-class-name: org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker
   check-valid-connection-sql: "SELECT 1;"
   exception-sorter-class-name: org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter
   connection-properties: CharacterEncoding/ UTF-8 UseUnicode/true

После имитации потери соединения между приложением и postgres (выключение БД, сброс пакетов iptables и т. Д., Выполнение некоторых запросов и повторный запуск БД или очистка правила сброса iptables), БД работает, но Hibernate / swarm не может найти соединение больше ... Может кто подскажет, что я делаю не так?

РЕДАКТИРОВАТЬ: добавление трассировки стека

РЕДАКТИРОВАТЬ: добавлен persistence.xml

Алгоритм пула внутренних соединений Hibernate находится в зачаточном состоянии и предназначен для разработки и тестирования. Используйте сторонний пул для лучшей производительности и стабильности.

<persistence-unit transaction-type="JTA" name="dadsadsadsa">
    <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
    <jta-data-source>java:jboss/datasources/dadsadsadsaas</jta-data-source>
    <properties>
        <property name="hibernate.show_sql" value="false"/>
        <property name="hibernate.id.new_generator_mappings" value="false"/>

        <property name="db.migration.action" value="validate-migrate"/>
        <property name="db.migration.sql.prefix" value="adadsadsadsa-"/>
    </properties>
</persistence-unit>

person fejko_drakula    schedule 22.11.2017    source источник
comment
@Ladicek к сожалению не работает :) добавил трассировку стека   -  person Ladicek    schedule 23.11.2017
comment
Не забыли ли вы о некоторых настройках в persistence.xml?   -  person fejko_drakula    schedule 23.11.2017
comment
@Yeheshuah, ничего, что касается пула соединений, не определено в persistence.xml, добавлен фрагмент. Что именно там нужно декларировать? Заранее спасибо, реально борюсь с этим.   -  person Yeheshuah    schedule 23.11.2017
comment
2017-11-23 15: 16: 03.180 ОШИБКА [PgSinkTask.paymentResultToJPA.0] PgSinkTask.paymentResultToJPA.0: исключение при повторной фиксации:: javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCExceptionD: Unbcable Connection to JBCxception -11-23 15: 16: 03.180 ОШИБКА [PgSinkTask.paymentResultToJPA.0] PgSinkTask.paymentResultToJPA.0: Исключение при повторной фиксации: javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: Невозможно подключиться к orgBC hibernate.jpa.spi.AbstractEntityManagerImpl.convert (AbstractEntityManagerImpl.java:1692) в org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert (AbstractEntityManagerImpl.java:1602) в org.hibernate. java: 1608) на org.hibernate.jpa.spi.AbstractEntityManagerImpl.merge (AbstractEntityManagerImpl.java:1171) на com.scheidtbachmann.fcs.idbt.datamart.sink.JPASinkTask.setConnecto rStatus (JPASinkTask.java:297) на com.scheidtbachmann.fcs.idbt.datamart.sink.JPASinkTask.errorHandler (JPASinkTask.java:423) на com.scheidtbachmann.fcs.idbt.datamart.sink.JPAS. java: 328) на com.scheidtbachmann.fcs.idbt.datamart.sink.JPASinkTask.getRecord (JPASinkTask.java:182) на com.scheidtbachmann.fcs.idbt.datamart.sink.JPASinkTask.run (JPASinkTask ).java. в java.lang.Thread.run (Thread.java:748) в org.glassfish.enterprise.concurrent.ManagedThreadFactoryImpl $ ManagedThread.run (ManagedThreadFactoryImpl.java:250) Вызвано: org.hibernate.exception.GenericJDBCException Соединение JDBC в org.hibernate.exception.internal.StandardSQLExceptionConverter.convert (StandardSQLExceptionConverter.java:47) в org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert (SqlExceptionHelper.java:109) .spi.SqlExceptionHelper.convert (SqlExceptionHelper.java:95) в org.hibernate.resource.jdbc.interna l.LogicalConnectionManagedImpl.acquireConnectionIfNeeded (LogicalConnectionManagedImpl.java:90) в org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl.getPhysicalConnection (LogicalConnectionManagedImpl.getPhysicalConnection (LogicalConnectionManagedImpl.getPhysicalConnection (LogicalConnectionManagedImpl.getPhysicalConnection). java: 47) на org.hibernate.engine.jdbc.internal.StatementPreparerImpl $ 5.doPrepare (StatementPreparerImpl.java:146) на org.hibernate.engine.jdbc.internal. StatementPreparerImpl $ StatementPreparationTemplate.prepareStatement (StatementPreparerImpl.java:172) в org.hibernate.engine.jdbc.internal.StatementPreparerImpl.prepareQueryStatement (StatementPreparerImpl.java:148) в org.hibernate.java: 148 в org.hibernate.loader.Loader.executeQueryStatement (Loader.java:1898) в org.hibernate.loader.Loader.executeQueryStatement (Loader.java:1876) в org.hibernate.loader.Loader.doQuery (Loader.java:919 ) в org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections (Loader.java:336) в org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections (Loader.java:306) в org.hnateo. 2204) в org.hibernate.loader.entity.AbstractEntityLoader.load (AbstractEntityLoader.java:60) в org.hibernate.loader.entity.AbstractEntityLoader.load (AbstractEntityLoader.java:50) в org.hibernate.bisterEntity.Antity. .load (Ab stractEntityPersister.java:3967) в org.hibernate.event.internal.DefaultLoadEventListener.loadFromDatasource (DefaultLoadEventListener.java:508) в org.hibernate.event.internal.DefaultLoadEventListener.doLovent.hibernate.defaultLoadEventListener.doLovent. .internal.DefaultLoadEventListener.load (DefaultLoadEventListener.java:219) в org.hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad (DefaultLoadEventListener.java:278) в org.hibernate. ) в org.hibernate.event.internal.DefaultLoadEventListener.onLoad (DefaultLoadEventListener.java:89) в org.hibernate.internal.SessionImpl.fireLoad (SessionImpl.java:1129) в org.hibernate.internal.SessionImpl.access $ 26 .java: 164) в org.hibernate.internal.SessionImpl $ IdentifierLoadAccessImpl.load (SessionImpl.java:2696) в org.hibernate.internal.SessionImpl.get (SessionImpl.java:980) в org.hibernate .event.internal.DefaultMergeEventListener.entityIsDetached (DefaultMergeEventListener.java:290) в org.hibernate.event.internal.DefaultMergeEventListener.onMerge (DefaultMergeEventListener.java:170) в org.hibernate. : 69) в org.hibernate.internal.SessionImpl.fireMerge (SessionImpl.java:840) в org.hibernate.internal.SessionImpl.merge (SessionImpl.java:822) в org.hibernate.internal. SessionImpl.merge (SessionImpl.java:827) в org.hibernate.jpa.spi.AbstractEntityManagerImpl.merge (AbstractEntityManagerImpl.java:1161) ... 7 общих кадров пропущены Причина: java.sql.SQLException: javax.resception.Resource : IJ000460: Проверка ошибок для транзакции в org.jboss.jca.adapters.jdbc.WrapperDataSource.getConnection (WrapperDataSource.java:146) в org.jboss.as.connector.subsystems.datasources.WildFlyDataSource.getConnection (WildFlyDataSource.getConnection 66) в org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection (DatasourceConnectionProviderImpl.java:122) в org.hibernate.internal.AbstractSessionImpl $ NonContextualJdbcConnectionAccess.javaSessionImpl $ NonContextualJdbcConnectionAccess. .jdbc.internal.LogicalConnectionManagedImpl.acquireConnectionIfNeeded (LogicalConnectionManagedImpl.java:87) ... 39 общих кадров пропущено Причина: javax.resource.ResourceException: IJ000460: Ошибка checki ng для транзакции в org.jboss.jca.core.connectionmanager.tx.TxConnectionManagerImpl.getManagedConnection (TxConnectionManagerImpl.java:424) в org.jboss.jca.core.connectionmanager.AbstractConnectionManager.allocateConnection7 (AbstractConnectionManager.allocateConnection) или .jboss.jca.adapters.jdbc.WrapperDataSource.getConnection (WrapperDataSource.java:138) ... 43 общих кадра пропущены Причина: javax.resource.ResourceException: IJ000459: Транзакция неактивна: tx = TransactionImple ‹ac, BasicAction: 0: ffffc0a83842: 6e69d97c: 5a16d4f3: 18 status: ActionStatus.ABORTED> at org.jboss.jca.core.connectionmanager.tx.TxConnectionManagerImpl.getManagedConnection (TxConnectionManagerImpl.java общие:408 кадры опущены ...   -  person fejko_drakula    schedule 23.11.2017


Ответы (1)


Дополнительные сведения см. На странице Ссылка на пул подключений, пожалуйста. Я нашел это полезным.

Получите hibernate-c3p0.jar
Чтобы интегрировать c3p0 с Hibernate, вам понадобится hibernate-c3p0.jar, получите его из репозитория JBoss. pom.xml

Я тестировал нечто очень похожее с этими настройками: github.com/wildfly-swarm/wildfly-swarm/blob/master/fractions/, и я знаю, что это сработало. Может попробовать оттуда?

  1. Настройка свойств c3p0 Чтобы настроить c3p0, поместите детали конфигурации c3p0 в «persistence.xml», как показано ниже:

    JBoss repository http://repository.jboss.org/nexus/content/groups/public/

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>3.6.3.Final</version>
    </dependency>
    
    <!-- Hibernate c3p0 connection pool -->
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-c3p0</artifactId>
        <version>3.6.3.Final</version>
    </dependency>
    

  2. Возможно, справка по c3p0 - JDBC3 Connection and Statement Pooling также будет полезна.

    ...
    <properties>
      <!-- Configuring JDBC properties -->
      <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/jpa_example" />
      <property name="javax.persistence.jdbc.user" value="root" />
      <property name="javax.persistence.jdbc.password" value="my_root_password" />
      <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
    
      <!-- Hibernate properties -->
      <property name="hibernate.show_sql" value="true" />
      <property name="hibernate.format_sql" value="true" />
      <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" />
      <property name="hibernate.hbm2ddl.auto" value="validate" />
    
      <!-- Configuring Connection Pool -->
      <property name="hibernate.c3p0.min_size" value="5" />
      <property name="hibernate.c3p0.max_size" value="20" />
      <property name="hibernate.c3p0.timeout" value="500" />
      <property name="hibernate.c3p0.max_statements" value="50" />
      <property name="hibernate.c3p0.idle_test_period" value="2000" />
    </properties>
    

Пул соединений C3P0 в Hibernate (настройка)

person Yeheshuah    schedule 23.11.2017