Browse Source

jobhandler加载方式更新

xueli.xue 9 years ago
parent
commit
0f4c412fcd

+ 1 - 1
xxl-job-admin/src/main/java/com/xxl/job/core/thread/JobMonitorHelper.java View File

24
 public class JobMonitorHelper {
24
 public class JobMonitorHelper {
25
 	private static Logger logger = LoggerFactory.getLogger(JobMonitorHelper.class);
25
 	private static Logger logger = LoggerFactory.getLogger(JobMonitorHelper.class);
26
 	
26
 	
27
-	public static JobMonitorHelper helper = new JobMonitorHelper();
27
+	private static JobMonitorHelper helper = new JobMonitorHelper();
28
 	private ExecutorService executor = Executors.newCachedThreadPool();
28
 	private ExecutorService executor = Executors.newCachedThreadPool();
29
 	private LinkedBlockingQueue<Integer> queue = new LinkedBlockingQueue<Integer>(0xfff8);
29
 	private LinkedBlockingQueue<Integer> queue = new LinkedBlockingQueue<Integer>(0xfff8);
30
 	private ConcurrentHashMap<String, Integer> countMap = new ConcurrentHashMap<String, Integer>();
30
 	private ConcurrentHashMap<String, Integer> countMap = new ConcurrentHashMap<String, Integer>();

+ 1 - 1
xxl-job-admin/src/main/java/com/xxl/job/service/job/RemoteHttpJobBean.java View File

62
 		params.put(HandlerRepository.HANDLER_NAME, jobDataMap.get(HandlerRepository.HANDLER_NAME));
62
 		params.put(HandlerRepository.HANDLER_NAME, jobDataMap.get(HandlerRepository.HANDLER_NAME));
63
 		params.put(HandlerRepository.HANDLER_PARAMS, jobDataMap.get(HandlerRepository.HANDLER_PARAMS));
63
 		params.put(HandlerRepository.HANDLER_PARAMS, jobDataMap.get(HandlerRepository.HANDLER_PARAMS));
64
 
64
 
65
-		// handler address, jetty or servlet
65
+		// handler address, jetty (servlet dead)
66
 		String handler_address = jobDataMap.get(HandlerRepository.HANDLER_ADDRESS);
66
 		String handler_address = jobDataMap.get(HandlerRepository.HANDLER_ADDRESS);
67
 		if (!handler_address.startsWith("http")){
67
 		if (!handler_address.startsWith("http")){
68
 			handler_address = "http://" + handler_address + "/";
68
 			handler_address = "http://" + handler_address + "/";

+ 1 - 1
xxl-job-admin/src/main/resources/config.properties View File

1
 # for trigger log callback
1
 # for trigger log callback
2
-trigger_log_url=http://localhost:8080/joblog/save
2
+trigger_log_url=http://localhost/joblog/save
3
 
3
 
4
 # for email
4
 # for email
5
 mail.host=smtp.163.com
5
 mail.host=smtp.163.com

+ 3 - 6
xxl-job-client-demo/src/main/java/com/xxl/job/service/handler/DemoJobHandler.java View File

6
 import org.slf4j.LoggerFactory;
6
 import org.slf4j.LoggerFactory;
7
 import org.springframework.stereotype.Service;
7
 import org.springframework.stereotype.Service;
8
 
8
 
9
-import com.xxl.job.client.handler.HandlerRepository;
10
 import com.xxl.job.client.handler.IJobHandler;
9
 import com.xxl.job.client.handler.IJobHandler;
10
+import com.xxl.job.client.handler.JobHander;
11
 
11
 
12
 /**
12
 /**
13
  * demo job handler
13
  * demo job handler
14
  * @author xuxueli 2015-12-19 19:43:36
14
  * @author xuxueli 2015-12-19 19:43:36
15
  */
15
  */
16
+@JobHander(jobName="demoJobHandler")
16
 @Service
17
 @Service
17
 public class DemoJobHandler extends IJobHandler {
18
 public class DemoJobHandler extends IJobHandler {
18
 	private static transient Logger logger = LoggerFactory.getLogger(DemoJobHandler.class);
19
 	private static transient Logger logger = LoggerFactory.getLogger(DemoJobHandler.class);
19
 	
20
 	
20
-	public DemoJobHandler() {
21
-		HandlerRepository.regist("demoJobHandler", this);
22
-	}
23
-	
24
 	@Override
21
 	@Override
25
 	public JobHandleStatus handle(String... params) throws Exception {
22
 	public JobHandleStatus handle(String... params) throws Exception {
26
 		logger.info(" ... params:" + params);
23
 		logger.info(" ... params:" + params);
27
-		for (int i = 0; i < 60; i++) {
24
+		for (int i = 0; i < 5; i++) {
28
 			TimeUnit.SECONDS.sleep(1);
25
 			TimeUnit.SECONDS.sleep(1);
29
 			logger.info("handler run:{}", i);
26
 			logger.info("handler run:{}", i);
30
 		}
27
 		}

+ 1 - 1
xxl-job-client-demo/src/main/webapp/WEB-INF/web.xml View File

20
 		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
20
 		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
21
 	</listener>
21
 	</listener>
22
 	
22
 	
23
-	<!-- Servlet任务执行器,推荐使用Jetty任务执行器 -->
23
+	<!-- [@Deprecated] Servlet任务执行器,推荐使用Jetty任务执行器 -->
24
 	<!-- 
24
 	<!-- 
25
 	<servlet>
25
 	<servlet>
26
 		<servlet-name>XxlJobServlet</servlet-name>
26
 		<servlet-name>XxlJobServlet</servlet-name>

+ 8 - 0
xxl-job-client/pom.xml View File

52
 			<artifactId>httpclient</artifactId>
52
 			<artifactId>httpclient</artifactId>
53
 			<version>4.3.6</version>
53
 			<version>4.3.6</version>
54
 		</dependency>
54
 		</dependency>
55
+		
56
+		<!-- spring-context -->
57
+		<dependency>
58
+			<groupId>org.springframework</groupId>
59
+			<artifactId>spring-context</artifactId>
60
+			<version>3.2.14.RELEASE</version>
61
+			<scope>compile</scope>
62
+		</dependency>
55
 
63
 
56
 	</dependencies>
64
 	</dependencies>
57
 
65
 

+ 18 - 0
xxl-job-client/src/main/java/com/xxl/job/client/handler/JobHander.java View File

1
+package com.xxl.job.client.handler;
2
+
3
+import java.lang.annotation.ElementType;
4
+import java.lang.annotation.Retention;
5
+import java.lang.annotation.RetentionPolicy;
6
+import java.lang.annotation.Target;
7
+
8
+/**
9
+ * annotation for job handler
10
+ * @author 2016-5-17 21:06:49
11
+ */
12
+@Target({ElementType.TYPE})
13
+@Retention(RetentionPolicy.RUNTIME)
14
+public @interface JobHander {
15
+
16
+    String jobName();
17
+    
18
+}

+ 33 - 1
xxl-job-client/src/main/java/com/xxl/job/client/netcom/jetty/XxlJobJettyServer.java View File

1
 package com.xxl.job.client.netcom.jetty;
1
 package com.xxl.job.client.netcom.jetty;
2
 
2
 
3
+import java.util.Map;
4
+
3
 import org.eclipse.jetty.server.Connector;
5
 import org.eclipse.jetty.server.Connector;
4
 import org.eclipse.jetty.server.Handler;
6
 import org.eclipse.jetty.server.Handler;
5
 import org.eclipse.jetty.server.Server;
7
 import org.eclipse.jetty.server.Server;
8
 import org.eclipse.jetty.util.thread.ExecutorThreadPool;
10
 import org.eclipse.jetty.util.thread.ExecutorThreadPool;
9
 import org.slf4j.Logger;
11
 import org.slf4j.Logger;
10
 import org.slf4j.LoggerFactory;
12
 import org.slf4j.LoggerFactory;
13
+import org.springframework.beans.BeansException;
14
+import org.springframework.context.ApplicationContext;
15
+import org.springframework.context.ApplicationContextAware;
16
+
17
+import com.xxl.job.client.handler.HandlerRepository;
18
+import com.xxl.job.client.handler.IJobHandler;
19
+import com.xxl.job.client.handler.JobHander;
11
 
20
 
12
 /**
21
 /**
13
  * Created by xuxueli on 2016/3/2 21:14.
22
  * Created by xuxueli on 2016/3/2 21:14.
14
  */
23
  */
15
-public class XxlJobJettyServer {
24
+public class XxlJobJettyServer implements ApplicationContextAware {
16
     private static final Logger logger = LoggerFactory.getLogger(XxlJobJettyServer.class);
25
     private static final Logger logger = LoggerFactory.getLogger(XxlJobJettyServer.class);
17
 
26
 
18
     private int port = 9999;
27
     private int port = 9999;
52
 
61
 
53
     }
62
     }
54
 
63
 
64
+    public static ApplicationContext applicationContext;
65
+	@Override
66
+	public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
67
+		XxlJobJettyServer.applicationContext = applicationContext;
68
+		initJobHandler();
69
+	}
70
+	
71
+	/**
72
+	 * init job handler service
73
+	 */
74
+	public void initJobHandler(){
75
+		Map<String, Object> serviceBeanMap = XxlJobJettyServer.applicationContext.getBeansWithAnnotation(JobHander.class);
76
+        if (serviceBeanMap!=null && serviceBeanMap.size()>0) {
77
+            for (Object serviceBean : serviceBeanMap.values()) {
78
+                String jobName = serviceBean.getClass().getAnnotation(JobHander.class).jobName();
79
+                if (jobName!=null && jobName.trim().length()>0 && serviceBean instanceof IJobHandler) {
80
+                	IJobHandler handler = (IJobHandler) serviceBean;
81
+                	HandlerRepository.regist(jobName, handler);
82
+				}
83
+            }
84
+        }
85
+	}
86
+
55
 }
87
 }

+ 61 - 60
xxl-job-client/src/main/java/com/xxl/job/client/netcom/servlet/XxlJobServlet.java View File

1
-package com.xxl.job.client.netcom.servlet;
2
-
3
-
4
-import java.io.IOException;
5
-import java.util.HashMap;
6
-import java.util.Map;
7
-
8
-import javax.servlet.ServletException;
9
-import javax.servlet.http.HttpServlet;
10
-import javax.servlet.http.HttpServletRequest;
11
-import javax.servlet.http.HttpServletResponse;
12
-
13
-import com.xxl.job.client.handler.HandlerRepository;
14
-
15
-
16
-/**
17
- * remote job client on http
18
- * @author xuxueli 2015-12-19 18:36:47
19
- */
20
-public class XxlJobServlet extends HttpServlet {
21
-	private static final long serialVersionUID = 1L;
22
-
23
-    /**
24
-     * Default constructor. 
25
-     */
26
-    public XxlJobServlet() {
27
-        // TODO Auto-generated constructor stub
28
-    }
29
-    
30
-	/**
31
-	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
32
-	 */
33
-	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
34
-		request.setCharacterEncoding("UTF-8");
35
-		response.setCharacterEncoding("UTF-8");
36
-		
37
-		Map<String, String> _param = new HashMap<String, String>();
38
-		if (request.getParameterMap()!=null && request.getParameterMap().size()>0) {
39
-			for (Object paramKey : request.getParameterMap().keySet()) {
40
-				if (paramKey!=null) {
41
-					String paramKeyStr = paramKey.toString();
42
-					_param.put(paramKeyStr, request.getParameter(paramKeyStr));
43
-				}
44
-			}
45
-		}
46
-		
47
-		String resp = HandlerRepository.service(_param);
48
-		response.getWriter().append(resp);
49
-		return;
50
-	}
51
-
52
-	/**
53
-	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
54
-	 */
55
-	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
56
-		// TODO Auto-generated method stub
57
-		doGet(request, response);
58
-	}
59
-
60
-}
1
+//package com.xxl.job.client.netcom.servlet;
2
+//
3
+//
4
+//import java.io.IOException;
5
+//import java.util.HashMap;
6
+//import java.util.Map;
7
+//
8
+//import javax.servlet.ServletException;
9
+//import javax.servlet.http.HttpServlet;
10
+//import javax.servlet.http.HttpServletRequest;
11
+//import javax.servlet.http.HttpServletResponse;
12
+//
13
+//import com.xxl.job.client.handler.HandlerRepository;
14
+//
15
+//
16
+///**
17
+// * remote job client on http
18
+// * @author xuxueli 2015-12-19 18:36:47
19
+// */
20
+//@Deprecated
21
+//public class XxlJobServlet extends HttpServlet {
22
+//	private static final long serialVersionUID = 1L;
23
+//
24
+//    /**
25
+//     * Default constructor. 
26
+//     */
27
+//    public XxlJobServlet() {
28
+//        // TODO Auto-generated constructor stub
29
+//    }
30
+//    
31
+//	/**
32
+//	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
33
+//	 */
34
+//	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
35
+//		request.setCharacterEncoding("UTF-8");
36
+//		response.setCharacterEncoding("UTF-8");
37
+//		
38
+//		Map<String, String> _param = new HashMap<String, String>();
39
+//		if (request.getParameterMap()!=null && request.getParameterMap().size()>0) {
40
+//			for (Object paramKey : request.getParameterMap().keySet()) {
41
+//				if (paramKey!=null) {
42
+//					String paramKeyStr = paramKey.toString();
43
+//					_param.put(paramKeyStr, request.getParameter(paramKeyStr));
44
+//				}
45
+//			}
46
+//		}
47
+//		
48
+//		String resp = HandlerRepository.service(_param);
49
+//		response.getWriter().append(resp);
50
+//		return;
51
+//	}
52
+//
53
+//	/**
54
+//	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
55
+//	 */
56
+//	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
57
+//		// TODO Auto-generated method stub
58
+//		doGet(request, response);
59
+//	}
60
+//
61
+//}