监听器 I_CmsPublishEventListener

I_CmsPublishEventListener是发布监听器的接口,定义自己的发布监听器需要实现这个接口。

 

public class EventListener implements I_CmsPublishEventListener {
    @Override
	public void onFinish(CmsPublishJobRunning publishJob) {
         //发布的资源
         List<CmsResource> list = publishJob.getPublishList().getFileList();
    }
……
}

 

在EventListener 类中重写接口中的方法,实现自己想要的功能。

 

I_CmsModuleAction是模块的Action接口,添加类ModuleAction

 

public class ModuleAction implements I_CmsModuleAction {

	@Override
	public void initialize(CmsObject adminCms,
			CmsConfigurationManager configurationManager, CmsModule module) {
		// 注册监听器
		OpenCms.getPublishManager().addPublishListener(new EventListener());
	}

……
}

 

当opencms系统启动是模块会调用initialize方法,完成监听器的注册。但在这之前需要在模块中配置,在编辑模块中,

配置操作java类这一项(ModuleAction类的包括包名的路径)。

 

附:

如果你想在监听器类中使用到CmsObject的对象,有一种修改opencms源码的方法。如下:

  

   监听器类中   onEnqueue 方法是把发布资源放到发布队列中的方法

@Override
	public void onEnqueue(CmsPublishJobBase publishJob) {

		CmsObject = publishJob.getCmsObject();
	}

 但是在CmsPublishJobBase 中并不包含getCmsObject();方法。可以修改CmsPublishJobBase类源码,在  CmsPublishJobBase 类中添加一个getCmsObject();方法。

 

public CmsObject getCmsObject(){
    	
    	return m_publishJob.getCmsObject();
    }

 将编译好后的CmsPublishJobBase.class文件,导入到Opencms模块中,在tomcat中WEB-INF\classes\下的.class文件会优先于jar包中的类。所以opencms会执行修改后的CmsPublishJobBase类

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值