Spring提供了TransactionProxyFactoryBean作为动态代理的生成工厂,该工厂产生目标bean的动态AOP事务代理。事务代理根据所配置的事务属性自动管理事务操作。该事务代理对事务的透明管理依赖于一个在ApplicationContext范围全局可见的PlatformTransactionManager。Spring提供两个默认的事务管理器实现:DataSourceTransactionManager和JtaTransactionManager。前者只能支持单个jdbc数据源,后者可以支持多个数据源,可以做分布式事务管理。一般由容器提供支持JTA的事务管理器实现,Spring的JtaTransactionManager会自动通过JNDI检测TransactionManager或UserTransaction的存在,也可以在配置中指定JNDI的设置。如果想不依赖于容器实现分布式事务管理,可以采用开源的事务管理器实现JOTM。事务管理器必须要知道被管理的DataSource的位置,如果是DataSourceTransactionManager,在事务管理器配置中直接指定JDBC数据源的引用,如果是JtaTransactionManager,容器负责告知事务管理器需要管理的数据源。不管是哪一种情况,都需要在Dao中配置与事务管理器相对应的数据源。

解决方案 »

  1.   

    自己去看SpringReference啊....1楼的其实已说得很明白了以下代码是从SpringReference中copy过来的:<beans>  <bean id="myDataSource1" class="org.springframework.jndi.JndiObjectFactoryBean">
        <property name="jndiName value="java:comp/env/jdbc/myds1"/>
      </bean>  <bean id="myDataSource2" class="org.springframework.jndi.JndiObjectFactoryBean">
        <property name="jndiName" value="java:comp/env/jdbc/myds2"/>
      </bean>  <bean id="mySessionFactory1" class="org.springframework.orm.hibernate.LocalSessionFactoryBean">
        <property name="dataSource" ref="myDataSource1"/>
        <property name="mappingResources">
          <list>
            <value>product.hbm.xml</value>
          </list>
        </property>
        <property name="hibernateProperties">
          <props>
            <prop key="hibernate.dialect">net.sf.hibernate.dialect.MySQLDialect</prop>
          </props>
        </property>
      </bean>  <bean id="mySessionFactory2" class="org.springframework.orm.hibernate.LocalSessionFactoryBean">
        <property name="dataSource" ref="myDataSource2"/>
        <property name="mappingResources">
          <list>
            <value>inventory.hbm.xml</value>
          </list>
        </property>
        <property name="hibernateProperties">
          <props>
            <prop key="hibernate.dialect">net.sf.hibernate.dialect.OracleDialect</prop>
          </props>
        </property>
      </bean>  <bean id="myTxManager" class="org.springframework.transaction.jta.JtaTransactionManager"/>  <bean id="myProductDao" class="product.ProductDaoImpl">
        <property name="sessionFactory" ref="mySessionFactory1"/>
      </bean>  <bean id="myInventoryDao" class="product.InventoryDaoImpl">
        <property name="sessionFactory" ref="mySessionFactory2"/>
      </bean>  <bean id="myProductServiceTarget" class="product.ProductServiceImpl">
        <property name="productDao" ref="myProductDao"/>
        <property name="inventoryDao" ref="myInventoryDao"/>
      </bean>  <bean id="myProductService"
          class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
        <property name="transactionManager" ref="myTxManager"/>
        <property name="target" ref="myProductServiceTarget"/>
        <property name="transactionAttributes">
          <props>
            <prop key="increasePrice*">PROPAGATION_REQUIRED</prop>
            <prop key="someOtherBusinessMethod">PROPAGATION_REQUIRES_NEW</prop>
            <prop key="*">PROPAGATION_SUPPORTS,readOnly</prop>
          </props>
        </property>
      </bean></beans>
      

  2.   

    我这样认为,首先要对两个数据源进行事务控制,我门可以先不考虑事物,
    那么我可以写一个方法,该方法中有对这两个数据源的操作,然后我门利用spring 对这个方法进行事物控制,
    只不过这个时候,我们用的是JtaTransactionManager。
      

  3.   

    楼上的兄弟,我配置后运行报错,在创建org.springframework.transaction.jta.JtaTransactionManager时出现的问题:
     Error creating bean with name 'transactionManager' defined in class path resource [gov/cd12366/bridge/spring/applicationContext.xml]: Invocation of init method failed; nested exception is org.springframework.transaction.TransactionSystemException: JTA UserTransaction is not available at JNDI location [java:comp/UserTransaction]; nested exception is javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial
    org.springframework.transaction.TransactionSystemException: JTA UserTransaction is not available at JNDI location [java:comp/UserTransaction]; nested exception is javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial
    javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial
      

  4.   

    applicationContext.xml修改如下:<?xml version="1.0" encoding="UTF-8"?><!--
      - Application context definition for JPetStore's business layer.
      - Contains bean references to the transaction manager and to the DAOs in
      - dataAccessContext-local/jta.xml (see web.xml's "contextConfigLocation").
      -->
    <beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       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/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
    <!-- 
       配置数据源
       注意: 用org.apache.commons.dbcp.BasicDataSource, 要引入 apache commons 
       的commons-collections-3.1.jar, commons-dbcp-1.2.1.jar, commons-pool-1.2.jar三个包-->
     
     <bean id="dataSourceInfo" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
      <property name="driverClassName">
       <value>net.sourceforge.jtds.jdbc.Driver</value>
      </property>
      <property name="url">
       <value>jdbc:jtds:sqlserver://91.20.19.22:1433;DatabaseName=digger</value>
      </property>
      <property name="username">
       <value>sa</value>
      </property>
      <property name="password">
       <value>tax</value>
      </property>
     </bean>
     
     <bean id="dataSourceBridge" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
      <property name="driverClassName">
       <value>net.sourceforge.jtds.jdbc.Driver</value>
      </property>
      <property name="url">
       <value>jdbc:jtds:sqlserver://localhost:1433;DatabaseName=cdgsbridge</value>
      </property>
      <property name="username">
       <value>sa</value>
      </property>
      <property name="password">
       <value>1</value>
      </property>
     </bean> <!-- 配置sessionFactory, 注意这里引入的包的不同-->  
     <bean id="sessionFactoryInfo"
      class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
      <property name="dataSource">
       <ref local="dataSourceInfo" />
      </property>
      <property name="mappingResources">
       <list>
          <value>gov/cd12366/bridge/domain/Login.hbm.xml</value>
        </list>
      </property>
      <property name="hibernateProperties">
       <props>
        <prop key="hibernate.dialect">
         org.hibernate.dialect.SQLServerDialect
        </prop>
        <prop key="hibernate.show_sql">true</prop>
       </props>
      </property>
     </bean>
     
     <bean id="sessionFactoryBridge"
      class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
      <property name="dataSource">
       <ref local="dataSourceBridge" />
      </property>
      <property name="mappingResources">
       <list>
          <value>gov/cd12366/bridge/domain/Login.hbm.xml</value>
        </list>
      </property>
      <property name="hibernateProperties">
       <props>
        <prop key="hibernate.dialect">
         org.hibernate.dialect.SQLServerDialect
        </prop>
        <prop key="hibernate.show_sql">true</prop>
       </props>
      </property>
     </bean>
     
      <!-- 配置transactionManager, 注意这里引入的包的不同  -->
     <bean id="transactionManager" 
      class="org.springframework.transaction.jta.JtaTransactionManager">  
     </bean> 
      <bean id="LoginDAOInfo" class="gov.cd12366.bridge.persistence.dao.LoginDAO">
      <property name="sessionFactory">
       <ref local="sessionFactoryInfo" />
      </property>
     </bean>
     <bean id="LoginDAOBridge" class="gov.cd12366.bridge.persistence.dao.LoginDAO">
      <property name="sessionFactory">
       <ref local="sessionFactoryBridge" />
      </property>
     </bean>
     
     <bean id="CopyDataServer" class="gov.cd12366.bridge.server.CopyDataServer">
        <property name="LoginDAOInfo" ref="LoginDAOInfo"/>
        <property name="LoginDAOBridge" ref="LoginDAOBridge"/>
     </bean>
      
     <!-- 配置事务代理,对LoginDAO的insert,和get方法进行不同的事务配置 -->
     <bean id="CopyDataServerProxy" 
    class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
      <property name="transactionManager">
       <ref bean="transactionManager" />
      </property>
      <property name="target">
       <ref local="CopyDataServer" />
      </property>
      <property name="transactionAttributes">
      <props>
       <prop key="copy">PROPAGATION_REQUIRED</prop>   
      </props>
      </property>
    </bean></beans>
      

  5.   

    jndi树上找不到java:comp/UserTransaction 的原因服务器是weblogic?jboss?
    试着指定userTransactionName看看,如下
    <bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager" >
      <property name="userTransactionName">
       <value>weblogic/transaction/UserTransaction</value>
      </property>
    </bean>
      

  6.   

    如果楼主用的是weblogic的话,spring专门为其设计了WebLogicJtaTransactionManager,为JtaTransactionManager的子类.
      

  7.   

    jta只能在容器中运行吗?独立的程序能不能用?如果是tomcat5该如何配置?
      

  8.   

    如果我不是放在容器中而是独立运行的程序,那么就不能用spring来控制事务吗?
      

  9.   

    哦,我的确没仔细看一楼的那段文字,的确已经说得很清楚了,要用JOTM
      

  10.   

    我用jotm做JTA,配置文件如下:<?xml version="1.0" encoding="UTF-8"?><!--
      - Application context definition for JPetStore's business layer.
      - Contains bean references to the transaction manager and to the DAOs in
      - dataAccessContext-local/jta.xml (see web.xml's "contextConfigLocation").
      -->
    <beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       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/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
    <!-- 
       配置数据源
       注意: 用org.apache.commons.dbcp.BasicDataSource, 要引入 apache commons 
       的commons-collections-3.1.jar, commons-dbcp-1.2.1.jar, commons-pool-1.2.jar三个包
     
     <bean id="dataSourceInfo" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
      <property name="driverClassName">
       <value>net.sourceforge.jtds.jdbc.Driver</value>
      </property>
      <property name="url">
       <value>jdbc:jtds:sqlserver://91.20.19.22:1433;DatabaseName=digger</value>
      </property>
      <property name="username">
       <value>sa</value>
      </property>
      <property name="password">
       <value>tax</value>
      </property>
     </bean>
     -->
     <!--配置事务管理-->
     <bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager"> 
            <property name="userTransaction"><ref local="jotm"/></property> 
     </bean>
     
     <!--使用jotm配置数据库连接-->
     <bean id="jotm" class="org.springframework.transaction.jta.JotmFactoryBean"/>
     
     <bean id="innerDataSourceInfo" class="org.enhydra.jdbc.standard.StandardXADataSource" destroy-method="shutdown"> 
            <property name="transactionManager"><ref local="jotm"/></property> 
            <property name="driverName"><value>net.sourceforge.jtds.jdbc.Driver</value></property> 
            <property name="url"><value>jdbc:jtds:sqlserver://localhost:1433;DatabaseName=digger</value></property> 
             
     </bean> 
     <bean id="dataSourceInfo" class="org.enhydra.jdbc.pool.StandardXAPoolDataSource" destroy-method="shutdown"> 
            <property name="dataSource"><ref local="innerDataSourceInfo"/></property>        
    <property name="transactionManager"><ref local="jotm"/></property>
    <property name="user"><value>sa</value></property> 
            <property name="password"><value>1</value></property> 
            <property name="minCon"><value>1</value></property> 
            <property name="maxCon"><value>5</value></property>
     </bean>

     <bean id="innerDataSourceBridge" class="org.enhydra.jdbc.standard.StandardXADataSource" destroy-method="shutdown"> 
            <property name="transactionManager"><ref local="jotm"/></property> 
            <property name="driverName"><value>net.sourceforge.jtds.jdbc.Driver</value></property> 
            <property name="url"><value>jdbc:jtds:sqlserver://localhost:1433;DatabaseName=cdgsbridge</value></property> 
             
     </bean> 
     <bean id="dataSourceBridge" class="org.enhydra.jdbc.pool.StandardXAPoolDataSource" destroy-method="shutdown"> 
            <property name="dataSource"><ref local="innerDataSourceBridge"/></property>
    <property name="transactionManager"><ref local="jotm"/></property>        
    <property name="user"><value>sa</value></property> 
            <property name="password"><value>1</value></property> 
            <property name="minCon"><value>1</value></property> 
            <property name="maxCon"><value>5</value></property>
     </bean> <!-- 配置sessionFactory, 注意这里引入的包的不同-->  
     <bean id="sessionFactoryInfo"
      class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
      <property name="dataSource">
       <ref local="dataSourceInfo" />
      </property>
      <property name="mappingResources">
       <list>
          <value>gov/cd12366/bridge/domain/Login.hbm.xml</value>
        </list>
      </property>
      <property name="hibernateProperties">
       <props>
        <prop key="hibernate.dialect">
         org.hibernate.dialect.SQLServerDialect
        </prop>
        <prop key="hibernate.show_sql">true</prop>
       </props>
      </property>
     </bean>
     
     <bean id="sessionFactoryBridge"
      class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
      <property name="dataSource">
       <ref local="dataSourceBridge" />
      </property>
      <property name="mappingResources">
       <list>
          <value>gov/cd12366/bridge/domain/Login.hbm.xml</value>
        </list>
      </property>
      <property name="hibernateProperties">
       <props>
        <prop key="hibernate.dialect">
         org.hibernate.dialect.SQLServerDialect
        </prop>
        <prop key="hibernate.show_sql">true</prop>
       </props>
      </property>
     </bean>   <bean id="LoginDAOInfo" class="gov.cd12366.bridge.persistence.dao.LoginDAO">
      <property name="sessionFactory">
       <ref local="sessionFactoryInfo" />
      </property>
     </bean>
     <bean id="LoginDAOBridge" class="gov.cd12366.bridge.persistence.dao.LoginDAO">
      <property name="sessionFactory">
       <ref local="sessionFactoryBridge" />
      </property>
     </bean>
     
     <bean id="CopyDataServer" class="gov.cd12366.bridge.server.CopyDataServer">
        <property name="LoginDAOInfo" ref="LoginDAOInfo"/>
        <property name="LoginDAOBridge" ref="LoginDAOBridge"/>
     </bean>
      
     <!-- 配置事务代理,对LoginDAO的insert,和get方法进行不同的事务配置 -->
     <bean id="CopyDataServerProxy" 
    class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
      <property name="transactionManager">
       <ref bean="transactionManager" />
      </property>
      <property name="target">
       <ref local="CopyDataServer" />
      </property>
      <property name="transactionAttributes">
      <props>
       <prop key="copy">PROPAGATION_REQUIRED</prop>   
      </props>
      </property>
    </bean></beans>
    --
    但仍然报错
      

  11.   

    Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'CopyDataServerProxy' defined in class path resource [gov/cd12366/bridge/spring/applicationContext_jotm.xml]: Cannot resolve reference to bean 'transactionManager' while setting bean property 'transactionManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager' defined in class path resource [gov/cd12366/bridge/spring/applicationContext_jotm.xml]: Cannot resolve reference to bean 'jotm' while setting bean property 'userTransaction'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jotm' defined in class path resource [gov/cd12366/bridge/spring/applicationContext_jotm.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.FatalBeanException: Could not instantiate class [org.springframework.transaction.jta.JotmFactoryBean]; constructor threw exception; nested exception is java.lang.ExceptionInInitializerError: null
    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager' defined in class path resource [gov/cd12366/bridge/spring/applicationContext_jotm.xml]: Cannot resolve reference to bean 'jotm' while setting bean property 'userTransaction'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jotm' defined in class path resource [gov/cd12366/bridge/spring/applicationContext_jotm.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.FatalBeanException: Could not instantiate class [org.springframework.transaction.jta.JotmFactoryBean]; constructor threw exception; nested exception is java.lang.ExceptionInInitializerError: null
    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jotm' defined in class path resource [gov/cd12366/bridge/spring/applicationContext_jotm.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.FatalBeanException: Could not instantiate class [org.springframework.transaction.jta.JotmFactoryBean]; constructor threw exception; nested exception is java.lang.ExceptionInInitializerError: null
    org.springframework.beans.FatalBeanException: Could not instantiate class [org.springframework.transaction.jta.JotmFactoryBean]; constructor threw exception; nested exception is java.lang.ExceptionInInitializerError: null
    java.lang.ExceptionInInitializerError
    at org.objectweb.jotm.Jotm.<init>(Jotm.java:140)
    at org.springframework.transaction.jta.JotmFactoryBean.<init>(JotmFactoryBean.java:82)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:174)
    at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:150)
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:52)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:498)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:372)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:238)
    20:18:30,609 DEBUG [main] ConfigurationRepository:286 - Build protocol object for protocol name found 'jrmp'.
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:148)
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:186)
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:764)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:575)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:405)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:238)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:148)
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:186)
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:764)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:575)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:405)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:238)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:148)
    at gov.cd12366.bridge.spring.CustomBeanFactory.getBean(CustomBeanFactory.java:26)
    at Test.main(Test.java:74)
    Caused by: org.omg.CORBA.INITIALIZE: Error while instantiatingorg.objectweb.carol.rmi.multi.MultiPRODelegate  vmcid: 0x0  minor code: 0  completed: No
    at javax.rmi.PortableRemoteObject.createDelegateIfSpecified(Unknown Source)
    at javax.rmi.PortableRemoteObject.<clinit>(Unknown Source)
    ... 29 more
    Caused by: java.lang.IllegalStateException: Configuration of carol was not done and when trying to initialize it, it fails.
    at org.objectweb.carol.util.configuration.ConfigurationRepository.checkInitialized(ConfigurationRepository.java:113)
    at org.objectweb.carol.util.configuration.ConfigurationRepository.checkConfigured(ConfigurationRepository.java:126)
    at org.objectweb.carol.util.configuration.ConfigurationRepository.getConfigurations(ConfigurationRepository.java:136)
    at org.objectweb.carol.rmi.multi.MultiPRODelegate.<init>(MultiPRODelegate.java:73)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at java.lang.Class.newInstance0(Unknown Source)
    at java.lang.Class.newInstance(Unknown Source)
    ... 31 more
    Caused by: org.objectweb.carol.util.configuration.ConfigurationException: Cannot find a protocol with name 'lmi' in the list of available protocols.
    at org.objectweb.carol.util.configuration.ConfigurationRepository.init(ConfigurationRepository.java:335)
    at org.objectweb.carol.util.configuration.ConfigurationRepository.init(ConfigurationRepository.java:229)
    at org.objectweb.carol.util.configuration.ConfigurationRepository.init(ConfigurationRepository.java:397)
    at org.objectweb.carol.util.configuration.ConfigurationRepository.checkInitialized(ConfigurationRepository.java:111)
    ... 40 more