浏览代码

调度中心配置加载优化,取消对配置文件名的强依赖,支持加载磁盘配置;

xuxueli 8 年前
父节点
当前提交
18991c3f5b

+ 1 - 0
doc/XXL-JOB官方文档.md 查看文件

1146
 - 3、调度报表优化,报表SQL调优并且新增LocalCache缓存(缓存时间60s),提高大数据量下报表加载速度;
1146
 - 3、调度报表优化,报表SQL调优并且新增LocalCache缓存(缓存时间60s),提高大数据量下报表加载速度;
1147
 - 4、修复打包部署时资源文件乱码问题;
1147
 - 4、修复打包部署时资源文件乱码问题;
1148
 - 5、修复新版本chrome滚动到顶部失效问题;
1148
 - 5、修复新版本chrome滚动到顶部失效问题;
1149
+- 6、调度中心配置加载优化,取消对配置文件名的强依赖,支持加载磁盘配置;
1149
 
1150
 
1150
 
1151
 
1151
 ### TODO LIST
1152
 ### TODO LIST

+ 3 - 3
xxl-job-admin/src/main/java/com/xxl/job/admin/controller/interceptor/PermissionInterceptor.java 查看文件

1
 package com.xxl.job.admin.controller.interceptor;
1
 package com.xxl.job.admin.controller.interceptor;
2
 
2
 
3
 import com.xxl.job.admin.controller.annotation.PermessionLimit;
3
 import com.xxl.job.admin.controller.annotation.PermessionLimit;
4
+import com.xxl.job.admin.core.conf.XxlJobAdminConfig;
4
 import com.xxl.job.admin.core.util.CookieUtil;
5
 import com.xxl.job.admin.core.util.CookieUtil;
5
-import com.xxl.job.admin.core.util.PropertiesUtil;
6
 import org.apache.commons.codec.digest.DigestUtils;
6
 import org.apache.commons.codec.digest.DigestUtils;
7
 import org.springframework.web.method.HandlerMethod;
7
 import org.springframework.web.method.HandlerMethod;
8
 import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
8
 import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
22
 	public static final String LOGIN_IDENTITY_KEY = "XXL_JOB_LOGIN_IDENTITY";
22
 	public static final String LOGIN_IDENTITY_KEY = "XXL_JOB_LOGIN_IDENTITY";
23
 	public static final String LOGIN_IDENTITY_TOKEN;
23
 	public static final String LOGIN_IDENTITY_TOKEN;
24
     static {
24
     static {
25
-        String username = PropertiesUtil.getString("xxl.job.login.username");
26
-        String password = PropertiesUtil.getString("xxl.job.login.password");
25
+        String username = XxlJobAdminConfig.getAdminConfig().getLoginUsername();
26
+        String password = XxlJobAdminConfig.getAdminConfig().getLoginPassword();
27
 
27
 
28
         // login token
28
         // login token
29
         String tokenTmp = DigestUtils.md5Hex(username + "_" + password);
29
         String tokenTmp = DigestUtils.md5Hex(username + "_" + password);

+ 81 - 0
xxl-job-admin/src/main/java/com/xxl/job/admin/core/conf/XxlJobAdminConfig.java 查看文件

1
+package com.xxl.job.admin.core.conf;
2
+
3
+import org.springframework.beans.factory.InitializingBean;
4
+import org.springframework.beans.factory.annotation.Value;
5
+import org.springframework.context.annotation.Configuration;
6
+
7
+/**
8
+ * xxl-job config
9
+ *
10
+ * @author xuxueli 2017-04-28
11
+ */
12
+@Configuration
13
+public class XxlJobAdminConfig implements InitializingBean{
14
+    private static XxlJobAdminConfig adminConfig = null;
15
+    public static XxlJobAdminConfig getAdminConfig() {
16
+        return adminConfig;
17
+    }
18
+
19
+    @Override
20
+    public void afterPropertiesSet() throws Exception {
21
+        adminConfig = this;
22
+    }
23
+
24
+    @Value("${xxl.job.mail.host}")
25
+    private String mailHost;
26
+
27
+    @Value("${xxl.job.mail.port}")
28
+    private String mailPort;
29
+
30
+    @Value("${xxl.job.mail.username}")
31
+    private String mailUsername;
32
+
33
+    @Value("${xxl.job.mail.password}")
34
+    private String mailPassword;
35
+
36
+    @Value("${xxl.job.mail.sendNick}")
37
+    private String mailSendNick;
38
+
39
+    @Value("${xxl.job.login.username}")
40
+    private String loginUsername;
41
+
42
+    @Value("${xxl.job.login.password}")
43
+    private String loginPassword;
44
+
45
+    @Value("${xxl.job.i18n}")
46
+    private String i18n;
47
+
48
+
49
+    public String getMailHost() {
50
+        return mailHost;
51
+    }
52
+
53
+    public String getMailPort() {
54
+        return mailPort;
55
+    }
56
+
57
+    public String getMailUsername() {
58
+        return mailUsername;
59
+    }
60
+
61
+    public String getMailPassword() {
62
+        return mailPassword;
63
+    }
64
+
65
+    public String getMailSendNick() {
66
+        return mailSendNick;
67
+    }
68
+
69
+    public String getLoginUsername() {
70
+        return loginUsername;
71
+    }
72
+
73
+    public String getLoginPassword() {
74
+        return loginPassword;
75
+    }
76
+
77
+    public String getI18n() {
78
+        return i18n;
79
+    }
80
+
81
+}

+ 4 - 5
xxl-job-admin/src/main/java/com/xxl/job/admin/core/util/I18nUtil.java 查看文件

1
 package com.xxl.job.admin.core.util;
1
 package com.xxl.job.admin.core.util;
2
 
2
 
3
+import com.xxl.job.admin.core.conf.XxlJobAdminConfig;
3
 import com.xxl.job.core.util.JacksonUtil;
4
 import com.xxl.job.core.util.JacksonUtil;
4
 import org.apache.commons.lang3.StringUtils;
5
 import org.apache.commons.lang3.StringUtils;
5
 import org.slf4j.Logger;
6
 import org.slf4j.Logger;
23
 public class I18nUtil {
24
 public class I18nUtil {
24
     private static Logger logger = LoggerFactory.getLogger(I18nUtil.class);
25
     private static Logger logger = LoggerFactory.getLogger(I18nUtil.class);
25
 
26
 
26
-    private static final String I18N_PROP_CACHE = "i18n_prop_cache";
27
+    private static Properties prop = null;
27
     public static Properties loadI18nProp(){
28
     public static Properties loadI18nProp(){
28
-        Properties prop = (Properties) LocalCacheUtil.get(I18N_PROP_CACHE);
29
         if (prop != null) {
29
         if (prop != null) {
30
             return prop;
30
             return prop;
31
         }
31
         }
32
         try {
32
         try {
33
             // bild i18n prop
33
             // bild i18n prop
34
-            String i18n = PropertiesUtil.getString("xxl.job.i18n");
34
+            String i18n = XxlJobAdminConfig.getAdminConfig().getI18n();
35
             i18n = StringUtils.isNotBlank(i18n)?("_"+i18n):i18n;
35
             i18n = StringUtils.isNotBlank(i18n)?("_"+i18n):i18n;
36
-            String i18nFile =MessageFormat.format("i18n/message{0}.properties", i18n);
36
+            String i18nFile = MessageFormat.format("i18n/message{0}.properties", i18n);
37
 
37
 
38
             // load prop
38
             // load prop
39
             Resource resource = new ClassPathResource(i18nFile);
39
             Resource resource = new ClassPathResource(i18nFile);
40
             EncodedResource encodedResource = new EncodedResource(resource,"UTF-8");
40
             EncodedResource encodedResource = new EncodedResource(resource,"UTF-8");
41
             prop = PropertiesLoaderUtils.loadProperties(encodedResource);
41
             prop = PropertiesLoaderUtils.loadProperties(encodedResource);
42
-            LocalCacheUtil.set(I18N_PROP_CACHE, prop, 60*1000);     // cache 60s
43
         } catch (IOException e) {
42
         } catch (IOException e) {
44
             logger.error(e.getMessage(), e);
43
             logger.error(e.getMessage(), e);
45
         }
44
         }

+ 5 - 17
xxl-job-admin/src/main/java/com/xxl/job/admin/core/util/MailUtil.java 查看文件

1
 package com.xxl.job.admin.core.util;
1
 package com.xxl.job.admin.core.util;
2
 
2
 
3
+import com.xxl.job.admin.core.conf.XxlJobAdminConfig;
3
 import org.apache.commons.mail.DefaultAuthenticator;
4
 import org.apache.commons.mail.DefaultAuthenticator;
4
 import org.apache.commons.mail.EmailException;
5
 import org.apache.commons.mail.EmailException;
5
 import org.apache.commons.mail.HtmlEmail;
6
 import org.apache.commons.mail.HtmlEmail;
16
 public class MailUtil {
17
 public class MailUtil {
17
 	private static Logger logger = LoggerFactory.getLogger(MailUtil.class);
18
 	private static Logger logger = LoggerFactory.getLogger(MailUtil.class);
18
 	
19
 	
19
-	private static String host;
20
-	private static String port;
21
-	private static String username;
22
-	private static String password;
23
-	private static String sendNick;
24
-	static{
25
-		host = PropertiesUtil.getString("xxl.job.mail.host");
26
-		port = PropertiesUtil.getString("xxl.job.mail.port");
27
-		username = PropertiesUtil.getString("xxl.job.mail.username");
28
-		password = PropertiesUtil.getString("xxl.job.mail.password");
29
-		sendNick = PropertiesUtil.getString("xxl.job.mail.sendNick");
30
-	}
31
-
32
 	/**
20
 	/**
33
 	 *
21
 	 *
34
 	 * @param toAddress		收件人邮箱
22
 	 * @param toAddress		收件人邮箱
46
 			//email.setTLS(true);		// 是否TLS校验,,某些邮箱需要TLS安全校验,同理有SSL校验
34
 			//email.setTLS(true);		// 是否TLS校验,,某些邮箱需要TLS安全校验,同理有SSL校验
47
 			//email.setSSL(true);
35
 			//email.setSSL(true);
48
 
36
 
49
-			email.setHostName(host);
50
-			email.setSmtpPort(Integer.valueOf(port));
37
+			email.setHostName(XxlJobAdminConfig.getAdminConfig().getMailHost());
38
+			email.setSmtpPort(Integer.valueOf(XxlJobAdminConfig.getAdminConfig().getMailPort()));
51
 			//email.setSslSmtpPort(port);
39
 			//email.setSslSmtpPort(port);
52
-			email.setAuthenticator(new DefaultAuthenticator(username, password));
40
+			email.setAuthenticator(new DefaultAuthenticator(XxlJobAdminConfig.getAdminConfig().getMailUsername(), XxlJobAdminConfig.getAdminConfig().getMailPassword()));
53
 			email.setCharset(Charset.defaultCharset().name());
41
 			email.setCharset(Charset.defaultCharset().name());
54
 
42
 
55
-			email.setFrom(username, sendNick);
43
+			email.setFrom(XxlJobAdminConfig.getAdminConfig().getMailUsername(), XxlJobAdminConfig.getAdminConfig().getMailSendNick());
56
 			email.addTo(toAddress);
44
 			email.addTo(toAddress);
57
 			email.setSubject(mailSubject);
45
 			email.setSubject(mailSubject);
58
 			email.setMsg(mailBody);
46
 			email.setMsg(mailBody);

+ 0 - 38
xxl-job-admin/src/main/java/com/xxl/job/admin/core/util/PropertiesUtil.java 查看文件

1
-package com.xxl.job.admin.core.util;
2
-
3
-import org.slf4j.Logger;
4
-import org.slf4j.LoggerFactory;
5
-import org.springframework.core.io.ClassPathResource;
6
-import org.springframework.core.io.Resource;
7
-import org.springframework.core.io.support.EncodedResource;
8
-import org.springframework.core.io.support.PropertiesLoaderUtils;
9
-
10
-import java.io.IOException;
11
-import java.util.Properties;
12
-
13
-/**
14
- * properties util
15
- *
16
- * @author xuxueli 2015-8-28 10:35:53
17
- */
18
-public class PropertiesUtil {
19
-	private static Logger logger = LoggerFactory.getLogger(PropertiesUtil.class);
20
-	private static final String file_name = "xxl-job-admin.properties";
21
-
22
-
23
-	public static String getString(String key) {
24
-		Properties prop = null;
25
-		try {
26
-			Resource resource = new ClassPathResource(file_name);
27
-			EncodedResource encodedResource = new EncodedResource(resource,"UTF-8");
28
-			prop = PropertiesLoaderUtils.loadProperties(encodedResource);
29
-		} catch (IOException e) {
30
-			logger.error(e.getMessage(), e);
31
-		}
32
-		if (prop!=null) {
33
-			return prop.getProperty(key);
34
-		}
35
-		return null;
36
-	}
37
-
38
-}

+ 1 - 1
xxl-job-admin/src/main/resources/spring/applicationcontext-base.xml 查看文件

7
            http://www.springframework.org/schema/context
7
            http://www.springframework.org/schema/context
8
            http://www.springframework.org/schema/context/spring-context.xsd">
8
            http://www.springframework.org/schema/context/spring-context.xsd">
9
 
9
 
10
-	<context:component-scan base-package="com.xxl.job.admin.service, com.xxl.job.admin.dao" />
10
+	<context:component-scan base-package="com.xxl.job.admin.core.conf, com.xxl.job.admin.service, com.xxl.job.admin.dao" />
11
 
11
 
12
 	<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
12
 	<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
13
 		<property name="templateLoaderPath" value="/WEB-INF/template/" />
13
 		<property name="templateLoaderPath" value="/WEB-INF/template/" />

+ 3 - 3
xxl-job-admin/src/test/java/com/xxl/job/admin/controller/JobInfoControllerTest.java 查看文件

1
 package com.xxl.job.admin.controller;
1
 package com.xxl.job.admin.controller;
2
 
2
 
3
 import com.xxl.job.admin.controller.interceptor.PermissionInterceptor;
3
 import com.xxl.job.admin.controller.interceptor.PermissionInterceptor;
4
-import com.xxl.job.admin.core.util.PropertiesUtil;
4
+import com.xxl.job.admin.core.conf.XxlJobAdminConfig;
5
 import org.junit.Before;
5
 import org.junit.Before;
6
 import org.junit.Test;
6
 import org.junit.Test;
7
 import org.springframework.http.MediaType;
7
 import org.springframework.http.MediaType;
22
     MvcResult ret = mockMvc.perform(
22
     MvcResult ret = mockMvc.perform(
23
         post("/login")
23
         post("/login")
24
             .contentType(MediaType.APPLICATION_FORM_URLENCODED)
24
             .contentType(MediaType.APPLICATION_FORM_URLENCODED)
25
-            .param("userName", PropertiesUtil.getString("xxl.job.login.username"))
26
-            .param("password", PropertiesUtil.getString("xxl.job.login.password"))
25
+            .param("userName", XxlJobAdminConfig.getAdminConfig().getLoginUsername())
26
+            .param("password", XxlJobAdminConfig.getAdminConfig().getLoginPassword())
27
     ).andReturn();
27
     ).andReturn();
28
     cookie = ret.getResponse().getCookie(PermissionInterceptor.LOGIN_IDENTITY_KEY);
28
     cookie = ret.getResponse().getCookie(PermissionInterceptor.LOGIN_IDENTITY_KEY);
29
   }
29
   }

+ 5 - 0
xxl-job-admin/src/test/java/com/xxl/job/admin/util/I18nUtilTest.java 查看文件

2
 
2
 
3
 import com.xxl.job.admin.core.util.I18nUtil;
3
 import com.xxl.job.admin.core.util.I18nUtil;
4
 import org.junit.Test;
4
 import org.junit.Test;
5
+import org.junit.runner.RunWith;
6
+import org.springframework.test.context.ContextConfiguration;
7
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
5
 
8
 
6
 /**
9
 /**
7
  * email util test
10
  * email util test
8
  *
11
  *
9
  * @author xuxueli 2017-12-22 17:16:23
12
  * @author xuxueli 2017-12-22 17:16:23
10
  */
13
  */
14
+@RunWith(SpringJUnit4ClassRunner.class)
15
+@ContextConfiguration(locations = "classpath*:spring/applicationcontext-*.xml")
11
 public class I18nUtilTest {
16
 public class I18nUtilTest {
12
 
17
 
13
     @Test
18
     @Test

+ 5 - 0
xxl-job-admin/src/test/java/com/xxl/job/admin/util/MailUtilTest.java 查看文件

2
 
2
 
3
 import com.xxl.job.admin.core.util.MailUtil;
3
 import com.xxl.job.admin.core.util.MailUtil;
4
 import org.junit.Test;
4
 import org.junit.Test;
5
+import org.junit.runner.RunWith;
6
+import org.springframework.test.context.ContextConfiguration;
7
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
5
 
8
 
6
 import java.text.MessageFormat;
9
 import java.text.MessageFormat;
7
 
10
 
10
  *
13
  *
11
  * @author xuxueli 2017-12-22 17:16:23
14
  * @author xuxueli 2017-12-22 17:16:23
12
  */
15
  */
16
+@RunWith(SpringJUnit4ClassRunner.class)
17
+@ContextConfiguration(locations = "classpath*:spring/applicationcontext-*.xml")
13
 public class MailUtilTest {
18
 public class MailUtilTest {
14
 
19
 
15
     @Test
20
     @Test

+ 0 - 18
xxl-job-admin/src/test/java/com/xxl/job/admin/util/PropertiesUtilTest.java 查看文件

1
-package com.xxl.job.admin.util;
2
-
3
-import com.xxl.job.admin.core.util.PropertiesUtil;
4
-import org.junit.Test;
5
-
6
-/**
7
- * prop util test
8
- *
9
- * @author xuxueli 2017-12-25 15:17:36
10
- */
11
-public class PropertiesUtilTest {
12
-
13
-    @Test
14
-    public void registryTest() throws Exception {
15
-        System.out.println(PropertiesUtil.getString("xxl.job.login.username"));
16
-    }
17
-
18
-}