- 浏览: 47738 次
- 性别:
- 来自: 无锡
最新评论
-
RainWu:
...
chx 学习jForum笔记十四 数据表四 jforum_groups及jforum_user_groups -
c_huabo:
这都被你发现了!!!
chx 学习jForum笔记十七 实现中文搜索 -
beermonkey:
感谢啊。。。。
chx 学习jForum笔记十七 实现中文搜索
参照jforum原有的两个定时作业SummaryScheduler.java和POPJobStarter.java新建UserSyncScheduler.java
修改ConfigKeys.java文件,新增以下语句
public static final String USERSYNC_IS_ENABLED = "usersync.enabled";
修改SystemGlobals.properties文件,新增以下语句
usersync.enabled = true
修改quartz-forum.properties文件,新增以下语句:
# user sync 每天12点 org.quartz.context.usersync.cron.expression = 0 0 12 * * ?
仿照SummaryScheduler.java新建UserSyncSCheduler.java
package net.jforum.summary; import net.jforum.util.preferences.ConfigKeys; import net.jforum.util.preferences.SystemGlobals; import org.apache.log4j.Logger; import org.quartz.*; import org.quartz.impl.StdSchedulerFactory; import java.text.ParseException; public final class UserSyncScheduler { private static Scheduler scheduler; private static final Logger LOGGER = Logger.getLogger(UserSyncScheduler.class); private static boolean isStarted = false; private static final Object MUTEX = new Object(); /** * Starts the usersync Job. Conditions to start: Is not started yet and is enabled on the file * SystemGlobasl.properties. The to enable it is "usersync.enabled" * (ConfigKeys.USERSYNC_IS_ENABLED). * * @throws org.quartz.SchedulerException */ public static void startJob() throws SchedulerException { final boolean isEnabled = SystemGlobals.getBoolValue(ConfigKeys.USERSYNC_IS_ENABLED); synchronized (MUTEX) { if (!isStarted && isEnabled) { final String filename = SystemGlobals.getValue(ConfigKeys.QUARTZ_CONFIG); final String cronExpression = SystemGlobals.getValue("org.quartz.context.usersync.cron.expression"); scheduler = new StdSchedulerFactory(filename).getScheduler(); Trigger trigger = null; //触发器 try { trigger = new CronTrigger(UserSyncJob.class.getName(), "usersyncJob", cronExpression); LOGGER.info("Starting quartz usersync expression " + cronExpression); scheduler.scheduleJob(new JobDetail(UserSyncJob.class.getName(), "usersyncJob", UserSyncJob.class), trigger); scheduler.start(); } catch (ParseException e) { LOGGER.error(e.getMessage(), e); } } isStarted = true; } } /** * Stops the usersync Job. Conditions to stop: Is started and is enabled on the file * SystemGlobasl.properties. The to enable it is "usersync.enabled" * (ConfigKeys.USERSYNC_IS_ENABLED). * * @throws org.quartz.SchedulerException */ public static void stopJob() throws SchedulerException { final boolean isEnabled = SystemGlobals.getBoolValue(ConfigKeys.USERSYNC_IS_ENABLED); synchronized (MUTEX) { if (isStarted && isEnabled) { final String filename = SystemGlobals.getValue(ConfigKeys.QUARTZ_CONFIG); final String cronExpression = SystemGlobals.getValue("org.quartz.context.usersync.cron.expression"); scheduler = new StdSchedulerFactory(filename).getScheduler(); try { LOGGER.info("Stopping quartz usersync expression " + cronExpression); scheduler.shutdown(); } catch (SchedulerException e) { LOGGER.error(e.getMessage(), e); } } isStarted = false; } } private UserSyncScheduler() { } }
仿照SummaryJob.java新建 UserSyncJob.java
package net.jforum.summary; import net.jforum.dao.DataAccessDriver; import net.jforum.dao.GroupDAO; import net.jforum.entities.Group; import org.apache.log4j.Logger; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import java.util.List; public class UserSyncJob implements Job { private static final Logger LOGGER = Logger.getLogger(UserSyncJob.class); /** * @see org.quartz.Job#execute(org.quartz.JobExecutionContext) */ public void execute(final JobExecutionContext context) throws JobExecutionException { final GroupDAO groupdao = DataAccessDriver.getInstance().newGroupDAO(); try { groupdao.SynchronizationGroup(); //同步组 final List<Group> groups = groupdao.selectAll(); if (groups != null) { for (Group group : groups) { //同步组用户 groupdao.SynchronizationGroupUsers(group.getId()); } } } catch (Exception e) { LOGGER.warn(e); } } }
等着看效果了。
在ConfigLoader.java中新增
public static void startUserSyncJob() throws SchedulerException { UserSyncScheduler.startJob(); }
在JForum.java中的public void destroy()中新增
UserSyncScheduler.stopJob();
在JForumBaseServlet.java中的protected void startApplication()中新增
ConfigLoader.startUserSyncJob();
修改quartz-forum.properties文件内容相当重要,原先使用的
org.quartz.context.usersync.cron.expression = 0 0 12 * * *
没有任何效果,改成
org.quartz.context.usersync.cron.expression = 0 0 12 * * ?
后,就成功了.
发表评论
-
chx 学习jForum笔记十八 jForum与ms sqlserver
2011-02-23 16:39 7938jForum的原生数据库是mysql,但对sqlserver也 ... -
chx 学习jForum笔记十七 实现中文搜索
2011-02-23 16:04 1953最初测试的时候中文搜索一直都不成功。所以以为要对源程序进行大幅 ... -
chx 学习jForum笔记十六 实现附件移植,添加附件时按钮无效的问题解决
2011-02-23 15:59 3168==背景== 原论坛附件存放于d:\res\cibfo ... -
chx 学习jForum笔记十五 实现用户及用户组同步
2011-02-23 15:25 1747==背景== 原先有一个随时维护的用户表rswk、权限表ci ... -
chx 学习jForum笔记十四 数据表四 jforum_groups及jforum_user_groups
2011-02-14 14:07 1488jforum_groups group_id ... -
chx 学习jForum笔记十三 数据表三 jforum_roles及jforum_role_values
2011-02-12 16:19 1316jforum_roles 权限表。是一张组与基本权限的对应表。 ... -
chx 学习jForum笔记十二 数据表二 jforum_categories及jforum_forums
2011-02-12 15:05 1451jforum_categories是子论坛的分类以下称为栏目。 ... -
chx 学习jForum笔记十一 实现单点登录SSO
2011-02-09 11:55 2010分为三部分: 1.导入原用户数据库. 2.修改SSO模块, ... -
chx 学习jForum笔记十 数据表一 jforum_users
2011-02-09 10:35 1281user_id bigint ... -
chx 学习jForum笔记九-ForumAction四,发现用户注册模块
2010-12-09 14:27 20102010.12.9接上午。继续看net.jforum.view ... -
chx 学习jForum笔记八-ForumAction三,发现用户认证模块。
2010-12-09 11:15 17252010.12.9。接昨天 在net.jforum.view ... -
chx 学习jForum笔记七-ForumAction二
2010-12-08 17:24 11742010.12.8 接昨天。 下面这句是存在于net.jfo ... -
chx 学习jForum笔记六-MostUsersEverOnline的结束及ForumAction-list的开始
2010-12-07 15:54 23022010.12.7 继续查找关键字MostUsersEverO ... -
chx 学习jForum笔记五-参数表的操作
2010-12-07 15:05 10012010.12.7 继续查找关键字MostUsersEverO ... -
chx 学习jForum笔记四
2010-12-06 15:21 10162010.12.6 接上午。在net.jforum.repos ... -
chx 学习jForum笔记三
2010-12-06 14:05 10492010.12.6 接上周日,继续。PermissionCon ... -
chx 学习jForum笔记二
2010-12-05 10:26 1251我的源程序是安道森练 ... -
chx 学习jForum笔记一
2010-12-05 09:37 1683目标:jForum二次开发,读懂源程序。 修改权限管理模块, ...
相关推荐
《jForum与MS SQLServer整合学习笔记》 jForum是一款基于Java的开源论坛系统,它以其高度可定制性、灵活性和强大的功能深受开发者喜爱。在本文中,我们将深入探讨如何将jForum与Microsoft SQL Server(简称MS SQL...
【标题】"chx99个人主页源码_chx99.zip" 提供的是一个名为 chx99 的个人主页的源代码。源码通常包含了网站设计、布局、功能实现等核心部分,对于开发者而言是了解网站工作原理、学习前端技术或者进行二次开发的重要...
标题与描述中的关键词“CHX TNF JNK”揭示了在细胞凋亡机制中的相互作用,尤其是关于人类肝癌细胞对肿瘤坏死因子α(TNFα)诱导的凋亡反应。这一研究聚焦于理解CHX(环己亚胺)、TNFα以及JNK(c-Jun N端激酶)三者...
根据给定的文件信息,我们可以提炼出以下关于CHX2095的详细IT知识: ### CHX2095概述 **CHX2095**是一款由United Monolithic Semiconductors S.A.S.制造的频率倍增器集成电路(IC),其工作频率范围在7.5至30GHz...
CHX-I防火墙官方教程-附带翻译终稿.pdf
此外,对于初学者来说,阅读和理解CHX的源代码也是一个很好的学习C语言和理解十六进制编辑器工作原理的机会。 总的来说,CHX 是一款实用的终端工具,它的轻量级设计和高度可定制性使其成为开发人员和系统管理员的...
总之,通过对【CMS程序]chx99个人主页源码_chx99(ASP.NET源码)的深入研究,我们可以学习到ASP.NET Web Forms的开发技术,数据绑定,用户认证,配置管理,以及前端交互等多个方面,这将对提升我们的ASP.NET开发技能...
HA-SoftEther-CHX虚拟专网HA-SoftEther-CHX虚拟专网HA-SoftEther-CHX虚拟专网HA-SoftEther-CHX虚拟专网
这篇文章将详细讲解与"CHX612.zip"压缩包相关的知识点,主要涉及HX612触摸IC、STC15W408AS微控制器以及相关编程与接口技术。 首先,我们关注的是HX612,这是一款触摸传感器集成电路。不同于常见的I2C接口,HX612...
【标题】"chx99个人主页源码"是一个针对个人使用的网站源代码,它提供了构建个人在线展示空间的基础框架。个人主页源码通常包含了HTML、CSS、JavaScript等前端技术,有时也会涉及到PHP、Node.js等后端语言,用于实现...
CHX-3大手臂大法兰.SLDDRW
在给定的“Chx.rar”压缩包中,包含的主题是“最优化方法”和“梯度优化”,特别是“梯度法”。这表明压缩包里的资源可能涉及如何使用梯度信息来优化复杂问题的解决方案。 首先,我们要理解“最优化”是什么。最...
[CMS程序]chx99个人主页源码_chx99.zip源码ASP.NET网站源码打包下载[CMS程序]chx99个人主页源码_chx99.zip源码ASP.NET网站源码打包下载[CMS程序]chx99个人主页源码_chx99.zip源码ASP.NET网站源码打包下载[CMS程序]...
本软件是一个模似网卡和集线器的工具,可以模似集线器功能,实现VPN的功能。使得系统把此软件识别成一块网卡,有了这个东西,只要可以访问外网,都可以连接到虚拟HUB上与其他电脑组成局域网,在此虚拟的局域...
总的来说,"ASP.NET源码——[CMS程序]chx99个人主页源码.zip"是一个宝贵的学习资源,不仅展示了ASP.NET在实际项目中的应用,也提供了实践和理解Web开发最佳实践的机会。无论是初学者还是经验丰富的开发者,都能从中...
免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者或出版方,资料版权归原作者或出版方所有,...
CHX-I防火墙官方教程-附带翻译借鉴.pdf
北京大学的高级计算机系统结构课程深入探讨了指令级并行处理,特别是数据相关的概念,这是优化处理器性能的关键。在本课件中,主要讨论了三种数据相关类型:真数据相关(Data dependences)、名字相关(Name ...
通过研究这个源码,学习者不仅可以了解ASP.NET的基本概念和编程技巧,还可以深入理解CMS系统的架构和工作原理,对提升Web开发技能大有裨益。同时,如果你是个人站长,这个源码可以作为搭建自己个性化主页的起点,...