首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenCms -定期更改文件的内容

OpenCms -定期更改文件的内容
EN

Stack Overflow用户
提问于 2010-02-15 17:09:50
回答 1查看 802关注 0票数 0

我正在定制我的OpenCms安装,并且已经创建了一个对象来交付我的部分内容。该对象每小时更改一次此内容。你能建议我如何在OpenCms启动时加载这个bean,以便它驻留在内存中并能够设置它的计时器吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-02-15 21:37:16

经过几个小时的研究和测试,我发现了两种方法:

1)将类定义为模块的Action类--我还没有测试过这种方法

2)使用管理层中可用的作业调度程序-这是我尝试过的,它工作得很好。您需要创建一个实现I_CmsScheduledJob接口的类,例如:

代码语言:javascript
复制
package com.xxx.Trial;

import org.opencms.file.*;
import org.opencms.main.*;
import org.opencms.scheduler.I_CmsScheduledJob;
import java.text.SimpleDateFormat;
import java.util.Calendar;


public class BuildTagCloud implements I_CmsScheduledJob {
  private String text;

  public String launch(CmsObject object, java.util.Map parameters) throws java.lang.Exception {
   Calendar cal = Calendar.getInstance();
   SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

   String data = "Last run: " + sdf.format(cal.getTime());
   this.text = data;

   String resname = "/system/modules/com.xxx.Trial/elements/file.jsp";
   // CmsObject object = OpenCms.initCmsObject("Guest");
   object.loginUser("Admin", "admin's password");

   CmsRequestContext cmsContext = object.getRequestContext();
   CmsProject curProject = cmsContext.currentProject();

   if(curProject.isOnlineProject()){
         CmsProject offlineProject = object.readProject("Offline");
         cmsContext.setCurrentProject(offlineProject);
   }
   CmsResource res = object.readResource(resname);
   object.lockResource(resname);
   CmsFile file = object.readFile(res);
   file.setContents(text.getBytes());
   object.writeFile(file);
   OpenCms.getPublishManager().publishResource(object, resname);
   object.unlockResource(resname);

   return text;

  }

}

我希望这能帮助到一些人!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2264864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档