Tomcat启动需要花费大量时间使用Spring应用程序

时间:2016-12-28 05:15:34

标签: java spring hibernate tomcat spring-data-jpa

我有一个产生 42MB war文件的Spring项目。每当我在服务器中部署它时,tomcat 7需要花费一个多小时。即使在开发环境中,如果我们对其进行任何更改,它在本地环境中的消耗超过<20>分钟。

我怀疑我犯了一个重大错误。

<?xml  version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jpa="http://www.springframework.org/schema/data/jpa"
    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"
    xmlns:jee="http://www.springframework.org/schema/jee" xmlns:lang="http://www.springframework.org/schema/lang"
    xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:p="http://www.springframework.org/schema/p"
    xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:util="http://www.springframework.org/schema/util" xmlns:cache="http://www.springframework.org/schema/cache"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd
        http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
       http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc.xsd
        http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa.xsd
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd
        http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache.xsd">

<context:component-scan base-package="com.abc.xyz.server.filters" />
<context:component-scan base-package="com.abc.xyz.server.utils" />
<context:component-scan base-package="com.abc.xyz.server.application.Bean" />
<context:component-scan
    base-package="com.abc.xyz.server.application.controllers" />
<context:component-scan
    base-package="com.abc.xyz.server.application.services" />
<jpa:repositories
    base-package="com.abc.xyz.server.application.repositories" />

<mvc:annotation-driven>
    <mvc:message-converters>
        <!-- Use the HibernateAware mapper instead of the default -->
        <bean
            class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
            <property name="objectMapper">
                <bean
                    class="com.abc.xyz.server.utils.HibernateAwareObjectMapper" />
            </property>
        </bean>
    </mvc:message-converters>
</mvc:annotation-driven>

<!-- <bean id="jdbcEmployeeDAO" class="com.abc.xyz.server.application.model.dao.JDBCEmployeeDAOImpl"> 
    </bean> -->


<bean id="jdbcProperty"
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location">
        <value>/WEB-INF/application.properties</value>
    </property>
</bean>

<bean id="abstractDataSource" class="org.apache.commons.dbcp.BasicDataSource"
    destroy-method="close" p:driverClassName="${jdbc.driverClassName}"
    p:username="${jdbc.username}" p:password="${jdbc.password}">

    <property name="initialSize" value="0" />

    <property name="maxIdle" value="1" />

    <property name="minIdle" value="0" />

    <property name="validationQuery" value="SELECT 1" />

    <property name="testOnBorrow" value="true" />

    <property name="testWhileIdle" value="true" />

    <property name="timeBetweenEvictionRunsMillis" value="180000" />

    <property name="numTestsPerEvictionRun" value="100" />

    <property name="minEvictableIdleTimeMillis" value="120000" />

    <property name="removeAbandonedTimeout" value="60" />

    <property name="logAbandoned" value="true" />

    <property name="maxActive" value="30" />

    <property name="maxWait" value="3000" />

    <property name="removeAbandoned" value="true" />
</bean>

<bean id="concreteDataSourceOne" parent="abstractDataSource"
    p:url="${jdbc.databaseurlOne}" />
<bean id="concreteDataSourceTwo" parent="abstractDataSource"
    p:url="${jdbc.databaseurlTwo}" />
<bean id="concreteDataSourceDev" parent="abstractDataSource"
    p:url="${jdbc.databaseurlDev}" />
<bean id="concreteDataSourceGlace" parent="abstractDataSource"
    p:url="${jdbc.databaseurlGlace}" />


<bean id="dataSource"
    class="com.abc.xyz.server.datasource.TennantAwareDataSource">
    <property name="targetDataSources">
        <map key-type="java.lang.String">
            <entry key="database2" value-ref="concreteDataSourceTwo" />
            <entry key="database1" value-ref="concreteDataSourceOne" />
            <entry key="dev" value-ref="concreteDataSourceDev" />
            <entry key="glace" value-ref="concreteDataSourceGlace" />
        </map>

    </property>
    <property name="defaultTargetDataSource" ref="concreteDataSourceGlace" />
</bean>

<bean id="objectmapper" class="com.fasterxml.jackson.databind.ObjectMapper"></bean>

<bean id="EntityManagerFactory"
    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
    p:persistenceUnitName="PersistenceUnit" p:dataSource-ref="dataSource">
    <!-- THIS IS WHERE THE MODELS ARE -->
    <property name="packagesToScan"
        value="com.abc.xyz.server.application.models" />
    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"
            p:showSql="${hibernate.show_sql}" p:generateDdl="false"
            p:databasePlatform="${hibernate.dialect}" />
    </property>
</bean>

<!-- Ecache related stuff -->
<!-- <cache:annotation-driven /> <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager" 
    p:cache-manager-ref="ehcache"/> <bean id="ehcache" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean" 
    p:config-location="classpath:ehcache.xml" p:shared="true"/> -->

<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="EntityManagerFactory" />
</bean>
<tx:annotation-driven />
<bean id="sessionMap" class="com.abc.xyz.server.utils.SessionMap"
    scope="session">

    <!-- this next element effects the proxying of the surrounding bean -->
    <aop:scoped-proxy />
</bean>

<!-- Configuration Bean -->

<mvc:default-servlet-handler />
<mvc:interceptors>
    <bean class="com.abc.xyz.server.utils.EMRRequestInterceptor" />
</mvc:interceptors>
<!-- Swagger --><!-- 
<context:property-placeholder location="classpath:/swagger.properties" />
<bean id="springSwaggerConfig"
    class="com.mangofactory.swagger.configuration.SpringSwaggerConfig" /> -->
<!-- File Upload -->    <!-- 
<bean id="multipartResolver"
    class="org.springframework.web.multipart.commons.CommonsMultipartResolver" /> -->

我也在控制台中收到这样的GC消息。

  

[GC [PSYoungGen:605920K-> 128K(660480K)] 1237105K-> 631313K(2058752K),   0.0141920秒] [时间:用户= 0.03 sys = 0.00,实际= 0.02秒]

0 个答案:

没有答案