0
我正在自定义我的OpenCms安装并创建了一个对象来传递我的部分内容。该对象在一个小时内更改此内容一次。您能否告诉我如何在OpenCms启动时加载这个bean,以便它驻留在内存中并能够设置它的计时器?OpenCms - 定期更改文件的内容
我正在自定义我的OpenCms安装并创建了一个对象来传递我的部分内容。该对象在一个小时内更改此内容一次。您能否告诉我如何在OpenCms启动时加载这个bean,以便它驻留在内存中并能够设置它的计时器?OpenCms - 定期更改文件的内容
的研究和试验一些小时后我发现这样做的方法有两种:
1)定义类Action类的模块 - 我没有测试过这种方法
2 )使用管理层中可用的作业调度程序 - 这是我试过的,它工作正常。你需要创建一个实现I_CmsScheduledJob接口的类,例如:
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;
}
}
我希望这可以帮助别人!