Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.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
Java Tomcat由于休眠而启动缓慢_Java_Hibernate_Tomcat - Fatal编程技术网

Java Tomcat由于休眠而启动缓慢

Java Tomcat由于休眠而启动缓慢,java,hibernate,tomcat,Java,Hibernate,Tomcat,目前我的应用程序使用Tomcat6和Hibernate3,但我注意到启动速度非常慢,我只有大约40个实体映射。不确定这是否是由休眠引起的日志如下: 进行以下操作大约需要5分钟: 有什么想法吗?顺便说一句,我已经尝试增加tomcat的内存 2016-03-01 09:18:53,933 INFO [main] SessionFactoryObjectFactory.addInstance(105) | Not binding factory to JNDI, no JNDI name confi

目前我的应用程序使用Tomcat6和Hibernate3,但我注意到启动速度非常慢,我只有大约40个实体映射。不确定这是否是由休眠引起的日志如下:

进行以下操作大约需要5分钟:

有什么想法吗?顺便说一句,我已经尝试增加tomcat的内存

2016-03-01 09:18:53,933  INFO [main] SessionFactoryObjectFactory.addInstance(105) | Not binding factory to JNDI, no JNDI name configured
2016-03-01 09:24:42,046 DEBUG [main] GnrlLookupView.<clinit>(37) | Registering view: GnrlLookupView
2016-03-01 09:24:46,881  INFO [main] QuartzScheduler.<init>(209) | Quartz Scheduler v.1.6.0 created.

找到的答案不是由于hibernate设置,似乎在启动过程中应用程序加载了大量表并试图保存在缓存中。

是否为所有包(*)启用了调试日志记录?如果是的话,也许可以尝试用跟踪日志重新运行整个过程,也许它会揭示在
SessionFactoryObjectFactory.addInstance(105)
GnrlLookupView.(37)
之间的5-6分钟内发生了什么。您使用的是什么版本的Java?您分配了多少内存?盒子上有多少物理内存?使用java 1.6,这是我启动时的配置:-server-Xms3072m-Xmx3072m-XX:NewSize=1024m-XX:MaxNewSize=1024m-XX:PermSize=1024m-XX:MaxPermSize=1024m-XX:+DisableExplicitGC@NándorElődFekete yes logging已启用我只能在这一行上看到实体启动时的初始化它只是停止,需要很长时间,这并没有确切地揭示实际问题,但它表明某些东西被多次重复调用。下一步是使用断点进入该方法,并沿着堆栈框架向上移动,直到找到有意义的内容。
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
    <property name="dataSource"> <ref bean="dataSource" /> </property>
    <property name="mappingJarLocations">
        <list>
            <value>WEB-INF/lib/*-hbm.jar</value>
        </list> 
    </property>
    <property name="lobHandler">
        <bean class="org.springframework.jdbc.support.lob.OracleLobHandler">
            <property name="nativeJdbcExtractor">
                <bean class="org.springframework.jdbc.support.nativejdbc.SimpleNativeJdbcExtractor" />
            </property>
        </bean>
    </property>     
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
            <prop key="hibernate.connection.SetBigStringTryClob">true</prop>
            <prop key="hibernate.cache.use_second_level_cache">true</prop>  <!-- Explicitly enabled 2nd level cache since upgrade to hibernate version 3.2.x -->
            <prop key="hibernate.cache.use_query_cache">true</prop>
            <prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop>
        </props>
    </property>

    <property name="entityInterceptor">
        <ref bean="entityAuditInterceptor" />
    </property>
</bean>

<!-- Transaction manager for a single Hibernate SessionFactory (alternative to JTA) --> 
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory">
        <ref local="sessionFactory" />
    </property>
</bean>ref bean="entityAuditInterceptor" />
    </property>
</bean>

<!-- Transaction manager for a single Hibernate SessionFactory (alternative to JTA) --> 
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory">
        <ref local="sessionFactory" />
    </property>
</bean>
SessionFactoryUtils.doGetSession(316) | Opening Hibernate Session
2016-03-01 10:46:45,468 DEBUG [main] OracleLobHandler.getClobAsString(229) | Returning Oracle CLOB as string
2016-03-01 10:46:45,468 DEBUG [main] OracleLobHandler.getClobAsString(229) | Returning Oracle CLOB as string
2016-03-01 10:46:45,468 DEBUG [main] OracleLobHandler.getClobAsString(229) | Returning Oracle CLOB as string
2016-03-01 10:46:45,483 DEBUG [main] OracleLobHandler.getClobAsString(229) | Returning Oracle CLOB as string
2016-03-01 10:46:45,483 DEBUG [main] OracleLobHandler.getClobAsString(229) | Returning Oracle CLOB as string
2016-03-01 10:46:45,483 DEBUG [main] OracleLobHandler.getClobAsString(229) | Returning Oracle CLOB as string

2016-03-01 10:44:43,487 DEBUG [main] HibernateTemplate.flushIfNecessary(389) | Eagerly flushing Hibernate session
2016-03-01 10:44:43,487 DEBUG [main] SessionFactoryUtils.closeSession(789) | Closing Hibernate Session
2016-03-01 10:44:43,487 DEBUG [main] SessionFactoryUtils.doGetSession(316) | Opening Hibernate Session