docker部署xxl-job 通用反射执行器 (2)

这样全类名很长所以可以使用spring管理beanName获得实例进行反射

@Component @JobHandler(value = "BeanByNameHandler") public class BeanByNameHandler extends IJobHandler { @Autowired private ApplicationContext applicationContext; //根据spring管理的bean name获取指定类 @Override public ReturnT<String> execute(String param) throws Exception { XxlJobLogger.log(param); if (param == null || param.equals("")) { return new ReturnT<>(ReturnT.FAIL_CODE, "参数不能为空!"); } String[] split = param.split(","); if (split == null || split.length < 2) { return new ReturnT<>(ReturnT.FAIL_CODE, "参数格式错误,应为bean名称,方法名"); } Object o = applicationContext.getBean(split[0]); if(o == null){ return new ReturnT<>(ReturnT.FAIL_CODE,"类在applicationContext中不存在"); } Method method; try { method = o.getClass().getMethod(split[1]); }catch (Exception e){ return new ReturnT<>(ReturnT.FAIL_CODE,"方法"+split[1]+"不存在"); } try { method.invoke(o); }catch (Exception e){ return new ReturnT<>(ReturnT.FAIL_CODE,"调用方法失败"); } return new ReturnT<>(ReturnT.SUCCESS_CODE,"调用job成功"); } } 调用

在web界面新建任务 参数为 全类名,方法名即可。如下图所示

docker部署xxl-job 通用反射执行器


当然也可以执行shell脚本

docker部署xxl-job 通用反射执行器

缺点

xxl-job只支持mysql数据库,公司使用的Oracle 所以docker需要运行一个mysql数据库

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyxwyz.html