当前位置: 首页 > 知识库问答 >
问题:

Liferay自定义实体缓存

桑坚
2023-03-14

我使用的是Liferay6.1版本。

我已经使用service Builder为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/classes]中。

<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文件相同。

由于我使用的是service builder,cache-enable=“true”就足以缓存实体了?

我使用jconsole来监视缓存命中,但问题是缓存未命中的百分比大于缓存命中的百分比。以下是我的缓存统计数据:

任何帮助都将不胜感激。

共有1个答案

饶铭
2023-03-14

对于使用liferay service Builder构建的服务,默认情况下启用缓存。

我相信上面提到的步骤都不需要,因为缓存是默认启用的。

下面的属性在default portal.properties中设置为true,并应用于所有实体,而不仅仅是自定义实体。

value.object.entity.cache.enabled=true
value.object.finder.cache.enabled=true

例如,使用cache off参数调用API不会命中cache。

 类似资料:
  • 自定义state缓存 TIP starter 内置了2种缓存实现 一种是上一节演示的默认实现 另一种是用户自定义的扩展实现。 本节将会使用JustAuth-demo (opens new window)进行演示扩展Redis缓存的方式,当然了,你也可以自定义实现你自己的缓存。 添加 Redis 依赖 <dependency> <groupId>org.springframework.boo

  • 我最近研究了一个使用Liferay 6.1的Android应用程序。但是,我无法使用Liferay API更新自定义字段的值。 我将自定义字段挂接到users_adminportlet用户/details.jsp,并使公共视图可访问: 还挂接到登录portletcreate_account.jsp: 因此,我需要一个定制的Web服务来通过http客户端访问这些值,以发布/获取值。知道从哪里开始找吗

  • 我对spring boot中的缓存技术很陌生,我在我的项目中使用了缓存。现在我有一个新的需求,需要设置缓存TTL,并且TTL必须在密钥基础上扩展。 E、 g.如果我将缓存过期时间设置为5分钟,则在缓存过期之前,必须检查传入密钥是否存在于缓存中。如果传入密钥存在于缓存中,则TTL必须延长5分钟,否则应清除或收回缓存,并创建新的缓存。 我希望我清楚我的要求,请提供我的解决方案与完美的例子,适合我的要求

  • 自定义缓存类使用说明 phpGrace 1.2.1 版本新增了自定义缓存类的功能,您可以将某个相同类型的缓存封装为一个类文件,便于项目的复用 (: 实现步骤 在 phpGrace/caches/ 文件夹下创建您的自定义缓存类文件 文件命名规则 : 缓存类名称.php 类命名规则 : class 缓存类名称 extends \cacheBase{} 使用命名空间 : namespace phpG

  • 我们正在使用firebase实时数据库,我正在考虑在本地实现一个缓存来减少重复调用。

  • 我正在尝试使用SearchContext、IndexSearcherHelperUtil和所有其他东西,为Liferay 7.3.5 GA6开发一个定制的web内容搜索portlet。 我有一些不同字段的DDM结构,从我在elasticsearch索引上看到的,这些字段在嵌套文档中被索引,如下所示: 这与我以前知道的旧方法不同,在旧方法中,自定义字段被索引为 现在我明白了 以下是代码: 这仍然是一