Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate搜索获胜';t在关键Web服务上为我的数据编制索引_Hibernate_Jpa_Spring Boot_Hibernate Search_Pivotal Web Services - Fatal编程技术网

Hibernate搜索获胜';t在关键Web服务上为我的数据编制索引

Hibernate搜索获胜';t在关键Web服务上为我的数据编制索引,hibernate,jpa,spring-boot,hibernate-search,pivotal-web-services,Hibernate,Jpa,Spring Boot,Hibernate Search,Pivotal Web Services,我有一个集成Hibernate搜索的Spring Boot应用程序来索引我的JPA实体,在本地一切正常。我有以下组件在应用程序启动时创建索引: @Component class SearchIndexBuilder implements ApplicationListener<ApplicationReadyEvent>{ @PersistenceContext private EntityManager entityManager void onAppli

我有一个集成Hibernate搜索的Spring Boot应用程序来索引我的JPA实体,在本地一切正常。我有以下组件在应用程序启动时创建索引:

@Component
class SearchIndexBuilder implements ApplicationListener<ApplicationReadyEvent>{
    @PersistenceContext
    private EntityManager entityManager

    void onApplicationEvent(ApplicationReadyEvent event) {
        try {
            FullTextEntityManager fullTextEntityManager =
                Search.getFullTextEntityManager(entityManager);
            fullTextEntityManager.createIndexer().startAndWait()
        } catch (InterruptedException e) {
            System.out.println(
                "An error occurred trying to build the search index: " +
                        e.toString());
        }
    }
}
我尝试将我的ClearDB计划从Spark升级到Boost,这将DB上的最大连接数从4个增加到15个,但没有改变任何事情


你知道我遗漏了什么吗?

你可以试着在你的环境中调试“org.hibernate.jdbc.ConnectionManager”并跟踪连接打开和关闭语句。你能试着只索引一种类型,而不是让它并行索引所有类型(默认情况下)?这将消耗更少的连接。为什么要监听任何应用程序事件?我觉得这是不对的。我将用
@EventListener(ApplicationReadyEvent.class)index(){…}
替换该代码。您将索引准确地存储在哪里?如果能有更多的stacktrace来判断何时会发生这种情况,那也太好了。所以我修改了我的SearchIndexBuilder来扩展ApplicationListener。但在我的应用程序启动后,我仍然会遇到异常。我已经用完整的堆栈跟踪更新了我的问题。顺便说一下,我只是尝试禁用此事件侦听器,并在控制器请求上触发重新索引,我得到了完全相同的异常。因此,它似乎与MassIndexer所需的DB连接数以及PWS上的Tomcat所能提供的连接数有关。您可以尝试将“org.hibernate.jdbc.ConnectionManager”放在您的环境中进行调试,并跟踪连接的打开和关闭语句。您是否可以尝试只对一种类型进行索引,而不是让它并行索引所有类型(这是默认情况)?这将消耗更少的连接。为什么要监听任何应用程序事件?我觉得这是不对的。我将用
@EventListener(ApplicationReadyEvent.class)index(){…}
替换该代码。您将索引准确地存储在哪里?如果能有更多的stacktrace来判断何时会发生这种情况,那也太好了。所以我修改了我的SearchIndexBuilder来扩展ApplicationListener。但在我的应用程序启动后,我仍然会遇到异常。我已经用完整的堆栈跟踪更新了我的问题。顺便说一下,我只是尝试禁用此事件侦听器,并在控制器请求上触发重新索引,我得到了完全相同的异常。因此,它似乎与MassIndexer需要的DB连接数量有关,而与PWS上的Tomcat可以提供的连接数量有关。
2016-03-21T14:33:33.91+0100 [APP/0]      OUT org.hibernate.exception.GenericJDBCException: Could not open connection
2016-03-21T14:33:33.91+0100 [APP/0]      OUT    at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:54) ~[hibernate-core-4.3.11.Final.jar!/:4.3.11.Final]
2016-03-21T14:33:33.91+0100 [APP/0]      OUT    at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:126) ~[hibernate-core-4.3.11.Final.jar!/:4.3.11.Final]
2016-03-21T14:33:33.91+0100 [APP/0]      OUT    at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:112) ~[hibernate-core-4.3.11.Final.jar!/:4.3.11.Final]
2016-03-21T14:33:33.91+0100 [APP/0]      OUT    at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.obtainConnection(LogicalConnectionImpl.java:235) ~[hibernate-core-4.3.11.Final.jar!/:4.3.11.Final]
2016-03-21T14:33:33.91+0100 [APP/0]      OUT    at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.getConnection(LogicalConnectionImpl.java:171) ~[hibernate-core-4.3.11.Final.jar!/:4.3.11.Final]
2016-03-21T14:33:33.91+0100 [APP/0]      OUT    at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.doBegin(JdbcTransaction.java:67) ~[hibernate-core-4.3.11.Final.jar!/:4.3.11.Final]
2016-03-21T14:33:33.91+0100 [APP/0]      OUT    at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.begin(AbstractTransactionImpl.java:162) ~[hibernate-core-4.3.11.Final.jar!/:4.3.11.Final]
2016-03-21T14:33:33.91+0100 [APP/0]      OUT    at org.hibernate.search.batchindexing.impl.IdentifierConsumerDocumentProducer.run(IdentifierConsumerDocumentProducer.java:116) ~[hibernate-search-orm-4.5.3.Final.jar!/:4.5.3.Final]
2016-03-21T14:33:33.91+0100 [APP/0]      OUT    at org.hibernate.search.batchindexing.impl.OptionallyWrapInJTATransaction.runWithErrorHandler(OptionallyWrapInJTATransaction.java:111) ~[hibernate-search-orm-4.5.3.Final.jar!/:4.5.3.Final]
2016-03-21T14:33:33.91+0100 [APP/0]      OUT    at org.hibernate.search.batchindexing.impl.ErrorHandledRunnable.run(ErrorHandledRunnable.java:49) ~[hibernate-search-orm-4.5.3.Final.jar!/:4.5.3.Final]
2016-03-21T14:33:33.91+0100 [APP/0]      OUT    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) ~[na:1.8.0_73-]
2016-03-21T14:33:33.91+0100 [APP/0]      OUT    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) ~[na:1.8.0_73-]
2016-03-21T14:33:33.91+0100 [APP/0]      OUT    at java.lang.Thread.run(Thread.java:745) ~[na:1.8.0_73-]
2016-03-21T14:33:33.91+0100 [APP/0]      OUT Caused by: org.apache.tomcat.jdbc.pool.PoolExhaustedException: [Hibernate Search: entityloader-6] Timeout: Pool empty. Unable to fetch a connection in 30 seconds, none available[size:4; busy:4; idle:0; lastwait:30000].
2016-03-21T14:33:33.91+0100 [APP/0]      OUT    at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:681) ~[tomcat-jdbc-8.0.30.jar!/:na]
2016-03-21T14:33:33.91+0100 [APP/0]      OUT    at org.apache.tomcat.jdbc.pool.ConnectionPool.getConnection(ConnectionPool.java:185) ~[tomcat-jdbc-8.0.30.jar!/:na]
2016-03-21T14:33:33.91+0100 [APP/0]      OUT    at org.apache.tomcat.jdbc.pool.DataSourceProxy.getConnection(DataSourceProxy.java:127) ~[tomcat-jdbc-8.0.30.jar!/:na]
2016-03-21T14:33:33.91+0100 [APP/0]      OUT    at org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.java:139) ~[hibernate-core-4.3.11.Final.jar!/:4.3.11.Final]
2016-03-21T14:33:33.91+0100 [APP/0]      OUT    at org.hibernate.internal.AbstractSessionImpl$NonContextualJdbcConnectionAccess.obtainConnection(AbstractSessionImpl.java:380) ~[hibernate-core-4.3.11.Final.jar!/:4.3.11.Final]
2016-03-21T14:33:33.91+0100 [APP/0]      OUT    at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.obtainConnection(LogicalConnectionImpl.java:228) ~[hibernate-core-4.3.11.Final.jar!/:4.3.11.Final]
2016-03-21T14:33:33.91+0100 [APP/0]      OUT    ... 9 common frames omitted
2016-03-21T14:33:33.91+0100 [APP/0]      OUT 2016-03-21 13:33:33.913 ERROR 16 --- [ entityloader-2] o.h.s.exception.impl.LogErrorHandler     : HSEARCH000058: HSEARCH000116: Unexpected error during MassIndexer operation
2016-03-21T14:33:33.91+0100 [APP/0]      OUT org.hibernate.exception.GenericJDBCException: Could not open connection
2016-03-21T14:33:33.91+0100 [APP/0]      OUT    at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:54) ~[hibernate-core-4.3.11.Final.jar!/:4.3.11.Final]
2016-03-21T14:33:33.91+0100 [APP/0]      OUT    at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:126) ~[hibernate-core-4.3.11.Final.jar!/:4.3.11.Final]
2016-03-21T14:33:33.91+0100 [APP/0]      OUT    at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:112) ~[hibernate-core-4.3.11.Final.jar!/:4.3.11.Final]
2016-03-21T14:33:33.91+0100 [APP/0]      OUT    at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.obtainConnection(LogicalConnectionImpl.java:235) ~[hibernate-core-4.3.11.Final.jar!/:4.3.11.Final]
2016-03-21T14:33:33.91+0100 [APP/0]      OUT    at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.getConnection(LogicalConnectionImpl.java:171) ~[hibernate-core-4.3.11.Final.jar!/:4.3.11.Final]
2016-03-21T14:33:33.91+0100 [APP/0]      OUT    at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.doBegin(JdbcTransaction.java:67) ~[hibernate-core-4.3.11.Final.jar!/:4.3.11.Final]
2016-03-21T14:33:33.91+0100 [APP/0]      OUT    at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.begin(AbstractTransactionImpl.java:162) ~[hibernate-core-4.3.11.Final.jar!/:4.3.11.Final]
2016-03-21T14:33:33.91+0100 [APP/0]      OUT    at org.hibernate.search.batchindexing.impl.IdentifierConsumerDocumentProducer.run(IdentifierConsumerDocumentProducer.java:116) ~[hibernate-search-orm-4.5.3.Final.jar!/:4.5.3.Final]
2016-03-21T14:33:33.91+0100 [APP/0]      OUT    at org.hibernate.search.batchindexing.impl.OptionallyWrapInJTATransaction.runWithErrorHandler(OptionallyWrapInJTATransaction.java:111) ~[hibernate-search-orm-4.5.3.Final.jar!/:4.5.3.Final]
2016-03-21T14:33:33.91+0100 [APP/0]      OUT    at org.hibernate.search.batchindexing.impl.ErrorHandledRunnable.run(ErrorHandledRunnable.java:49) ~[hibernate-search-orm-4.5.3.Final.jar!/:4.5.3.Final]
2016-03-21T14:33:33.91+0100 [APP/0]      OUT    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) ~[na:1.8.0_73-]
2016-03-21T14:33:33.91+0100 [APP/0]      OUT    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) ~[na:1.8.0_73-]
2016-03-21T14:33:33.91+0100 [APP/0]      OUT    at java.lang.Thread.run(Thread.java:745) ~[na:1.8.0_73-]
2016-03-21T14:33:33.91+0100 [APP/0]      OUT Caused by: org.apache.tomcat.jdbc.pool.PoolExhaustedException: [Hibernate Search: entityloader-2] Timeout: Pool empty. Unable to fetch a connection in 30 seconds, none available[size:4; busy:4; idle:0; lastwait:30000].
2016-03-21T14:33:33.91+0100 [APP/0]      OUT    at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:681) ~[tomcat-jdbc-8.0.30.jar!/:na]
2016-03-21T14:33:33.91+0100 [APP/0]      OUT    at org.apache.tomcat.jdbc.pool.ConnectionPool.getConnection(ConnectionPool.java:185) ~[tomcat-jdbc-8.0.30.jar!/:na]
2016-03-21T14:33:33.91+0100 [APP/0]      OUT    at org.apache.tomcat.jdbc.pool.DataSourceProxy.getConnection(DataSourceProxy.java:127) ~[tomcat-jdbc-8.0.30.jar!/:na]
2016-03-21T14:33:33.91+0100 [APP/0]      OUT    at org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.java:139) ~[hibernate-core-4.3.11.Final.jar!/:4.3.11.Final]
2016-03-21T14:33:33.91+0100 [APP/0]      OUT    at org.hibernate.internal.AbstractSessionImpl$NonContextualJdbcConnectionAccess.obtainConnection(AbstractSessionImpl.java:380) ~[hibernate-core-4.3.11.Final.jar!/:4.3.11.Final]
2016-03-21T14:33:33.91+0100 [APP/0]      OUT    at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.obtainConnection(LogicalConnectionImpl.java:228) ~[hibernate-core-4.3.11.Final.jar!/:4.3.11.Final]
2016-03-21T14:33:33.91+0100 [APP/0]      OUT    ... 9 common frames omitted
2016-03-21T14:33:33.92+0100 [APP/0]      OUT 2016-03-21 13:33:33.921  WARN 16 --- [ntifierloader-1] o.h.engine.jdbc.spi.SqlExceptionHelper   : SQL Error: 0, SQLState: null
2016-03-21T14:33:33.92+0100 [APP/0]      OUT 2016-03-21 13:33:33.922 ERROR 16 --- [ntifierloader-1] o.h.engine.jdbc.spi.SqlExceptionHelper   : [Hibernate Search: identifierloader-1] Timeout: Pool empty. Unable to fetch a connection in 30 seconds, none available[size:4; busy:4; idle:0; lastwait:30000].
2016-03-21T14:33:33.92+0100 [APP/0]      OUT 2016-03-21 13:33:33.922 ERROR 16 --- [ntifierloader-1] o.h.s.exception.impl.LogErrorHandler     : HSEARCH000058: HSEARCH000116: Unexpected error during MassIndexer operation
2016-03-21T14:33:33.92+0100 [APP/0]      OUT org.hibernate.exception.GenericJDBCException: Could not open connection
2016-03-21T14:33:33.92+0100 [APP/0]      OUT    at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:54) ~[hibernate-core-4.3.11.Final.jar!/:4.3.11.Final]
2016-03-21T14:33:33.92+0100 [APP/0]      OUT    at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:126) ~[hibernate-core-4.3.11.Final.jar!/:4.3.11.Final]
2016-03-21T14:33:33.92+0100 [APP/0]      OUT    at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:112) ~[hibernate-core-4.3.11.Final.jar!/:4.3.11.Final]
2016-03-21T14:33:33.92+0100 [APP/0]      OUT    at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.obtainConnection(LogicalConnectionImpl.java:235) ~[hibernate-core-4.3.11.Final.jar!/:4.3.11.Final]
2016-03-21T14:33:33.92+0100 [APP/0]      OUT    at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.getConnection(LogicalConnectionImpl.java:171) ~[hibernate-core-4.3.11.Final.jar!/:4.3.11.Final]
2016-03-21T14:33:33.92+0100 [APP/0]      OUT    at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.doBegin(JdbcTransaction.java:67) ~[hibernate-core-4.3.11.Final.jar!/:4.3.11.Final]
2016-03-21T14:33:33.92+0100 [APP/0]      OUT    at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.begin(AbstractTransactionImpl.java:162) ~[hibernate-core-4.3.11.Final.jar!/:4.3.11.Final]
2016-03-21T14:33:33.92+0100 [APP/0]      OUT    at org.hibernate.search.batchindexing.impl.IdentifierProducer.inTransactionWrapper(IdentifierProducer.java:110) ~[hibernate-search-orm-4.5.3.Final.jar!/:4.5.3.Final]
2016-03-21T14:33:33.92+0100 [APP/0]      OUT    at org.hibernate.search.batchindexing.impl.IdentifierProducer.run(IdentifierProducer.java:95) ~[hibernate-search-orm-4.5.3.Final.jar!/:4.5.3.Final]
2016-03-21T14:33:33.92+0100 [APP/0]      OUT    at org.hibernate.search.batchindexing.impl.OptionallyWrapInJTATransaction.runWithErrorHandler(OptionallyWrapInJTATransaction.java:114) ~[hibernate-search-orm-4.5.3.Final.jar!/:4.5.3.Final]
2016-03-21T14:33:33.92+0100 [APP/0]      OUT    at org.hibernate.search.batchindexing.impl.ErrorHandledRunnable.run(ErrorHandledRunnable.java:49) ~[hibernate-search-orm-4.5.3.Final.jar!/:4.5.3.Final]
2016-03-21T14:33:33.92+0100 [APP/0]      OUT    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) ~[na:1.8.0_73-]
2016-03-21T14:33:33.92+0100 [APP/0]      OUT    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) ~[na:1.8.0_73-]
2016-03-21T14:33:33.92+0100 [APP/0]      OUT    at java.lang.Thread.run(Thread.java:745) ~[na:1.8.0_73-]
2016-03-21T14:33:33.92+0100 [APP/0]      OUT Caused by: org.apache.tomcat.jdbc.pool.PoolExhaustedException: [Hibernate Search: identifierloader-1] Timeout: Pool empty. Unable to fetch a connection in 30 seconds, none available[size:4; busy:4; idle:0; lastwait:30000].
2016-03-21T14:33:33.92+0100 [APP/0]      OUT    at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:681) ~[tomcat-jdbc-8.0.30.jar!/:na]
2016-03-21T14:33:33.92+0100 [APP/0]      OUT    at org.apache.tomcat.jdbc.pool.ConnectionPool.getConnection(ConnectionPool.java:185) ~[tomcat-jdbc-8.0.30.jar!/:na]
2016-03-21T14:33:33.92+0100 [APP/0]      OUT    at org.apache.tomcat.jdbc.pool.DataSourceProxy.getConnection(DataSourceProxy.java:127) ~[tomcat-jdbc-8.0.30.jar!/:na]
2016-03-21T14:33:33.92+0100 [APP/0]      OUT    at org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.java:139) ~[hibernate-core-4.3.11.Final.jar!/:4.3.11.Final]
2016-03-21T14:33:33.92+0100 [APP/0]      OUT    at org.hibernate.internal.AbstractSessionImpl$NonContextualJdbcConnectionAccess.obtainConnection(AbstractSessionImpl.java:380) ~[hibernate-core-4.3.11.Final.jar!/:4.3.11.Final]
2016-03-21T14:33:33.92+0100 [APP/0]      OUT    at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.obtainConnection(LogicalConnectionImpl.java:228) ~[hibernate-core-4.3.11.Final.jar!/:4.3.11.Final]
2016-03-21T14:33:33.92+0100 [APP/0]      OUT    ... 10 common frames omitted
2016-03-21T14:33:33.93+0100 [APP/0]      OUT 2016-03-21 13:33:33.933  INFO 16 --- [           main] o.h.s.i.SimpleIndexingProgressMonitor    : HSEARCH000028: Reindexed 0 entities