我正在使用liferay 6.1
版本。
我使用服务构建器为portlet创建了自定义实体。我想缓存那些自定义实体。
我在 portal-ext.properties 中设置了以下属性以启用缓存。
ehcache.statistics.enabled=true
value.object.entity.cache.enabled=true
value.object.finder.cache.enabled=true
velocity.engine.resource.manager.cache.enabled=true
layout.template.cache.enabled=true
net.sf.ehcache.configurationResourceName=/custom_cache/hibernate-clustered.xml
log4j.logger.net.sf.ehcache=DEBUG
log4j.logger.net.sf.ehcache.config=DEBUG
log4j.logger.net.sf.ehcache.distribution=DEBUG
log4j.logger.net.sf.ehcache.code=DEBUG
我创建了 ehcache.xml 文件来覆盖 ehcache-failsafe.xml 来配置我的自定义实体,以便它可以启用缓存。
我的 ehcache.xml 文件位于我的类路径 [classpath:liferay-portal-6.1.1-ce-ga2 / tomcat-7.0.27 / webapps / ROOT / WEB-INF /类]
<diskStore path="java.io.tmpdir/ehcache"/>
<defaultCache
maxElementsInMemory="10000"
eternal="false"
timeToIdleSeconds="120"
timeToLiveSeconds="120"
overflowToDisk="true"
maxElementsOnDisk="10000000"
diskPersistent="false"
diskExpiryThreadIntervalSeconds="120"
memoryStoreEvictionPolicy="LRU"
/>
<cache
eternal="false"
maxElementsInMemory="10000"
name="com.pr.test.model.impl.StudentImpl"
overflowToDisk="false"
timeToIdleSeconds="600"
timeToLiveSeconds="300"
statistics="true"
copyOnRead="true"
copyOnWrite="true"
clearOnFlush="true"
transactionalMode="off"
/>
在src路径 [/ docroot / WEB-INF / src] 下创建 hibernate-clustered.xml 文件,该文件与我的 ehcache.xml <相同/ strong>文件。
因为我正在使用服务构建器,所以cache-enable =&#34; true&#34;足以缓存实体?
我使用Jconsole
来监控缓存命中率,但问题是缓存未命中率的百分比高于缓存命中率。以下是我的缓存统计信息:
任何帮助将不胜感激。
答案 0 :(得分:4)
默认情况下,对使用liferay服务构建器构建的服务启用缓存。
我相信上面提到的步骤都不需要,因为默认启用了缓存。
默认portal.properties中的以下属性设置为true,并且适用于所有实体,而不仅适用于自定义实体。
value.object.entity.cache.enabled=true
value.object.finder.cache.enabled=true
您可以为自定义实体打开* PersistenceImpl.java类以观察缓存代码。调试此类可以为您提供有关其未达到缓存的原因的详细信息。
例如,使用缓存关闭参数调用API不会达到缓存。