2

そして、spring-server.xml 内の 1 つの entityManagerFactory。

しかし、entityManager をもう 1 つ生成する必要があります。

Persistence.createEntityManagerFactory("myotherpersistenceunitname");

しかし、私は例外を取得します

Caused by: net.sf.ehcache.CacheException: Another unnamed CacheManager already exists in the same VM. Please provide unique names for each CacheManager in the config or do one of following:
1. Use one of the CacheManager.create() static factory methods to reuse same CacheManager with same name or create one if necessary
2. Shutdown the earlier cacheManager before creating new one with same name.
The source of the existing CacheManager is: DefaultConfigurationSource [ ehcache.xml or ehcache-failsafe.xml ]
    at net.sf.ehcache.CacheManager.assertNoCacheManagerExistsWithSameName(CacheManager.java:457)
    at net.sf.ehcache.CacheManager.init(CacheManager.java:354)
    at net.sf.ehcache.CacheManager.<init>(CacheManager.java:242)
    at net.sf.ehcache.hibernate.EhCacheRegionFactory.start(EhCacheRegionFactory.java:70)

spring.xml:

<context:property-placeholder location="classpath:application.properties"/>
    <context:component-scan base-package="merve.web.app" >
     <context:exclude-filter expression="org.springframework.stereotype.Controller" type="annotation" />
    </context:component-scan>
    <context:annotation-config/>
    <tx:annotation-driven transaction-manager="txManager" proxy-target-class="true"  />

    <cache:annotation-driven />


    <bean id="properties" class="merve.web.app.configuration.PropertyResourceConfiguration" />

    <bean id="entityManagerFactory"  
          class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">  
         <property name="persistenceUnitName" value="myPU"/>  
         <property name="dataSource" ref="dataSource" />  
         <property name="jpaVendorAdapter">  
             <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">  
                 <property name="databasePlatform" value="${database.target}"/>  
                 <property name="showSql" value="${database.showSql}" />  
             </bean>
         </property>  
    </bean>  

    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${database.driver}"/>
        <property name="jdbcUrl" value="${database.url}"/>
        <property name="user" value="${database.username}"/>
        <property name="password" value="${database.password}"/>
        <property name="minPoolSize" value="2"/>
        <property name="maxPoolSize" value="10"/>
        <property name="breakAfterAcquireFailure" value="false"/>
        <property name="acquireRetryAttempts" value="3"/>
        <property name="idleConnectionTestPeriod" value="300" />
        <property name="testConnectionOnCheckout" value="true" />
    </bean>


    <bean id="txManager" class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory" ref="entityManagerFactory" />
    </bean>



    <bean id="jamesEntityManagerFactory"  
          class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">  
         <property name="persistenceUnitName" value="jamesPU"/>  
         <property name="dataSource" ref="dataSourceJames" />
         <property name="persistenceXmlLocation" value="classpath:META-INF/james-persistence.xml"/> 
         <property name="jpaVendorAdapter">  
             <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">  
                 <property name="databasePlatform" value="org.hibernate.dialect.MySQL5InnoDBDialect"/>  
                 <property name="showSql" value="true" />  
             </bean>
         </property>   
    </bean>  



    <bean id="dataSourceJames" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="org.apache.derby.jdbc.EmbeddedDriver"/>
        <property name="jdbcUrl" value="jdbc:derby:../var/store/derby;create=true"/>
        <property name="user" value="app"/>
        <property name="password" value="app"/>
        <property name="minPoolSize" value="2"/>
        <property name="maxPoolSize" value="10"/>
        <property name="breakAfterAcquireFailure" value="false"/>
        <property name="acquireRetryAttempts" value="3"/>
        <property name="idleConnectionTestPeriod" value="300" />
        <property name="testConnectionOnCheckout" value="true" />
    </bean>

    <bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />


     <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">  
        <property name="basenames">  
            <list>
                <value>messages</value>
            </list>
        </property>
    </bean>

    <!-- Ehcache library setup -->
    <bean id="ehcache" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean" p:shared="true" p:config-location="classpath:ehcache.xml"/>

    <bean id="cacheManager"   class="org.springframework.cache.ehcache.EhCacheCacheManager" >
     <property name="cacheManager"><ref local="ehcache"></ref></property>  
    </bean>

<dwr:configuration/>
    <dwr:annotation-scan base-package="tuxi.web.app.service.dwr" scanRemoteProxy="true" scanDataTransferObject="true"/>
    <dwr:url-mapping />

    <dwr:controller id="dwrController"/>

</beans>
4

2 に答える 2

2

こちらで説明され、ソースで修正された問題は、EhCache シングルトンが正しく使用されていないことです。答えは、spring-context-support使用している EhCache のバージョンと EhCache のバージョンによって異なります。両方とも、 EhCache 2.6 以降を使用する必要があります。

<dependency>
    <groupId>net.sf.ehcache</groupId>
    <artifactId>ehcache</artifactId>
    <version>2.6.0</version>
</dependency>

spring-context-support次に、バージョンに基づいて何をすべきかを決定します。

Spring 3.1/3.2 を使用する場合

<bean id="ehcache" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"
    p:shared="true" 
    p:config-location="classpath:ehcache.xml"/>

Spring 4.x を使用している場合

<bean id="ehcache" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"
    p:shared="false"
    P:acceptExisting="true" 
    p:config-location="classpath:ehcache.xml"/>
于 2014-08-04T17:58:51.737 に答える