Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > ehCache меняю параметры


Автор: Andy_L20066 3.3.2009, 16:26
Привет, подскажите на правильном ли я пути....
Короче есть такая конфигурация:
 
Код

<bean id="categoryPublishMethodCache" class="org.springframework.cache.ehcache.EhCacheFactoryBean">
        <property name="cacheManager" ref="cacheManager"/>
        <property name="cacheName" value="category.publish.METHOD_CACHE"/>
    </bean>

    <bean id="categoryPublishMethodCacheInterceptor" class="com.extendmedia.mlp.core.interceptor.MethodCacheInterceptor">
        <property name="cacheResult" value="true"/>
        <property name="cache">
            <ref local="categoryPublishMethodCache"/>
        </property>
    </bean>

    <bean id="categoryPublishMethodsCacheConfiguration" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
        <property name="advice" ref="categoryPublishMethodCacheInterceptor"/>
        <property name="patterns">
            <list>
                <value>.*publishCategory</value>
                <value>.*publishCategories</value>
            </list>
        </property>
    </bean>

 <property name="cacheName" value="category.publish.METHOD_CACHE"/> вот эта штука инициализируется здесь:
Код

<ehcache>
      <diskStore path="java.io.tmpdir"/>

    <defaultCache
            maxElementsInMemory="10000"
            eternal="false"
            timeToIdleSeconds="120"
            timeToLiveSeconds="120"
            overflowToDisk="true"
            diskPersistent="false"
            diskExpiryThreadIntervalSeconds="120"
            />

    <cache name="category.publish.METHOD_CACHE"
           maxElementsInMemory="100"
           eternal="false"
           timeToIdleSeconds="500"
           timeToLiveSeconds="500"
           overflowToDisk="true">
    </cache>
  
</ehcache>


вопрос1:
Есть веб- сервис, который должен менять параметры кеша.... тоесть юзер на странице выбирает сколько будет timeToLiveSeconds, запрос обрабатывается в веб-сервисе. Ну я что-то такое написал... вроде компилится... это вообще правильно или нет. 
Код

WebApplicationContext wac = WebApplicationContextUtils.getWebApplicationContext(m_servletContext);        
Cache bean = (Cache) wac.getBean("categoryPublishMethodCache");
bean.getCacheConfiguration().setTimeToLiveSeconds(1000);       


вопрос2:
ну и плюс юзер может делать flush... насколько понимаю это просто скидывание параметров кеша....тут можно вызвать просто: 
Код

WebApplicationContext wac = WebApplicationContextUtils.getWebApplicationContext(m_servletContext);        
Cache bean = (Cache) wac.getBean("categoryPublishMethodCache");
bean.flush();

Это нормально?

Автор: Andy_L20066 3.3.2009, 21:57
когда в вебсервисе меняю значение конфигурации... то MethodCacheInterceptor этих изменений не видит... он работает со старым филдом Cache
 smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)