提交 cd32557d authored 作者: xueli.xue's avatar xueli.xue

项目名更新

上级 55f29157
...@@ -39,9 +39,9 @@ git.osc地址:http://git.oschina.net/xuxueli0323/xxl-job ...@@ -39,9 +39,9 @@ git.osc地址:http://git.oschina.net/xuxueli0323/xxl-job
5、支持“串行执行”,并行执行; 5、支持“串行执行”,并行执行;
说明:V1.2版本将系统架构按功能拆分为: 说明:V1.2版本将系统架构按功能拆分为:
调度模块[xxl-job-admin]:负责管理调度信息,按照调度配置发出调度请求; 调度模块(调度中心):负责管理调度信息,按照调度配置发出调度请求;
任务模块[xxl-job-client-demo]:负责接收调度请求并执行任务逻辑;任务模块可以方便的嵌入web项目,可以参考此demo 执行模块(执行器):负责接收调度请求并执行任务逻辑
通讯模块[xxl-job-client]:负责调度模块和任务模块之间的信息通讯; 通讯模块:负责调度模块和任务模块之间的信息通讯;
优点: 优点:
解耦:任务模块提供任务接口,调度模块维护调度信息,业务相互独立; 解耦:任务模块提供任务接口,调度模块维护调度信息,业务相互独立;
高扩展性; 高扩展性;
...@@ -57,6 +57,12 @@ git.osc地址:http://git.oschina.net/xuxueli0323/xxl-job ...@@ -57,6 +57,12 @@ git.osc地址:http://git.oschina.net/xuxueli0323/xxl-job
BEAN模式执行器:每个执行器都是Spring的一个Bean实例,XXL-JOB通过注解@JobHander识别和调度执行器; BEAN模式执行器:每个执行器都是Spring的一个Bean实例,XXL-JOB通过注解@JobHander识别和调度执行器;
GLUE模式执行器:每个执行器对应一段代码,在线Web编辑和维护,动态编译生效,执行器负责加载GLUE代码和执行; GLUE模式执行器:每个执行器对应一段代码,在线Web编辑和维护,动态编译生效,执行器负责加载GLUE代码和执行;
# 源码目录说明
/xxl-job-admin 【调度中心】:负责管理调度信息,按照调度配置发出调度请求;
/xxl-job-core 公共依赖
/xxl-job-executor-example 【执行器】:负责接收调度请求并执行任务逻辑;
/db 建表脚本
/doc 用户手册
# Tips # Tips
更多接入公司,欢迎在https://github.com/xuxueli/xxl-job/issues/1 登记。 更多接入公司,欢迎在https://github.com/xuxueli/xxl-job/issues/1 登记。
...@@ -64,4 +70,5 @@ git.osc地址:http://git.oschina.net/xuxueli0323/xxl-job ...@@ -64,4 +70,5 @@ git.osc地址:http://git.oschina.net/xuxueli0323/xxl-job
![image](http://images2015.cnblogs.com/blog/554415/201605/554415-20160513183306234-1939652116.png) ![image](http://images2015.cnblogs.com/blog/554415/201605/554415-20160513183306234-1939652116.png)
技术的发展离不开你的支持,请作者喝杯咖啡吧! 技术的发展离不开你的支持,请作者喝杯咖啡吧!
...@@ -3,3 +3,4 @@ ...@@ -3,3 +3,4 @@
/.classpath /.classpath
/.project /.project
/xxl-job-admin.iml /xxl-job-admin.iml
/target/
...@@ -144,10 +144,10 @@ ...@@ -144,10 +144,10 @@
<version>2.2.3</version> <version>2.2.3</version>
</dependency> </dependency>
<!-- xxl-job-client --> <!-- xxl-job-core -->
<dependency> <dependency>
<groupId>com.xxl</groupId> <groupId>com.xxl</groupId>
<artifactId>xxl-job-client</artifactId> <artifactId>xxl-job-core</artifactId>
<version>1.3.1</version> <version>1.3.1</version>
</dependency> </dependency>
......
package com.xxl.job.controller; package com.xxl.job.admin.controller;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
...@@ -10,10 +10,10 @@ import org.springframework.web.bind.annotation.RequestMapping; ...@@ -10,10 +10,10 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
import com.xxl.job.controller.annotation.PermessionLimit; import com.xxl.job.admin.controller.annotation.PermessionLimit;
import com.xxl.job.controller.interceptor.PermissionInterceptor; import com.xxl.job.admin.controller.interceptor.PermissionInterceptor;
import com.xxl.job.core.model.ReturnT; import com.xxl.job.admin.core.model.ReturnT;
import com.xxl.job.core.util.PropertiesUtil; import com.xxl.job.admin.core.util.PropertiesUtil;
/** /**
* index controller * index controller
......
package com.xxl.job.controller; package com.xxl.job.admin.controller;
import java.util.List; import java.util.List;
...@@ -10,11 +10,11 @@ import org.springframework.ui.Model; ...@@ -10,11 +10,11 @@ import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
import com.xxl.job.core.model.ReturnT; import com.xxl.job.admin.core.model.ReturnT;
import com.xxl.job.core.model.XxlJobInfo; import com.xxl.job.admin.core.model.XxlJobInfo;
import com.xxl.job.core.model.XxlJobLogGlue; import com.xxl.job.admin.core.model.XxlJobLogGlue;
import com.xxl.job.dao.IXxlJobInfoDao; import com.xxl.job.admin.dao.IXxlJobInfoDao;
import com.xxl.job.dao.IXxlJobLogGlueDao; import com.xxl.job.admin.dao.IXxlJobLogGlueDao;
/** /**
* job code controller * job code controller
......
package com.xxl.job.controller; package com.xxl.job.admin.controller;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
...@@ -15,16 +15,16 @@ import org.springframework.web.bind.annotation.RequestMapping; ...@@ -15,16 +15,16 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
import com.xxl.job.client.handler.HandlerRepository; import com.xxl.job.admin.core.constant.Constants.JobGroupEnum;
import com.xxl.job.client.util.JacksonUtil; import com.xxl.job.admin.core.jobbean.RemoteHttpJobBean;
import com.xxl.job.core.constant.Constants.JobGroupEnum; import com.xxl.job.admin.core.model.ReturnT;
import com.xxl.job.core.model.ReturnT; import com.xxl.job.admin.core.model.XxlJobInfo;
import com.xxl.job.core.model.XxlJobInfo; import com.xxl.job.admin.core.util.DynamicSchedulerUtil;
import com.xxl.job.core.util.DynamicSchedulerUtil; import com.xxl.job.admin.dao.IXxlJobInfoDao;
import com.xxl.job.dao.IXxlJobInfoDao; import com.xxl.job.admin.dao.IXxlJobLogDao;
import com.xxl.job.dao.IXxlJobLogDao; import com.xxl.job.admin.dao.IXxlJobLogGlueDao;
import com.xxl.job.dao.IXxlJobLogGlueDao; import com.xxl.job.core.handler.HandlerRepository;
import com.xxl.job.service.job.RemoteHttpJobBean; import com.xxl.job.core.util.JacksonUtil;
/** /**
* index controller * index controller
......
package com.xxl.job.controller; package com.xxl.job.admin.controller;
import java.text.ParseException; import java.text.ParseException;
import java.util.Date; import java.util.Date;
...@@ -16,14 +16,14 @@ import org.springframework.web.bind.annotation.RequestMapping; ...@@ -16,14 +16,14 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
import com.xxl.job.client.handler.HandlerRepository; import com.xxl.job.admin.core.constant.Constants.JobGroupEnum;
import com.xxl.job.client.util.HttpUtil; import com.xxl.job.admin.core.model.ReturnT;
import com.xxl.job.client.util.HttpUtil.RemoteCallBack; import com.xxl.job.admin.core.model.XxlJobLog;
import com.xxl.job.client.util.JacksonUtil; import com.xxl.job.admin.dao.IXxlJobLogDao;
import com.xxl.job.core.constant.Constants.JobGroupEnum; import com.xxl.job.core.handler.HandlerRepository;
import com.xxl.job.core.model.ReturnT; import com.xxl.job.core.util.HttpUtil;
import com.xxl.job.core.model.XxlJobLog; import com.xxl.job.core.util.HttpUtil.RemoteCallBack;
import com.xxl.job.dao.IXxlJobLogDao; import com.xxl.job.core.util.JacksonUtil;
/** /**
* index controller * index controller
......
package com.xxl.job.controller.annotation; package com.xxl.job.admin.controller.annotation;
import java.lang.annotation.ElementType; import java.lang.annotation.ElementType;
......
package com.xxl.job.controller.interceptor; package com.xxl.job.admin.controller.interceptor;
import java.util.HashMap; import java.util.HashMap;
......
package com.xxl.job.controller.interceptor; package com.xxl.job.admin.controller.interceptor;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
...@@ -6,8 +6,8 @@ import javax.servlet.http.HttpServletResponse; ...@@ -6,8 +6,8 @@ import javax.servlet.http.HttpServletResponse;
import org.springframework.web.method.HandlerMethod; import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
import com.xxl.job.controller.annotation.PermessionLimit; import com.xxl.job.admin.controller.annotation.PermessionLimit;
import com.xxl.job.core.util.CookieUtil; import com.xxl.job.admin.core.util.CookieUtil;
/** /**
* 权限拦截, 简易版 * 权限拦截, 简易版
......
package com.xxl.job.controller.resolver; package com.xxl.job.admin.controller.resolver;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
...@@ -10,8 +10,8 @@ import org.springframework.web.method.HandlerMethod; ...@@ -10,8 +10,8 @@ import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerExceptionResolver; import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
import com.xxl.job.client.util.JacksonUtil; import com.xxl.job.admin.core.model.ReturnT;
import com.xxl.job.core.model.ReturnT; import com.xxl.job.core.util.JacksonUtil;
/** /**
* common exception resolver * common exception resolver
......
package com.xxl.job.core.callback; package com.xxl.job.admin.core.callback;
import org.eclipse.jetty.server.Connector; import org.eclipse.jetty.server.Connector;
import org.eclipse.jetty.server.Handler; import org.eclipse.jetty.server.Handler;
...@@ -9,13 +9,13 @@ import org.eclipse.jetty.util.thread.ExecutorThreadPool; ...@@ -9,13 +9,13 @@ import org.eclipse.jetty.util.thread.ExecutorThreadPool;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import com.xxl.job.client.util.IpUtil; import com.xxl.job.core.util.IpUtil;
/** /**
* Created by xuxueli on 2016-5-22 11:15:42 * Created by xuxueli on 2016-5-22 11:15:42
*/ */
public class XxlJobCallbackServer { public class XxlJobLogCallbackServer {
private static final Logger logger = LoggerFactory.getLogger(XxlJobCallbackServer.class); private static final Logger logger = LoggerFactory.getLogger(XxlJobLogCallbackServer.class);
private static String trigger_log_address; private static String trigger_log_address;
public static String getTrigger_log_address() { public static String getTrigger_log_address() {
...@@ -43,7 +43,7 @@ public class XxlJobCallbackServer { ...@@ -43,7 +43,7 @@ public class XxlJobCallbackServer {
// handler // handler
HandlerCollection handlerc =new HandlerCollection(); HandlerCollection handlerc =new HandlerCollection();
handlerc.setHandlers(new Handler[]{new XxlJobCallbackServerHandler()}); handlerc.setHandlers(new Handler[]{new XxlJobLogCallbackServerHandler()});
server.setHandler(handlerc); server.setHandler(handlerc);
try { try {
......
package com.xxl.job.core.callback; package com.xxl.job.admin.core.callback;
import java.io.IOException; import java.io.IOException;
import java.util.Date; import java.util.Date;
...@@ -11,15 +11,15 @@ import org.apache.commons.lang.StringUtils; ...@@ -11,15 +11,15 @@ import org.apache.commons.lang.StringUtils;
import org.eclipse.jetty.server.Request; import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.handler.AbstractHandler; import org.eclipse.jetty.server.handler.AbstractHandler;
import com.xxl.job.client.util.HttpUtil.RemoteCallBack; import com.xxl.job.admin.core.model.XxlJobLog;
import com.xxl.job.client.util.JacksonUtil; import com.xxl.job.admin.core.util.DynamicSchedulerUtil;
import com.xxl.job.core.model.XxlJobLog; import com.xxl.job.core.util.HttpUtil.RemoteCallBack;
import com.xxl.job.core.util.DynamicSchedulerUtil; import com.xxl.job.core.util.JacksonUtil;
/** /**
* Created by xuxueli on 2016-5-22 11:15:42 * Created by xuxueli on 2016-5-22 11:15:42
*/ */
public class XxlJobCallbackServerHandler extends AbstractHandler { public class XxlJobLogCallbackServerHandler extends AbstractHandler {
@Override @Override
public void handle(String s, Request baseRequest, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws IOException, ServletException { public void handle(String s, Request baseRequest, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws IOException, ServletException {
......
package com.xxl.job.admin.core.jobbean;
//package com.xxl.job.service.job; //package com.xxl.job.service.job;
// //
//import java.io.PrintWriter; //import java.io.PrintWriter;
......
package com.xxl.job.service.job; package com.xxl.job.admin.core.jobbean;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
...@@ -11,15 +11,15 @@ import org.slf4j.Logger; ...@@ -11,15 +11,15 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.scheduling.quartz.QuartzJobBean; import org.springframework.scheduling.quartz.QuartzJobBean;
import com.xxl.job.client.handler.HandlerRepository; import com.xxl.job.admin.core.callback.XxlJobLogCallbackServer;
import com.xxl.job.client.util.HttpUtil; import com.xxl.job.admin.core.model.XxlJobInfo;
import com.xxl.job.client.util.HttpUtil.RemoteCallBack; import com.xxl.job.admin.core.model.XxlJobLog;
import com.xxl.job.client.util.JacksonUtil; import com.xxl.job.admin.core.thread.JobMonitorHelper;
import com.xxl.job.core.callback.XxlJobCallbackServer; import com.xxl.job.admin.core.util.DynamicSchedulerUtil;
import com.xxl.job.core.model.XxlJobInfo; import com.xxl.job.core.handler.HandlerRepository;
import com.xxl.job.core.model.XxlJobLog; import com.xxl.job.core.util.HttpUtil;
import com.xxl.job.core.thread.JobMonitorHelper; import com.xxl.job.core.util.HttpUtil.RemoteCallBack;
import com.xxl.job.core.util.DynamicSchedulerUtil; import com.xxl.job.core.util.JacksonUtil;
/** /**
* http job bean * http job bean
...@@ -58,7 +58,7 @@ public class RemoteHttpJobBean extends QuartzJobBean { ...@@ -58,7 +58,7 @@ public class RemoteHttpJobBean extends QuartzJobBean {
params.put(HandlerRepository.NAMESPACE, HandlerRepository.NameSpaceEnum.RUN.name()); params.put(HandlerRepository.NAMESPACE, HandlerRepository.NameSpaceEnum.RUN.name());
params.put(HandlerRepository.TRIGGER_LOG_ID, String.valueOf(jobLog.getId())); params.put(HandlerRepository.TRIGGER_LOG_ID, String.valueOf(jobLog.getId()));
params.put(HandlerRepository.TRIGGER_LOG_ADDRESS, XxlJobCallbackServer.getTrigger_log_address()); params.put(HandlerRepository.TRIGGER_LOG_ADDRESS, XxlJobLogCallbackServer.getTrigger_log_address());
params.put(HandlerRepository.HANDLER_NAME, jobDataMap.get(HandlerRepository.HANDLER_NAME)); params.put(HandlerRepository.HANDLER_NAME, jobDataMap.get(HandlerRepository.HANDLER_NAME));
params.put(HandlerRepository.HANDLER_PARAMS, jobDataMap.get(HandlerRepository.HANDLER_PARAMS)); params.put(HandlerRepository.HANDLER_PARAMS, jobDataMap.get(HandlerRepository.HANDLER_PARAMS));
......
package com.xxl.job.admin.core.jobbean.impl;
//package com.xxl.job.service.job.impl; //package com.xxl.job.service.job.impl;
// //
//import java.util.concurrent.TimeUnit; //import java.util.concurrent.TimeUnit;
......
package com.xxl.job.admin.core.jobbean.impl;
//package com.xxl.job.service.job.impl; //package com.xxl.job.service.job.impl;
// //
//import java.util.concurrent.TimeUnit; //import java.util.concurrent.TimeUnit;
......
package com.xxl.job.core.model; package com.xxl.job.admin.core.model;
/** /**
* common return * common return
......
package com.xxl.job.core.model; package com.xxl.job.admin.core.model;
import java.util.Date; import java.util.Date;
......
package com.xxl.job.core.model; package com.xxl.job.admin.core.model;
import java.util.Date; import java.util.Date;
......
package com.xxl.job.core.model; package com.xxl.job.admin.core.model;
/** /**
* xxl-job log for glue, used to track job code process * xxl-job log for glue, used to track job code process
......
package com.xxl.job.core.thread; package com.xxl.job.admin.core.thread;
import java.text.MessageFormat; import java.text.MessageFormat;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
...@@ -11,11 +11,11 @@ import org.apache.commons.lang.StringUtils; ...@@ -11,11 +11,11 @@ import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import com.xxl.job.client.util.HttpUtil.RemoteCallBack; import com.xxl.job.admin.core.model.XxlJobInfo;
import com.xxl.job.core.model.XxlJobInfo; import com.xxl.job.admin.core.model.XxlJobLog;
import com.xxl.job.core.model.XxlJobLog; import com.xxl.job.admin.core.util.DynamicSchedulerUtil;
import com.xxl.job.core.util.DynamicSchedulerUtil; import com.xxl.job.admin.core.util.MailUtil;
import com.xxl.job.core.util.MailUtil; import com.xxl.job.core.util.HttpUtil.RemoteCallBack;
/** /**
* job monitor helper * job monitor helper
...@@ -62,7 +62,7 @@ public class JobMonitorHelper { ...@@ -62,7 +62,7 @@ public class JobMonitorHelper {
XxlJobInfo info = DynamicSchedulerUtil.xxlJobInfoDao.load(log.getJobGroup(), log.getJobName()); XxlJobInfo info = DynamicSchedulerUtil.xxlJobInfoDao.load(log.getJobGroup(), log.getJobName());
if (count >= info.getAlarmThreshold()) { if (count >= info.getAlarmThreshold()) {
MailUtil.sendMail(info.getAlarmEmail(), "《调度平台中心-监控报警》", MailUtil.sendMail(info.getAlarmEmail(), "《调度平台中心-监控报警》",
MessageFormat.format("调度任务[{0}]失败报警,连续失败次数:", monotorKey, count), false, null); MessageFormat.format("调度任务[{0}]失败报警,连续失败次数:{1}", monotorKey, count), false, null);
countMap.remove(monotorKey); countMap.remove(monotorKey);
} }
} }
......
package com.xxl.job.core.util; package com.xxl.job.admin.core.util;
import javax.servlet.http.Cookie; import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
......
package com.xxl.job.core.util; package com.xxl.job.admin.core.util;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
...@@ -31,11 +31,11 @@ import org.springframework.context.ApplicationContext; ...@@ -31,11 +31,11 @@ import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware; import org.springframework.context.ApplicationContextAware;
import org.springframework.util.Assert; import org.springframework.util.Assert;
import com.xxl.job.client.util.JacksonUtil; import com.xxl.job.admin.core.callback.XxlJobLogCallbackServer;
import com.xxl.job.core.callback.XxlJobCallbackServer; import com.xxl.job.admin.core.model.XxlJobInfo;
import com.xxl.job.core.model.XxlJobInfo; import com.xxl.job.admin.dao.IXxlJobInfoDao;
import com.xxl.job.dao.IXxlJobInfoDao; import com.xxl.job.admin.dao.IXxlJobLogDao;
import com.xxl.job.dao.IXxlJobLogDao; import com.xxl.job.core.util.JacksonUtil;
/** /**
* base quartz scheduler util * base quartz scheduler util
...@@ -60,7 +60,7 @@ public final class DynamicSchedulerUtil implements ApplicationContextAware, Init ...@@ -60,7 +60,7 @@ public final class DynamicSchedulerUtil implements ApplicationContextAware, Init
public void init(){ public void init(){
try { try {
// start callback server // start callback server
new XxlJobCallbackServer().start(callBackPort); new XxlJobLogCallbackServer().start(callBackPort);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
......
package com.xxl.job.core.util; package com.xxl.job.admin.core.util;
import java.io.File; import java.io.File;
import java.util.Properties; import java.util.Properties;
......
package com.xxl.job.core.util; package com.xxl.job.admin.core.util;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.IOException; import java.io.IOException;
......
package com.xxl.job.dao; package com.xxl.job.admin.dao;
import java.util.List; import java.util.List;
import com.xxl.job.core.model.XxlJobInfo; import com.xxl.job.admin.core.model.XxlJobInfo;
/** /**
* job info * job info
......
package com.xxl.job.dao; package com.xxl.job.admin.dao;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import com.xxl.job.core.model.XxlJobLog; import com.xxl.job.admin.core.model.XxlJobLog;
/** /**
* job log * job log
......
package com.xxl.job.dao; package com.xxl.job.admin.dao;
import java.util.List; import java.util.List;
import com.xxl.job.core.model.XxlJobLogGlue; import com.xxl.job.admin.core.model.XxlJobLogGlue;
/** /**
* job log for glue * job log for glue
......
package com.xxl.job.dao.impl; package com.xxl.job.admin.dao.impl;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
...@@ -8,8 +8,8 @@ import javax.annotation.Resource; ...@@ -8,8 +8,8 @@ import javax.annotation.Resource;
import org.mybatis.spring.SqlSessionTemplate; import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import com.xxl.job.core.model.XxlJobInfo; import com.xxl.job.admin.core.model.XxlJobInfo;
import com.xxl.job.dao.IXxlJobInfoDao; import com.xxl.job.admin.dao.IXxlJobInfoDao;
/** /**
* job info * job info
......
package com.xxl.job.dao.impl; package com.xxl.job.admin.dao.impl;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
...@@ -9,8 +9,8 @@ import javax.annotation.Resource; ...@@ -9,8 +9,8 @@ import javax.annotation.Resource;
import org.mybatis.spring.SqlSessionTemplate; import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import com.xxl.job.core.model.XxlJobLog; import com.xxl.job.admin.core.model.XxlJobLog;
import com.xxl.job.dao.IXxlJobLogDao; import com.xxl.job.admin.dao.IXxlJobLogDao;
/** /**
* job log * job log
......
package com.xxl.job.dao.impl; package com.xxl.job.admin.dao.impl;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
...@@ -8,8 +8,8 @@ import javax.annotation.Resource; ...@@ -8,8 +8,8 @@ import javax.annotation.Resource;
import org.mybatis.spring.SqlSessionTemplate; import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import com.xxl.job.core.model.XxlJobLogGlue; import com.xxl.job.admin.core.model.XxlJobLogGlue;
import com.xxl.job.dao.IXxlJobLogGlueDao; import com.xxl.job.admin.dao.IXxlJobLogGlueDao;
/** /**
* job log for glue * job log for glue
......
...@@ -9,8 +9,7 @@ ...@@ -9,8 +9,7 @@
http://www.springframework.org/schema/util http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util.xsd"> http://www.springframework.org/schema/util/spring-util.xsd">
<context:annotation-config /> <context:component-scan base-package="com.xxl.job.admin.dao" />
<context:component-scan base-package="com.xxl.job.service, com.xxl.job.dao" />
<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"> <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<property name="templateLoaderPath" value="/WEB-INF/template/" /> <property name="templateLoaderPath" value="/WEB-INF/template/" />
...@@ -21,13 +20,4 @@ ...@@ -21,13 +20,4 @@
</property> </property>
</bean> </bean>
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="fileEncoding" value="utf-8" />
<property name="locations">
<list>
<value>classpath*:jdbc.properties</value>
</list>
</property>
</bean>
</beans> </beans>
\ No newline at end of file
...@@ -12,9 +12,17 @@ ...@@ -12,9 +12,17 @@
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"> http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
<context:annotation-config />
<context:component-scan base-package="com.xxl.service.impl, com.xxl.dao.impl" />
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="fileEncoding" value="utf-8" />
<property name="locations">
<list>
<value>classpath*:jdbc.properties</value>
</list>
</property>
</bean>
<!-- part 1 :for datasource -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="${c3p0.driverClass}" /> <property name="driverClass" value="${c3p0.driverClass}" />
<property name="jdbcUrl" value="${c3p0.url}" /> <property name="jdbcUrl" value="${c3p0.url}" />
...@@ -39,4 +47,28 @@ ...@@ -39,4 +47,28 @@
<constructor-arg index="0" ref="sqlSessionFactory" /> <constructor-arg index="0" ref="sqlSessionFactory" />
</bean> </bean>
<!-- part 2 :for tx -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="detail*" propagation="SUPPORTS" />
<tx:method name="visit*" propagation="SUPPORTS" />
<tx:method name="get*" propagation="SUPPORTS" />
<tx:method name="find*" propagation="SUPPORTS" />
<tx:method name="check*" propagation="SUPPORTS" />
<tx:method name="list*" propagation="SUPPORTS" />
<tx:method name="*" propagation="REQUIRED" rollback-for="exception" />
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="txoperation" expression="execution(* com.xxl.job.admin.service.imp.*.*(..))" />
<aop:advisor pointcut-ref="txoperation" advice-ref="txAdvice" />
</aop:config>
</beans> </beans>
\ No newline at end of file
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
</bean> </bean>
<!-- 协同-调度器 --> <!-- 协同-调度器 -->
<bean id="dynamicSchedulerUtil" class="com.xxl.job.core.util.DynamicSchedulerUtil" init-method="init"> <bean id="dynamicSchedulerUtil" class="com.xxl.job.admin.core.util.DynamicSchedulerUtil" init-method="init">
<!-- (轻易不要变更“调度器名称”, 任务创建时会绑定该“调度器名称”) --> <!-- (轻易不要变更“调度器名称”, 任务创建时会绑定该“调度器名称”) -->
<property name="scheduler" ref="quartzScheduler"/> <property name="scheduler" ref="quartzScheduler"/>
<property name="callBackPort" value="8888"/> <property name="callBackPort" value="8888"/>
......
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="detail*" propagation="SUPPORTS" />
<tx:method name="visit*" propagation="SUPPORTS" />
<tx:method name="get*" propagation="SUPPORTS" />
<tx:method name="find*" propagation="SUPPORTS" />
<tx:method name="check*" propagation="SUPPORTS" />
<tx:method name="list*" propagation="SUPPORTS" />
<tx:method name="*" propagation="REQUIRED" rollback-for="exception" />
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="txoperation" expression="execution(* com.xxl.service.imp.*.*(..))" />
<aop:advisor pointcut-ref="txoperation" advice-ref="txAdvice" />
</aop:config>
</beans>
\ No newline at end of file
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="XxlJobInfoMapper"> <mapper namespace="XxlJobInfoMapper">
<resultMap id="XxlJobInfo" type="com.xxl.job.core.model.XxlJobInfo" > <resultMap id="XxlJobInfo" type="com.xxl.job.admin.core.model.XxlJobInfo" >
<result column="id" property="id" /> <result column="id" property="id" />
<result column="job_group" property="jobGroup" /> <result column="job_group" property="jobGroup" />
...@@ -71,7 +71,7 @@ ...@@ -71,7 +71,7 @@
</trim> </trim>
</select> </select>
<insert id="save" parameterType="com.xxl.job.core.model.XxlJobInfo" useGeneratedKeys="true" keyProperty="id" > <insert id="save" parameterType="com.xxl.job.admin.core.model.XxlJobInfo" useGeneratedKeys="true" keyProperty="id" >
INSERT INTO `xxl_job_qrtz_trigger_info` ( INSERT INTO `xxl_job_qrtz_trigger_info` (
job_group, job_group,
job_name, job_name,
...@@ -115,7 +115,7 @@ ...@@ -115,7 +115,7 @@
AND t.job_name = #{jobName} AND t.job_name = #{jobName}
</select> </select>
<update id="update" parameterType="com.xxl.job.core.model.XxlJobInfo" > <update id="update" parameterType="com.xxl.job.admin.core.model.XxlJobInfo" >
UPDATE `xxl_job_qrtz_trigger_info` UPDATE `xxl_job_qrtz_trigger_info`
SET SET
job_cron = #{jobCron}, job_cron = #{jobCron},
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="XxlJobLogGlueMapper"> <mapper namespace="XxlJobLogGlueMapper">
<resultMap id="XxlJobLogGlue" type="com.xxl.job.core.model.XxlJobLogGlue" > <resultMap id="XxlJobLogGlue" type="com.xxl.job.admin.core.model.XxlJobLogGlue" >
<result column="id" property="id" /> <result column="id" property="id" />
<result column="job_group" property="jobGroup" /> <result column="job_group" property="jobGroup" />
<result column="job_name" property="jobName" /> <result column="job_name" property="jobName" />
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
t.update_time t.update_time
</sql> </sql>
<insert id="save" parameterType="com.xxl.job.core.model.XxlJobLogGlue" useGeneratedKeys="true" keyProperty="id" > <insert id="save" parameterType="com.xxl.job.admin.core.model.XxlJobLogGlue" useGeneratedKeys="true" keyProperty="id" >
INSERT INTO `xxl_job_qrtz_trigger_logglue` ( INSERT INTO `xxl_job_qrtz_trigger_logglue` (
`job_group`, `job_group`,
`job_name`, `job_name`,
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="XxlJobLogMapper"> <mapper namespace="XxlJobLogMapper">
<resultMap id="XxlJobLog" type="com.xxl.job.core.model.XxlJobLog" > <resultMap id="XxlJobLog" type="com.xxl.job.admin.core.model.XxlJobLog" >
<result column="id" property="id" /> <result column="id" property="id" />
<result column="job_group" property="jobGroup" /> <result column="job_group" property="jobGroup" />
...@@ -91,7 +91,7 @@ ...@@ -91,7 +91,7 @@
AND t.job_name = #{jobName} AND t.job_name = #{jobName}
</select> </select>
<insert id="save" parameterType="com.xxl.job.core.model.XxlJobLog" useGeneratedKeys="true" keyProperty="id" > <insert id="save" parameterType="com.xxl.job.admin.core.model.XxlJobLog" useGeneratedKeys="true" keyProperty="id" >
INSERT INTO `xxl_job_qrtz_trigger_log` ( INSERT INTO `xxl_job_qrtz_trigger_log` (
`job_group`, `job_group`,
`job_name`, `job_name`,
......
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
<mvc:annotation-driven /> <mvc:annotation-driven />
<context:component-scan base-package="com.xxl.job.controller" /> <context:component-scan base-package="com.xxl.job.admin.controller" />
<mvc:resources mapping="/favicon.ico" location="/favicon.ico" /> <mvc:resources mapping="/favicon.ico" location="/favicon.ico" />
<mvc:resources mapping="/static/**" location="/static/" /> <mvc:resources mapping="/static/**" location="/static/" />
...@@ -41,13 +41,13 @@ ...@@ -41,13 +41,13 @@
<mvc:interceptors> <mvc:interceptors>
<mvc:interceptor> <mvc:interceptor>
<mvc:mapping path="/**"/> <mvc:mapping path="/**"/>
<bean class="com.xxl.job.controller.interceptor.PermissionInterceptor"/> <bean class="com.xxl.job.admin.controller.interceptor.PermissionInterceptor"/>
</mvc:interceptor> </mvc:interceptor>
<mvc:interceptor> <mvc:interceptor>
<mvc:mapping path="/**"/> <mvc:mapping path="/**"/>
<bean class="com.xxl.job.controller.interceptor.CookieInterceptor"/> <bean class="com.xxl.job.admin.controller.interceptor.CookieInterceptor"/>
</mvc:interceptor> </mvc:interceptor>
</mvc:interceptors> </mvc:interceptors>
<bean id="exceptionResolver" class="com.xxl.job.controller.resolver.WebExceptionResolver" /> <bean id="exceptionResolver" class="com.xxl.job.admin.controller.resolver.WebExceptionResolver" />
</beans> </beans>
\ No newline at end of file
...@@ -9,8 +9,8 @@ import org.junit.runner.RunWith; ...@@ -9,8 +9,8 @@ import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import com.xxl.job.core.model.XxlJobInfo; import com.xxl.job.admin.core.model.XxlJobInfo;
import com.xxl.job.dao.IXxlJobInfoDao; import com.xxl.job.admin.dao.IXxlJobInfoDao;
@RunWith(SpringJUnit4ClassRunner.class) @RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath*:applicationcontext-*.xml") @ContextConfiguration(locations = "classpath*:applicationcontext-*.xml")
......
...@@ -10,10 +10,10 @@ import org.junit.runner.RunWith; ...@@ -10,10 +10,10 @@ import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import com.xxl.job.client.handler.IJobHandler; import com.xxl.job.admin.core.model.XxlJobLog;
import com.xxl.job.client.util.HttpUtil.RemoteCallBack; import com.xxl.job.admin.dao.IXxlJobLogDao;
import com.xxl.job.core.model.XxlJobLog; import com.xxl.job.core.handler.IJobHandler;
import com.xxl.job.dao.IXxlJobLogDao; import com.xxl.job.core.util.HttpUtil.RemoteCallBack;
@RunWith(SpringJUnit4ClassRunner.class) @RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath*:applicationcontext-*.xml") @ContextConfiguration(locations = "classpath*:applicationcontext-*.xml")
......
...@@ -3,3 +3,4 @@ ...@@ -3,3 +3,4 @@
/.project /.project
/.settings/ /.settings/
/xxl-job-client.iml /xxl-job-client.iml
/target/
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
<artifactId>xxl-job</artifactId> <artifactId>xxl-job</artifactId>
<version>1.3.0-SNAPSHOT</version> <version>1.3.0-SNAPSHOT</version>
</parent> </parent>
<artifactId>xxl-job-client</artifactId> <artifactId>xxl-job-core</artifactId>
<version>1.3.1</version> <version>1.3.1</version>
<dependencies> <dependencies>
......
package com.xxl.job.client.netcom.jetty; package com.xxl.job.core.executor.jetty;
import java.util.Map; import java.util.Map;
...@@ -14,15 +14,15 @@ import org.springframework.beans.BeansException; ...@@ -14,15 +14,15 @@ import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware; import org.springframework.context.ApplicationContextAware;
import com.xxl.job.client.handler.HandlerRepository; import com.xxl.job.core.handler.HandlerRepository;
import com.xxl.job.client.handler.IJobHandler; import com.xxl.job.core.handler.IJobHandler;
import com.xxl.job.client.handler.annotation.JobHander; import com.xxl.job.core.handler.annotation.JobHander;
/** /**
* Created by xuxueli on 2016/3/2 21:14. * Created by xuxueli on 2016/3/2 21:14.
*/ */
public class XxlJobJettyServer implements ApplicationContextAware { public class XxlJobExecutor implements ApplicationContextAware {
private static final Logger logger = LoggerFactory.getLogger(XxlJobJettyServer.class); private static final Logger logger = LoggerFactory.getLogger(XxlJobExecutor.class);
private int port = 9999; private int port = 9999;
public void setPort(int port) { public void setPort(int port) {
...@@ -45,7 +45,7 @@ public class XxlJobJettyServer implements ApplicationContextAware { ...@@ -45,7 +45,7 @@ public class XxlJobJettyServer implements ApplicationContextAware {
// handler // handler
HandlerCollection handlerc =new HandlerCollection(); HandlerCollection handlerc =new HandlerCollection();
handlerc.setHandlers(new Handler[]{new XxlJobJettyServerHandler()}); handlerc.setHandlers(new Handler[]{new XxlJobExecutorHandler()});
server.setHandler(handlerc); server.setHandler(handlerc);
try { try {
...@@ -64,7 +64,7 @@ public class XxlJobJettyServer implements ApplicationContextAware { ...@@ -64,7 +64,7 @@ public class XxlJobJettyServer implements ApplicationContextAware {
public static ApplicationContext applicationContext; public static ApplicationContext applicationContext;
@Override @Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
XxlJobJettyServer.applicationContext = applicationContext; XxlJobExecutor.applicationContext = applicationContext;
initJobHandler(); initJobHandler();
} }
...@@ -72,7 +72,7 @@ public class XxlJobJettyServer implements ApplicationContextAware { ...@@ -72,7 +72,7 @@ public class XxlJobJettyServer implements ApplicationContextAware {
* init job handler service * init job handler service
*/ */
public void initJobHandler(){ public void initJobHandler(){
Map<String, Object> serviceBeanMap = XxlJobJettyServer.applicationContext.getBeansWithAnnotation(JobHander.class); Map<String, Object> serviceBeanMap = XxlJobExecutor.applicationContext.getBeansWithAnnotation(JobHander.class);
if (serviceBeanMap!=null && serviceBeanMap.size()>0) { if (serviceBeanMap!=null && serviceBeanMap.size()>0) {
for (Object serviceBean : serviceBeanMap.values()) { for (Object serviceBean : serviceBeanMap.values()) {
String jobName = serviceBean.getClass().getAnnotation(JobHander.class).name(); String jobName = serviceBean.getClass().getAnnotation(JobHander.class).name();
......
package com.xxl.job.client.netcom.jetty; package com.xxl.job.core.executor.jetty;
import com.xxl.job.client.handler.HandlerRepository; import com.xxl.job.core.handler.HandlerRepository;
import org.eclipse.jetty.server.Request; import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.handler.AbstractHandler; import org.eclipse.jetty.server.handler.AbstractHandler;
...@@ -14,7 +14,7 @@ import java.util.Map; ...@@ -14,7 +14,7 @@ import java.util.Map;
/** /**
* Created by xuxueli on 2016/3/2 21:23. * Created by xuxueli on 2016/3/2 21:23.
*/ */
public class XxlJobJettyServerHandler extends AbstractHandler { public class XxlJobExecutorHandler extends AbstractHandler {
@Override @Override
public void handle(String s, Request baseRequest, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws IOException, ServletException { public void handle(String s, Request baseRequest, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws IOException, ServletException {
......
package com.xxl.job.client.glue; package com.xxl.job.core.glue;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.lang.reflect.Modifier; import java.lang.reflect.Modifier;
...@@ -13,10 +13,10 @@ import org.springframework.context.ApplicationContext; ...@@ -13,10 +13,10 @@ import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware; import org.springframework.context.ApplicationContextAware;
import org.springframework.core.annotation.AnnotationUtils; import org.springframework.core.annotation.AnnotationUtils;
import com.xxl.job.client.glue.cache.LocalCache; import com.xxl.job.core.glue.cache.LocalCache;
import com.xxl.job.client.glue.loader.GlueLoader; import com.xxl.job.core.glue.loader.GlueLoader;
import com.xxl.job.client.handler.IJobHandler; import com.xxl.job.core.handler.IJobHandler;
import com.xxl.job.client.handler.IJobHandler.JobHandleStatus; import com.xxl.job.core.handler.IJobHandler.JobHandleStatus;
import groovy.lang.GroovyClassLoader; import groovy.lang.GroovyClassLoader;
...@@ -158,7 +158,7 @@ public class GlueFactory implements ApplicationContextAware { ...@@ -158,7 +158,7 @@ public class GlueFactory implements ApplicationContextAware {
// ----------------------------- util ----------------------------- // ----------------------------- util -----------------------------
public static JobHandleStatus glue(String job_group, String job_name, String... params) throws Exception{ public static JobHandleStatus glue(String job_group, String job_name, String... params) throws Exception{
return GlueFactory.glueFactory.loadInstance(job_group, job_name).handle(params); return GlueFactory.glueFactory.loadInstance(job_group, job_name).execute(params);
} }
} }
package com.xxl.job.client.glue.cache; package com.xxl.job.core.glue.cache;
/** /**
* chche interface * chche interface
......
package com.xxl.job.client.glue.cache; package com.xxl.job.core.glue.cache;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
......
package com.xxl.job.client.glue.loader; package com.xxl.job.core.glue.loader;
/** /**
* code source loader * code source loader
......
package com.xxl.job.client.handler; package com.xxl.job.core.handler;
import java.util.Date; import java.util.Date;
import java.util.Map; import java.util.Map;
...@@ -7,10 +7,10 @@ import java.util.concurrent.ConcurrentHashMap; ...@@ -7,10 +7,10 @@ import java.util.concurrent.ConcurrentHashMap;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import com.xxl.job.client.handler.impl.GlueJobHandler; import com.xxl.job.core.handler.impl.GlueJobHandler;
import com.xxl.job.client.log.XxlJobFileAppender; import com.xxl.job.core.log.XxlJobFileAppender;
import com.xxl.job.client.util.HttpUtil.RemoteCallBack; import com.xxl.job.core.util.HttpUtil.RemoteCallBack;
import com.xxl.job.client.util.JacksonUtil; import com.xxl.job.core.util.JacksonUtil;
/** /**
* handler repository * handler repository
......
package com.xxl.job.client.handler; package com.xxl.job.core.handler;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.io.StringWriter; import java.io.StringWriter;
...@@ -11,10 +11,10 @@ import org.eclipse.jetty.util.ConcurrentHashSet; ...@@ -11,10 +11,10 @@ import org.eclipse.jetty.util.ConcurrentHashSet;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import com.xxl.job.client.handler.IJobHandler.JobHandleStatus; import com.xxl.job.core.handler.IJobHandler.JobHandleStatus;
import com.xxl.job.client.log.XxlJobFileAppender; import com.xxl.job.core.log.XxlJobFileAppender;
import com.xxl.job.client.util.HttpUtil; import com.xxl.job.core.util.HttpUtil;
import com.xxl.job.client.util.HttpUtil.RemoteCallBack; import com.xxl.job.core.util.HttpUtil.RemoteCallBack;
/** /**
* handler thread * handler thread
...@@ -79,7 +79,7 @@ public class HandlerThread extends Thread{ ...@@ -79,7 +79,7 @@ public class HandlerThread extends Thread{
try { try {
XxlJobFileAppender.contextHolder.set(trigger_log_id); XxlJobFileAppender.contextHolder.set(trigger_log_id);
logger.info(">>>>>>>>>>> xxl-job handle start."); logger.info(">>>>>>>>>>> xxl-job handle start.");
_status = handler.handle(handlerParams); _status = handler.execute(handlerParams);
} catch (Exception e) { } catch (Exception e) {
logger.info("HandlerThread Exception:", e); logger.info("HandlerThread Exception:", e);
StringWriter out = new StringWriter(); StringWriter out = new StringWriter();
......
package com.xxl.job.client.handler; package com.xxl.job.core.handler;
/** /**
* remote job handler * remote job handler
...@@ -13,7 +13,7 @@ public abstract class IJobHandler extends HandlerRepository{ ...@@ -13,7 +13,7 @@ public abstract class IJobHandler extends HandlerRepository{
* @return * @return
* @throws Exception * @throws Exception
*/ */
public abstract JobHandleStatus handle(String... params) throws Exception; public abstract JobHandleStatus execute(String... params) throws Exception;
public static enum JobHandleStatus{ public static enum JobHandleStatus{
/** /**
......
package com.xxl.job.client.handler.annotation; package com.xxl.job.core.handler.annotation;
import java.lang.annotation.ElementType; import java.lang.annotation.ElementType;
import java.lang.annotation.Retention; import java.lang.annotation.Retention;
......
package com.xxl.job.client.handler.impl; package com.xxl.job.core.handler.impl;
import com.xxl.job.client.glue.GlueFactory; import com.xxl.job.core.glue.GlueFactory;
import com.xxl.job.client.handler.IJobHandler; import com.xxl.job.core.handler.IJobHandler;
/** /**
* glue job handler * glue job handler
...@@ -17,7 +17,7 @@ public class GlueJobHandler extends IJobHandler { ...@@ -17,7 +17,7 @@ public class GlueJobHandler extends IJobHandler {
} }
@Override @Override
public JobHandleStatus handle(String... params) throws Exception { public JobHandleStatus execute(String... params) throws Exception {
return GlueFactory.glue(job_group, job_name, params); return GlueFactory.glue(job_group, job_name, params);
} }
......
package com.xxl.job.client.log; package com.xxl.job.core.log;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.File; import java.io.File;
......
package com.xxl.job.client.util; package com.xxl.job.core.util;
import java.io.IOException; import java.io.IOException;
import java.io.PrintWriter; import java.io.PrintWriter;
......
package com.xxl.job.client.util; package com.xxl.job.core.util;
import java.net.InetAddress; import java.net.InetAddress;
import java.net.NetworkInterface; import java.net.NetworkInterface;
......
package com.xxl.job.client.util; package com.xxl.job.core.util;
import java.io.IOException; import java.io.IOException;
......
...@@ -3,3 +3,4 @@ ...@@ -3,3 +3,4 @@
/.project /.project
/.settings/ /.settings/
/xxl-job-client-demo.iml /xxl-job-client-demo.iml
/target/
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
<artifactId>xxl-job</artifactId> <artifactId>xxl-job</artifactId>
<version>1.3.0-SNAPSHOT</version> <version>1.3.0-SNAPSHOT</version>
</parent> </parent>
<artifactId>xxl-job-client-demo</artifactId> <artifactId>xxl-job-executor-example</artifactId>
<version>1.3.1-SNAPSHOT</version> <version>1.3.1-SNAPSHOT</version>
<packaging>war</packaging> <packaging>war</packaging>
...@@ -75,10 +75,10 @@ ...@@ -75,10 +75,10 @@
<version>5.1.29</version> <version>5.1.29</version>
</dependency> </dependency>
<!-- xxl-job-client --> <!-- xxl-job-core -->
<dependency> <dependency>
<groupId>com.xxl</groupId> <groupId>com.xxl</groupId>
<artifactId>xxl-job-client</artifactId> <artifactId>xxl-job-core</artifactId>
<version>1.3.1</version> <version>1.3.1</version>
</dependency> </dependency>
......
package com.xxl.job.service.loader; package com.xxl.job.executor.loader;
import javax.annotation.Resource; import javax.annotation.Resource;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.xxl.job.client.glue.loader.GlueLoader; import com.xxl.job.core.glue.loader.GlueLoader;
import com.xxl.job.dao.IXxlJobInfoDao; import com.xxl.job.executor.loader.dao.IXxlJobInfoDao;
import com.xxl.job.dao.model.XxlJobInfo; import com.xxl.job.executor.loader.dao.model.XxlJobInfo;
/**
* GLUE 代码加载器,推荐将该服务配置成RPC服务
* @author xuxueli
*/
@Service("dbGlueLoader") @Service("dbGlueLoader")
public class DbGlueLoader implements GlueLoader { public class DbGlueLoader implements GlueLoader {
......
package com.xxl.job.dao; package com.xxl.job.executor.loader.dao;
import com.xxl.job.dao.model.XxlJobInfo; import com.xxl.job.executor.loader.dao.model.XxlJobInfo;
/** /**
* job log for glue * job log for glue
......
package com.xxl.job.dao.impl; package com.xxl.job.executor.loader.dao.impl;
import java.util.HashMap; import java.util.HashMap;
...@@ -7,8 +7,9 @@ import javax.annotation.Resource; ...@@ -7,8 +7,9 @@ import javax.annotation.Resource;
import org.mybatis.spring.SqlSessionTemplate; import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import com.xxl.job.dao.IXxlJobInfoDao; import com.xxl.job.executor.loader.dao.IXxlJobInfoDao;
import com.xxl.job.dao.model.XxlJobInfo; import com.xxl.job.executor.loader.dao.model.XxlJobInfo;
/** /**
* job log for glue * job log for glue
......
package com.xxl.job.service.handler; package com.xxl.job.executor.service.jobhandler;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.xxl.job.client.handler.IJobHandler; import com.xxl.job.core.handler.IJobHandler;
import com.xxl.job.client.handler.annotation.JobHander; import com.xxl.job.core.handler.annotation.JobHander;
/** /**
* demo job handler * 任务Handler的一个Demo(Bean模式)
*
* 开发步骤:
* 1、继承 “IJobHandler” ;
* 2、转配到Spring,例如加 “@Service” 注解;
* 3、加 “@JobHander” 注解,自定义属性name的值;name值在配置新任务是使用;
*
* @author xuxueli 2015-12-19 19:43:36 * @author xuxueli 2015-12-19 19:43:36
*/ */
@JobHander(name="demoJobHandler") @JobHander(name="demoJobHandler")
...@@ -17,7 +24,7 @@ public class DemoJobHandler extends IJobHandler { ...@@ -17,7 +24,7 @@ public class DemoJobHandler extends IJobHandler {
private static transient Logger logger = LoggerFactory.getLogger(DemoJobHandler.class); private static transient Logger logger = LoggerFactory.getLogger(DemoJobHandler.class);
@Override @Override
public JobHandleStatus handle(String... params) throws Exception { public JobHandleStatus execute(String... params) throws Exception {
logger.info("XXL-JOB, Hello World."); logger.info("XXL-JOB, Hello World.");
return JobHandleStatus.SUCCESS; return JobHandleStatus.SUCCESS;
} }
......
...@@ -12,8 +12,6 @@ ...@@ -12,8 +12,6 @@
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"> http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
<context:component-scan base-package="com.xxl.job.service, com.xxl.job.dao" />
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="fileEncoding" value="utf-8" /> <property name="fileEncoding" value="utf-8" />
<property name="locations"> <property name="locations">
......
...@@ -9,16 +9,16 @@ ...@@ -9,16 +9,16 @@
http://www.springframework.org/schema/util http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util.xsd"> http://www.springframework.org/schema/util/spring-util.xsd">
<context:component-scan base-package="com.xxl.job.service" /> <context:component-scan base-package="com.xxl.job.executor" />
<!-- 执行器 --> <!-- 执行器 -->
<bean id="xxlJobJettyServer" class="com.xxl.job.client.netcom.jetty.XxlJobJettyServer" init-method="start"> <bean id="xxlJobJettyServer" class="com.xxl.job.core.executor.jetty.XxlJobExecutor" init-method="start">
<property name="port" value="9999" /> <property name="port" value="9999" />
</bean> </bean>
<bean id="glueFactory" class="com.xxl.job.client.glue.GlueFactory"> <bean id="glueFactory" class="com.xxl.job.core.glue.GlueFactory">
<property name="cacheTimeout" value="5000" /> <property name="cacheTimeout" value="5000" />
<property name="glueLoader" ref="dbGlueLoader" /> <property name="glueLoader" ref="dbGlueLoader" /> <!-- GLUE 代码加载器,推荐将该服务配置成RPC服务 -->
</bean> </bean>
</beans> </beans>
\ No newline at end of file
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
</layout> </layout>
</appender> </appender>
<appender name="xxl-job" class="com.xxl.job.client.log.XxlJobFileAppender"> <appender name="xxl-job" class="com.xxl.job.core.log.XxlJobFileAppender">
<param name="filePath" value="/logs/xxl-job/"/> <param name="filePath" value="/logs/xxl-job/"/>
<param name="append" value="true"/> <param name="append" value="true"/>
<param name="encoding" value="UTF-8"/> <param name="encoding" value="UTF-8"/>
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="XxlJobInfoMapper"> <mapper namespace="XxlJobInfoMapper">
<resultMap id="XxlJobInfo" type="com.xxl.job.dao.model.XxlJobInfo" > <resultMap id="XxlJobInfo" type="com.xxl.job.executor.loader.dao.model.XxlJobInfo" >
<result column="job_group" property="jobGroup" /> <result column="job_group" property="jobGroup" />
<result column="job_name" property="jobName" /> <result column="job_name" property="jobName" />
<result column="glue_source" property="glueSource" /> <result column="glue_source" property="glueSource" />
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论