Explorar o código

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

xuxueli %!s(int64=7) %!d(string=hai) anos
pai
achega
18991c3f5b

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

@@ -1146,6 +1146,7 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段
 - 3、调度报表优化,报表SQL调优并且新增LocalCache缓存(缓存时间60s),提高大数据量下报表加载速度;
 - 4、修复打包部署时资源文件乱码问题;
 - 5、修复新版本chrome滚动到顶部失效问题;
+- 6、调度中心配置加载优化,取消对配置文件名的强依赖,支持加载磁盘配置;
 
 
 ### TODO LIST

+ 3 - 3
xxl-job-admin/src/main/java/com/xxl/job/admin/controller/interceptor/PermissionInterceptor.java

@@ -1,8 +1,8 @@
 package com.xxl.job.admin.controller.interceptor;
 
 import com.xxl.job.admin.controller.annotation.PermessionLimit;
+import com.xxl.job.admin.core.conf.XxlJobAdminConfig;
 import com.xxl.job.admin.core.util.CookieUtil;
-import com.xxl.job.admin.core.util.PropertiesUtil;
 import org.apache.commons.codec.digest.DigestUtils;
 import org.springframework.web.method.HandlerMethod;
 import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
@@ -22,8 +22,8 @@ public class PermissionInterceptor extends HandlerInterceptorAdapter {
 	public static final String LOGIN_IDENTITY_KEY = "XXL_JOB_LOGIN_IDENTITY";
 	public static final String LOGIN_IDENTITY_TOKEN;
     static {
-        String username = PropertiesUtil.getString("xxl.job.login.username");
-        String password = PropertiesUtil.getString("xxl.job.login.password");
+        String username = XxlJobAdminConfig.getAdminConfig().getLoginUsername();
+        String password = XxlJobAdminConfig.getAdminConfig().getLoginPassword();
 
         // login token
         String tokenTmp = DigestUtils.md5Hex(username + "_" + password);

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

@@ -0,0 +1,81 @@
+package com.xxl.job.admin.core.conf;
+
+import org.springframework.beans.factory.InitializingBean;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * xxl-job config
+ *
+ * @author xuxueli 2017-04-28
+ */
+@Configuration
+public class XxlJobAdminConfig implements InitializingBean{
+    private static XxlJobAdminConfig adminConfig = null;
+    public static XxlJobAdminConfig getAdminConfig() {
+        return adminConfig;
+    }
+
+    @Override
+    public void afterPropertiesSet() throws Exception {
+        adminConfig = this;
+    }
+
+    @Value("${xxl.job.mail.host}")
+    private String mailHost;
+
+    @Value("${xxl.job.mail.port}")
+    private String mailPort;
+
+    @Value("${xxl.job.mail.username}")
+    private String mailUsername;
+
+    @Value("${xxl.job.mail.password}")
+    private String mailPassword;
+
+    @Value("${xxl.job.mail.sendNick}")
+    private String mailSendNick;
+
+    @Value("${xxl.job.login.username}")
+    private String loginUsername;
+
+    @Value("${xxl.job.login.password}")
+    private String loginPassword;
+
+    @Value("${xxl.job.i18n}")
+    private String i18n;
+
+
+    public String getMailHost() {
+        return mailHost;
+    }
+
+    public String getMailPort() {
+        return mailPort;
+    }
+
+    public String getMailUsername() {
+        return mailUsername;
+    }
+
+    public String getMailPassword() {
+        return mailPassword;
+    }
+
+    public String getMailSendNick() {
+        return mailSendNick;
+    }
+
+    public String getLoginUsername() {
+        return loginUsername;
+    }
+
+    public String getLoginPassword() {
+        return loginPassword;
+    }
+
+    public String getI18n() {
+        return i18n;
+    }
+
+}

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

@@ -1,5 +1,6 @@
 package com.xxl.job.admin.core.util;
 
+import com.xxl.job.admin.core.conf.XxlJobAdminConfig;
 import com.xxl.job.core.util.JacksonUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
@@ -23,23 +24,21 @@ import java.util.Properties;
 public class I18nUtil {
     private static Logger logger = LoggerFactory.getLogger(I18nUtil.class);
 
-    private static final String I18N_PROP_CACHE = "i18n_prop_cache";
+    private static Properties prop = null;
     public static Properties loadI18nProp(){
-        Properties prop = (Properties) LocalCacheUtil.get(I18N_PROP_CACHE);
         if (prop != null) {
             return prop;
         }
         try {
             // bild i18n prop
-            String i18n = PropertiesUtil.getString("xxl.job.i18n");
+            String i18n = XxlJobAdminConfig.getAdminConfig().getI18n();
             i18n = StringUtils.isNotBlank(i18n)?("_"+i18n):i18n;
-            String i18nFile =MessageFormat.format("i18n/message{0}.properties", i18n);
+            String i18nFile = MessageFormat.format("i18n/message{0}.properties", i18n);
 
             // load prop
             Resource resource = new ClassPathResource(i18nFile);
             EncodedResource encodedResource = new EncodedResource(resource,"UTF-8");
             prop = PropertiesLoaderUtils.loadProperties(encodedResource);
-            LocalCacheUtil.set(I18N_PROP_CACHE, prop, 60*1000);     // cache 60s
         } catch (IOException e) {
             logger.error(e.getMessage(), e);
         }

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

@@ -1,5 +1,6 @@
 package com.xxl.job.admin.core.util;
 
+import com.xxl.job.admin.core.conf.XxlJobAdminConfig;
 import org.apache.commons.mail.DefaultAuthenticator;
 import org.apache.commons.mail.EmailException;
 import org.apache.commons.mail.HtmlEmail;
@@ -16,19 +17,6 @@ import java.nio.charset.Charset;
 public class MailUtil {
 	private static Logger logger = LoggerFactory.getLogger(MailUtil.class);
 	
-	private static String host;
-	private static String port;
-	private static String username;
-	private static String password;
-	private static String sendNick;
-	static{
-		host = PropertiesUtil.getString("xxl.job.mail.host");
-		port = PropertiesUtil.getString("xxl.job.mail.port");
-		username = PropertiesUtil.getString("xxl.job.mail.username");
-		password = PropertiesUtil.getString("xxl.job.mail.password");
-		sendNick = PropertiesUtil.getString("xxl.job.mail.sendNick");
-	}
-
 	/**
 	 *
 	 * @param toAddress		收件人邮箱
@@ -46,13 +34,13 @@ public class MailUtil {
 			//email.setTLS(true);		// 是否TLS校验,,某些邮箱需要TLS安全校验,同理有SSL校验
 			//email.setSSL(true);
 
-			email.setHostName(host);
-			email.setSmtpPort(Integer.valueOf(port));
+			email.setHostName(XxlJobAdminConfig.getAdminConfig().getMailHost());
+			email.setSmtpPort(Integer.valueOf(XxlJobAdminConfig.getAdminConfig().getMailPort()));
 			//email.setSslSmtpPort(port);
-			email.setAuthenticator(new DefaultAuthenticator(username, password));
+			email.setAuthenticator(new DefaultAuthenticator(XxlJobAdminConfig.getAdminConfig().getMailUsername(), XxlJobAdminConfig.getAdminConfig().getMailPassword()));
 			email.setCharset(Charset.defaultCharset().name());
 
-			email.setFrom(username, sendNick);
+			email.setFrom(XxlJobAdminConfig.getAdminConfig().getMailUsername(), XxlJobAdminConfig.getAdminConfig().getMailSendNick());
 			email.addTo(toAddress);
 			email.setSubject(mailSubject);
 			email.setMsg(mailBody);

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

@@ -1,38 +0,0 @@
-package com.xxl.job.admin.core.util;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.core.io.ClassPathResource;
-import org.springframework.core.io.Resource;
-import org.springframework.core.io.support.EncodedResource;
-import org.springframework.core.io.support.PropertiesLoaderUtils;
-
-import java.io.IOException;
-import java.util.Properties;
-
-/**
- * properties util
- *
- * @author xuxueli 2015-8-28 10:35:53
- */
-public class PropertiesUtil {
-	private static Logger logger = LoggerFactory.getLogger(PropertiesUtil.class);
-	private static final String file_name = "xxl-job-admin.properties";
-
-
-	public static String getString(String key) {
-		Properties prop = null;
-		try {
-			Resource resource = new ClassPathResource(file_name);
-			EncodedResource encodedResource = new EncodedResource(resource,"UTF-8");
-			prop = PropertiesLoaderUtils.loadProperties(encodedResource);
-		} catch (IOException e) {
-			logger.error(e.getMessage(), e);
-		}
-		if (prop!=null) {
-			return prop.getProperty(key);
-		}
-		return null;
-	}
-
-}

+ 1 - 1
xxl-job-admin/src/main/resources/spring/applicationcontext-base.xml

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

+ 3 - 3
xxl-job-admin/src/test/java/com/xxl/job/admin/controller/JobInfoControllerTest.java

@@ -1,7 +1,7 @@
 package com.xxl.job.admin.controller;
 
 import com.xxl.job.admin.controller.interceptor.PermissionInterceptor;
-import com.xxl.job.admin.core.util.PropertiesUtil;
+import com.xxl.job.admin.core.conf.XxlJobAdminConfig;
 import org.junit.Before;
 import org.junit.Test;
 import org.springframework.http.MediaType;
@@ -22,8 +22,8 @@ public class JobInfoControllerTest extends AbstractSpringMvcTest {
     MvcResult ret = mockMvc.perform(
         post("/login")
             .contentType(MediaType.APPLICATION_FORM_URLENCODED)
-            .param("userName", PropertiesUtil.getString("xxl.job.login.username"))
-            .param("password", PropertiesUtil.getString("xxl.job.login.password"))
+            .param("userName", XxlJobAdminConfig.getAdminConfig().getLoginUsername())
+            .param("password", XxlJobAdminConfig.getAdminConfig().getLoginPassword())
     ).andReturn();
     cookie = ret.getResponse().getCookie(PermissionInterceptor.LOGIN_IDENTITY_KEY);
   }

+ 5 - 0
xxl-job-admin/src/test/java/com/xxl/job/admin/util/I18nUtilTest.java

@@ -2,12 +2,17 @@ package com.xxl.job.admin.util;
 
 import com.xxl.job.admin.core.util.I18nUtil;
 import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 
 /**
  * email util test
  *
  * @author xuxueli 2017-12-22 17:16:23
  */
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(locations = "classpath*:spring/applicationcontext-*.xml")
 public class I18nUtilTest {
 
     @Test

+ 5 - 0
xxl-job-admin/src/test/java/com/xxl/job/admin/util/MailUtilTest.java

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

+ 0 - 18
xxl-job-admin/src/test/java/com/xxl/job/admin/util/PropertiesUtilTest.java

@@ -1,18 +0,0 @@
-package com.xxl.job.admin.util;
-
-import com.xxl.job.admin.core.util.PropertiesUtil;
-import org.junit.Test;
-
-/**
- * prop util test
- *
- * @author xuxueli 2017-12-25 15:17:36
- */
-public class PropertiesUtilTest {
-
-    @Test
-    public void registryTest() throws Exception {
-        System.out.println(PropertiesUtil.getString("xxl.job.login.username"));
-    }
-
-}