中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

jspXCMS怎么開發定時任務

發布時間:2022-01-19 17:21:04 來源:億速云 閱讀:168 作者:iii 欄目:開發技術

這篇文章主要介紹了jspXCMS怎么開發定時任務的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇jspXCMS怎么開發定時任務文章都會有所收獲,下面我們一起來看看吧。

系統中有定時任務功能,里面有一些系統已經定義好的任務類型。如果系統自帶的任務類型里沒有自己需要的,可以開發一個任務類型。

本著無侵入的二次開發設計思想,開發一個自己的任務類型也可以做到不修改系統原有代碼和文件。

定時任務配置文件

Jspxcms8.0及以后版本:

/src/main/resources/conf/conf.properties

Jspxcms6.5-7.5版本:

/src/main/resources/conf/application.properties

Jspxcms6.0及以前的版本:

/WEB-INF/conf/application.properties

相關配置內容:

scheduleJob.100=com.jspxcms.core.quartz.InfoPublishJob
scheduleJobPath.com.jspxcms.core.quartz.InfoPublishJob=
scheduleJob.200=com.jspxcms.core.quartz.HtmlHomeJob
scheduleJobPath.com.jspxcms.core.quartz.HtmlHomeJob=
scheduleJob.300=com.jspxcms.ext.quartz.CollectJob
scheduleJobPath.com.jspxcms.ext.quartz.CollectJob=/cmscp/ext/collect/schedule_job.do

自定義的定時任務類型的配置也可以寫在其它的conf.properties文件中,如/src/main/resources/conf/plugin/plug/conf.properties。

定時任務類型序號

scheduleJob.300:序號300決定這個類型的排序,即在選擇任務類型時的前后順序。序號不能重復。

定時任務名稱

com.jspxcms.ext.quartz.CollectJob既是定時任務實現類,又是定時任務類型名稱。需要在國際化文件中定義相應的國際化名稱。

國際化文件(Jspxcms6.5及以后版本):/src/main/resources/messages/ext/ext.properties

國際化文件(Jspxcms6.0及以前的版本):/WEB-INF/messages/ext/ext.properties

scheduleJob.code.com.jspxcms.ext.quartz.CollectJob=采集

需以scheduleJob.code.開頭。國際化名稱也可以寫在其他文件中,如/src/main/resources/messages/plugin/plug/plug.properties。

定時任務實現類

com.jspxcms.ext.quartz.CollectJob是定時任務實現類。

public class CollectJob implements Job {
    private static final Logger logger = LoggerFactory
            .getLogger(CollectJob.class);

    public static final String COLLECT_ID = "collectId";

    public void execute(JobExecutionContext context)
            throws JobExecutionException {
        try {
            ApplicationContext appContext = (ApplicationContext) context
                    .getScheduler().getContext().get(Constants.APP_CONTEXT);
            Collector collector = appContext.getBean(Collector.class);
            JobDataMap map = context.getJobDetail().getJobDataMap();
            Integer collectId = map.getIntegerFromString(COLLECT_ID);
            collector.start(collectId);
            System.out.println("collect ok");
            logger.info("run collect job: " + collectId);
        } catch (SchedulerException e) {
            throw new JobExecutionException("Cannot get ApplicationContext", e);
        }
    }
}

需要實現org.quartz.Job接口,在public void execute(JobExecutionContext context)方法中編寫任務需要執行的代碼。

ApplicationContext appContext = (ApplicationContext) context.getScheduler().getContext().get(Constants.APP_CONTEXT);可以獲取Spring的ApplicationContext,通過ApplicationContext可以獲取到Spring管理的對象,如Collector collector = appContext.getBean(Collector.class);。注意:這個類中必須使用這種方法獲取Spring管理的對象,不能使用@Autowired等其他方式。

Integer collectId = map.getIntegerFromString(COLLECT_ID);可以獲取額外的參數。

額外的參數

scheduleJobPath.com.jspxcms.core.quartz.InfoPublishJob=如定時任務無需額外參數,則等號后面留空。

定時任務有時需要傳遞外的參數,比如采集定時任務需要選擇執行哪個采集數據源。此時需要在定時任務新增/修改界面增加相應的錄入項。

scheduleJobPath.com.jspxcms.ext.quartz.CollectJob=/cmscp/ext/collect/schedule_job.do

錄入界面的Controller

編寫一個獲取錄入界面的地址:/cmscp/ext/collect/schedule_job.do,這里使用相對路徑,相對于定時任務新增界面的地址。

此例中,這個地址的實現類是com.jspxcms.ext.web.back.CollectController。

@Controller
@RequestMapping("/ext/collect")
public class CollectController {
...
    @RequestMapping("schedule_job.do")
    public String scheduleJob(HttpServletRequest request, org.springframework.ui.Model modelMap) {
        Integer siteId = Context.getCurrentSiteId();
        List<Collect> collectList = service.findList(siteId);
        modelMap.addAttribute("collectList", collectList);
        modelMap.addAttribute("includePage", "../../ext/collect/collect_job.jsp");
        return "core/schedule_job/schedule_job_form";
    }
...
}
  • modelMap.addAttribute("collectList", collectList);傳遞數據。

  • modelMap.addAttribute("includePage", "../../ext/collect/collect_job.jsp");傳遞錄入界面。

錄入界面的JSP

根據Controller中傳遞的includePage的值,對應JSP頁面為:/WEB-INF/views/ext/collect/collect_job.jsp。

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="s" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="f" uri="http://www.jspxcms.com/tags/form"%>
  <tr>
    <td class="in-lab" width="15%"><s:message code="scheduleJob.collectSource"/>:</td>
    <td class="in-ctt" width="85%" colspan="3">
      <select name="data_collectId">
        <c:forEach var="collect" items="${collectList}">
        <f:option value="${collect.id}" selected="${dataMap['collectId']}">${collect.name}</f:option>
        </c:forEach>
      </select>
    </td>
  </tr>
  • <select name="data_collectId">:此處的data_collectId對應定時任務實現類CollectJob中獲取參數的方法Integer collectId = map.getIntegerFromString("collectId");

  • <c:forEach var="collect" items="${collectList}">:此處的${collectList}對應CollectController的modelMap.addAttribute("collectList", collectList);。

關于“jspXCMS怎么開發定時任務”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“jspXCMS怎么開發定時任務”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

曲松县| 南阳市| 万州区| 仙居县| 桐梓县| 朝阳县| 南康市| 沾益县| 凤阳县| 余干县| 临海市| 岱山县| 将乐县| 抚松县| 柳河县| 大竹县| 宁阳县| 灵丘县| 台南市| 峡江县| 丰原市| 渑池县| 孟连| 米林县| 临沭县| 教育| 当阳市| 铁力市| 大关县| 册亨县| 望谟县| 赫章县| 明溪县| 霸州市| 专栏| 吉首市| 达州市| 鹤峰县| 青岛市| 诏安县| 山西省|