Hi,
i have the following applicationContext.xml:
Here i define 4 database-connections. 2 of the databases are on the same computer, the other 2 are on another computer in the network.Code:<beans ... > <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location"> <value>/config.ini</value> </property> </bean> <util:list id="mappingClasses"> <value>de.gebitms.geplan.datastructures.data.BenutzerDOM</value> </util:list> <util:list id="mappingPackages"> <value>de.gebitms.geplan.datastructures.data</value> </util:list> <bean id="hibernatePropertiesSQL" class="org.springframework.beans.factory.config.PropertiesFactoryBean"> <property name="properties"> <props> <prop key="hibernate.dialect">${hbn.dialect.sql}</prop> <prop key="hibernate.connection.isolation">${hbn.isolation}</prop> <prop key="hibernate.jdbc.batch_size">${hbn.jdbc.batch_size}</prop> <prop key="hibernate.order_updates">${hbn.order_updates}</prop> <prop key="hibernate.show_sql">${hbn.show_sql}</prop> <prop key="hibernate.transaction.factory_class">${hbn.transaction.factory_class}</prop> <prop key="hibernate.c3p0.initial_pool_size">${hbn.c3p0.initial_pool_size}</prop> <prop key="hibernate.c3p0.min_size">${hbn.c3p0.min_size}</prop> <prop key="hibernate.c3p0.max_size">${hbn.c3p0.max_size}</prop> <prop key="hibernate.c3p0.timeout">${hbn.c3p0.timeout}</prop> <prop key="hibernate.c3p0.max_statements">${hbn.c3p0.max_statements}</prop> <prop key="hibernate.c3po.idle_test_period">${hbn.c3po.idle_test_period}</prop> <prop key="hibernate.c3po.max_idle_time">${hbn.c3po.max_idle_time}</prop> <prop key="hibernate.c3po.acquire_increment">${hbn.c3po.acquire_increment}</prop> <prop key="hibernate.c3po.auto_commit_on_close">${hbn.c3po.auto_commit_on_close}</prop> <prop key="hibernate.c3po.num_helper_threads">${hbn.c3po.num_helper_threads}</prop> <prop key="hibernate.connection.use_compression">${hbn.connection.use_compression}</prop> <prop key="hibernate.connection.cache_result_set_metadata">${hbn.connection.cache_result_set_metadata}</prop> <prop key="hibernate.connection.dont_track_open_resources">${hbn.connection.dont_track_open_resources}</prop> <prop key="hibernate.connection.dynamic_calendars">${hbn.connection.dynamic_calendars}</prop> <prop key="hibernate.connection.zero_date_time_behavior">${hbn.connection.zero_date_time_behavior}</prop> <prop key="hibernate.connection.rollback_on_pooled_close">%{hbn.connection.rollback_on_pooled_close}</prop> <prop key="hibernate.cache.provider_class">${hbn.cache.provider_class}</prop> <prop key="hibernate.query.factory_class">${hbn.query.factory_class}</prop> </props> </property> </bean> <bean id="hibernatePropertiesOracle" parent="hibernatePropertiesSQL"> <property name="properties"> <props merge="true"> <prop key="hibernate.dialect">${hbn.dialect.oracle}</prop> </props> </property> </bean> <bean id="abstractDataSourceSQL" abstract="true" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="${database.sql.driverclass}"/> <property name="url" value="${database.sql.url}"/> <property name="username" value="${database.user}"/> <property name="password" value="${database.password}"/> </bean> <bean id="abstractDataSourceOracle" abstract="true" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="${database.oracle.driverclass}"/> <property name="url" value="${database.oracle.url}"/> <property name="username" value="${database.user}"/> <property name="password" value="${database.password}"/> </bean> <bean id="dataSourceSQL" parent="abstractDataSourceSQL"/> <bean id="dataSourceSQLTest" parent="abstractDataSourceSQL"> <property name="url" value="${database.sql.url.test}"/> <property name="username" value="${database.user.test}"/> </bean> <bean id="dataSourceOracle" parent="abstractDataSourceOracle"/> <bean id="dataSourceOracleTest" parent="abstractDataSourceOracle"> <property name="username" value="${database.user.test}"/> </bean> <bean id="abstractSessionFactorySQL" abstract="true" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean" scope="singleton"> <property name="dataSource" ref="dataSourceSQL"/> <property name="hibernateProperties" ref="hibernatePropertiesSQL"/> <property name="annotatedPackages" ref="mappingPackages"/> <property name="annotatedClasses" ref="mappingClasses"/> <property name="exposeTransactionAwareSessionFactory"><value>false</value></property> </bean> <bean id="abstractSessionFactoryOracle" abstract="true" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean" scope="singleton"> <property name="dataSource" ref="dataSourceOracle"/> <property name="hibernateProperties" ref="hibernatePropertiesOracle"/> <property name="annotatedPackages" ref="mappingPackages"/> <property name="annotatedClasses" ref="mappingClasses"/> <property name="exposeTransactionAwareSessionFactory"><value>false</value></property> </bean> <bean id="sessionFactorySQL" parent="abstractSessionFactorySQL"/> <bean id="sessionFactorySQLTest" parent="abstractSessionFactorySQL"> <property name="dataSource" ref="dataSourceSQLTest"/> </bean> <bean id="sessionFactoryOracle" parent="abstractSessionFactoryOracle"/> <bean id="sessionFactoryOracleTest" parent="abstractSessionFactoryOracle"> <property name="dataSource" ref="dataSourceOracleTest"/> </bean> <bean id="abstractHibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"> <property name="sessionFactory" ref="sessionFactorySQL"/> <property name="allowCreate" value="true"/> <property name="cacheQueries" value="true"/> </bean> <bean id="hibernateTemplateSQL" parent="abstractHibernateTemplate"/> <bean id="hibernateTemplateSQLTest" parent="abstractHibernateTemplate"> <property name="sessionFactory" ref="sessionFactorySQLTest"/> </bean> <bean id="hibernateTemplateOracle" parent="abstractHibernateTemplate"> <property name="sessionFactory" ref="sessionFactoryOracle"/> </bean> <bean id="hibernateTemplateOracleTest" parent="abstractHibernateTemplate"> <property name="sessionFactory" ref="sessionFactoryOracleTest"/> </bean> <bean id="multipleHibernateTemplate" class="de.gebitms.geplan.springwrapper.MultipleHibernateTemplate" scope="prototype"> <constructor-arg> <map> <entry key="sql" value-ref="hibernateTemplateSQL"/> <entry key="sqlTest" value-ref="hibernateTemplateSQLTest"/> <entry key="oracle" value-ref="hibernateTemplateOracle"/> <entry key="oracleTest" value-ref="hibernateTemplateOracleTest"/> </map> </constructor-arg> </bean> <bean id="dataAccessExceptionInterceptor" class="de.gebitms.geplan.springwrapper.advices.DataAccessExceptionAdvice"/> <bean id="dataAccessExceptionAdvisor" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor"> <property name="pattern" value="de.gebitms.geplan.+"/> <property name="advice"> <ref bean="dataAccessExceptionInterceptor"/> </property> </bean> <bean id="autoProxyCreator" class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"> <property name="proxyTargetClass" value="true"/> </bean> <bean id="txManagerSQL" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactorySQL"></property> </bean> <bean id="txManagerSQLTest" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactorySQLTest"></property> </bean> <bean id="txManagerOracle" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactoryOracle"></property> </bean> <bean id="txManagerOracleTest" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactoryOracleTest"></property> </bean> <bean id="multipleTxManager" class="de.gebitms.geplan.springwrapper.MultipleTransactionManager" scope="prototype"> <constructor-arg> <map> <entry key="sql" value-ref="txManagerSQL"/> <entry key="sqlTest" value-ref="txManagerSQLTest"/> <entry key="oracle" value-ref="txManagerOracle"/> <entry key="oracleTest" value-ref="txManagerOracleTest"/> </map> </constructor-arg> </bean> <tx:annotation-driven transaction-manager="multipleTxManager" proxy-target-class="true"/>
As far as i understand spring, the configuration is loaded lazy. So i assume that he is not trying to connect to the databases while loading the context. BUT: when i load it with the following line:
this takes more then 30 seconds. And my computer isnīt that slow. Why does it take so long to load my context. What can i do to get a better performance. Can you help me out with this?Code:appContext = new ClassPathXmlApplicationContext("/de/gebitms/geplan/springwrapper/applicationContext.xml");
Thanks very much for any help.
Christoph
PS: I had to shorten this post to get below the 10000 characters, so i omitted my own beans from the context (there are only 5 of them and they are not very spectacular)
Spring 2.0.1
Windows 2000
SQL-Server 7.0
Oracle 9i
Eclipse 3.2.1
Hibernate 3.2


Reply With Quote