簡體   English   中英

使用PostgreSQL的wildfly-SWARM中的連接池

[英]connection pool in wildfly-SWARM with postgresql

我正在使用postgres,wildfly-swarm,hibernate,而且我的交易是由bean管理的。

我的project-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之間的連接斷開(關閉DB,iptables丟棄數據包等,之后執行一些請求然后再次啟動DB或清除iptables丟棄規則)之后,DB正常了,但是Hibernate / swarm無法找到連接不再...有人可以告訴我我做錯了什么嗎?

編輯:添加堆棧跟蹤

2017-11-23 15:16:03.180錯誤[PgSinkTask.paymentResultToJPA.0] PgSinkTask.paymentResultToJPA.0:重試提交時發生異常::javax.persistence.PersistenceException:org.hibernate.exception.GenericJDBCException:無法獲取JDBC連接2017 -11-23 15:16:03.180錯誤[PgSinkTask.paymentResultToJPA.0] PgSinkTask.paymentResultToJPA.0:重試提交時發生異常:javax.persistence.PersistenceException:org.hibernate.exception.GenericJDBCException:無法在org上獲取JDBC連接。 org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1602)處的hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1692)org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl。 com.scheidtbachmann.fcs.idbt.datamart.sink.JPASinkTask.setConnectorStatus(JPASinkTask.java:297)上org.hibernate.jpa.spi.AbstractEntityManagerImpl.merge(AbstractEntityManagerImpl.java:1171)上的java:1608) .fcs。 com.scheidtbachmann.fcs.idbt.datamart.sink.JPASinkTask.flush(JPASinkTask.java:328)上的idbt.datamart.sink.JPASinkTask.errorHandler(JPASinkTask.java:423)com.scheidtbachmann.fcs.idbt.datamart。在com.scheidtbachmann.fcs.idbt.datamart.sink.JPASinkTask.run(JPASinkTask.java:144)處的sink.JPASinkTask.getRecord(JPASinkTask.java:182)在java.lang.Thread.run(Thread.java:748)在org.glassfish.enterprise.concurrent.ManagedThreadFactoryImpl $ ManagedThread.run(ManagedThreadFactoryImpl.java:250)上由:org.hibernate.exception.GenericJDBCException:無法在org.hibernate.exception.internal.StandardSQLExceptionConverter.convert( org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:109)上的StandardSQLExceptionConverter.java:47)org.org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:95)上的org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:109) .hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl.acquireConnectionIfNeeded(LogicalConnectionManagedImpl.java:90)在 org.hibernate.engine.jdbc上的org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl.getPhysicalConnection(LogicalConnectionManagedImpl.java:112)在org.hibernate.engine.jdbc.internal.StatementPreparerImpl.connection(StatementPreparerImpl.java:47) org.hibernate.engine.jdbc.internal.StatementPreparerImpl $ StatementPreparationTemplate.prepareStatement(StatementPreparerImpl.java:172)上的internal.StatementPreparerImpl $ 5.doPrepare(StatementPreparerImpl.java:146)在org.hibernate.engine.jdbpreparerer。 (StatementPreparerImpl.java:148)在org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1929)在org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1898)在org.hibernate.loader.Loader。在org.hibernate.loader.Loader.doQuery(Loader.java:919)在org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:336)在org.hibernate.loader.Loader處的executeQueryStatement(Loader.java:1876) .doQueryAndInitializeNonLazy 在org.hibernate.loader.Loader.loadEntity(Loader.java:2204)在org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:60)在org.hibernate.loader的Collections(Loader.java:306) org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3967)的org.hibernate.event.internal.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:508)的.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:50) )在org.hibernate.event.internal.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:478)在org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:219)在org.hibernate.event.internal.DefaultLoadEventListener處。 org.hibernate.event.internal.DefaultLoadEventListener.doOnLoad(DefaultLoadEventListener.java:121)的org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:89)的proxyOrLoad(DefaultLoadEventListener.java:278)內部 org.org.hibernate.internal.SessionImpl.access $ 2600(SessionImpl.java:164)的sionImpl.fireLoad(SessionImpl.java:1129)org.org.org.hibernate.internal.SessionImpl $ IdentifierLoadAccessImpl.load(SessionImpl.java:2696) org.hibernate.event.internal.DefaultMergeEventListener.entityIsDetached(DefaultMergeEventListener.java:290)處的hibernate.internal.SessionImpl.get(SessionImpl.java:980)在org.hibernate.event.internal.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java: 170)位於org.hibernate.internal.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:69)位於org.hibernate.internal.SessionImpl.fireMerge(SessionImpl.java:840)位於org.hibernate.internal.SessionImpl.merge(SessionImpl org.hibernate.internal.SessionImpl.merge(SessionImpl.java:827)上的.java:822)org.hibernate.jpa.spi.AbstractEntityManagerImpl.merge(AbstractEntityManagerImpl.java:1161)上的... java省略了7個常見框架:java.sql.SQLException:javax.resource.ResourceException:IJ000460:檢查f時出錯 或在org.org.jboss.as.connector.subsystems.datasources.WildFlyDataSource.getConnection(WildFlyDataSource.java:66)處的org.jboss.jca.adapters.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:146)處的事務。 org.hibernate.internal.AbstractSessionImpl $ NonContextualJdbcConnectionAccess.obtainConnection(AbstractSessionImpl.java:386)處的hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl.java:122(DatasourceConnectionProviderImpl.java:122)在org.hibernate.resource.jdbc.internal處LogicalConnectionManagedImpl.acquireConnectionIfNeeded(LogicalConnectionManagedImpl.java:87)...省略了39個共同的框架造成原因:javax.resource.ResourceException:IJ000460:在org.jboss.jca.core.connectionmanager.tx.TxConnectionManagerImpl.getManagedConnection( TxConnectionManagerImpl.java:424)(位於org.jboss.jca.core.connectionmanager.AbstractConnectionManager.allocateConnection(AbstractConnectionManager.java:747)位於org.jboss.jca.adapter s.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:138)...省略了43個常見框架造成原因:javax.resource.ResourceException:IJ000459:事務未激活:tx = TransactionImple <ac,BasicAction:0:ffffc0a83842:6e69d97c :5a16d4f3:18狀態:ActionStatus.ABORTED>在org.jboss.jca.core.connectionmanager.tx.TxConnectionManagerImpl.getManagedConnection(TxConnectionManagerImpl.java:408)...省略了45個通用框架

編輯:添加了persistence.xml

<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>

Hibernate的內部連接池算法是基本的,用於開發和測試目的。 使用第三方池以獲得最佳性能和穩定性。

有關更多詳細信息,請參閱有關連接池的參考 我發現它很有用。

-

Hibernate中的C3P0連接池(配置)

  1. 獲取hibernate-c3p0.jar
    要將c3p0與Hibernate集成,您需要hibernate-c3p0.jar,可從JBoss存儲庫中獲取它。 pom.xml

    JBoss儲存庫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屬性要配置c3p0,請將c3p0配置詳細信息放入“ persistence.xml”中,如下所示:

     ... <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-JDBC3連接和語句池參考也將有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM