我有一個Java應用程序,使用Spring和Hibernate框架。在我的生產環境中,正常啓動應用程序需要很長的時間(最多一小時),例如在10分鐘內。我可以看到登錄頁面,但如果我嘗試登錄,它會繼續處理。只有一個小時左右後,我才能登錄。彈簧應用程序啓動時間太長
經過一番研究,我發現默認hibernate.temp.use_jdbc_metadata_defaults
設置爲true
,在這種情況下需要時間,所以我將它設置爲false
。現在我的應用程序在我的本地系統中快速啓動,當我將它指向生產數據庫進行測試時。即使在測試環境中,它也能按預期執行。但是當我把它投入生產時,它最初運行良好,但現在再次啓動時間太長。
任何想法現在如何處理它?
編輯:增加更多細節: 初始啓動時間是巨大的。一旦它起來,那麼頁面將加載正常。我們使用postgres數據庫並有多個模式。請建議需要什麼其他細節
下面是會話工廠onfiguration:
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="mydb"/>
<property name="entityInterceptor" ref="nullToEmptyStringInterceptor" />
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop>
<prop key="hibernate.multiTenancy">SCHEMA</prop>
<prop key="hibernate.tenant_identifier_resolver">path_to.DataBaseResolver</prop>
<prop key="hibernate.multi_tenant_connection_provider">path_to.MultiTenantProvider</prop>
<prop key="hibernate.show_sql">false</prop>
<prop key="hibernate.temp.use_jdbc_metadata_defaults">false</prop>
</props>
</property>
<property name="packagesToScan">
<list>
<value>path_to_model_package</value>
</list>
</property>
</bean>
下面是entityManagerFactory的配置
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="mydb" />
<property name="jpaVendorAdapter" ref="jpaVendorAdapter" />
<property name="jpaDialect" ref="jpaDialect" />
<property name="persistenceUnitName" value="myPersistenceUnit" />
<property name="packagesToScan" >
<list>
<value>path_to_model_package</value>
</list>
</property>
<property name="jpaProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop>
<prop key="hibernate.temp.use_jdbc_metadata_defaults">false</prop>
<prop key="hibernate.jdbc.use_get_generated_keys" >true</prop>
</props>
</property>
</bean>
組件掃描中有多少個bean文件? –
所有軟件包都包含在組件掃描中。這是一箇舊的應用程序,在我之前工作的人已經做到了這一點。我不知道我必須改變多少。 –
如果從數據庫加載所有記錄並在UI中顯示可能會導致此問題,因爲顯然生產的記錄比本地或測試環境要多。 如果是這種情況,請嘗試實現分頁功能來從數據庫加載有限記錄 – Ramesh