浏览代码

解决spring重复初始化容器的配置,防止定时任务双线程并发运行

luoshi 6 年之前
父节点
当前提交
27a5e77644

+ 15 - 23
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/service/Impl/MarkCronService.java

@@ -55,7 +55,7 @@ public class MarkCronService {
     private MarkService markService;
 
     @Autowired
-    private MarkLockService lockService;
+    private MarkLockService markLockService;
 
     @Autowired
     private MemoryLockProvider memoryLock;
@@ -72,7 +72,7 @@ public class MarkCronService {
     @Scheduled(cron = "${mark.cleanLockSchedule}")
     public void cronCleanLock() {
         try {
-            lockService.clear();
+            markLockService.clear();
             memoryLock.clear();
         } catch (Exception e) {
             log.error("CronCleanTask error", e);
@@ -97,7 +97,7 @@ public class MarkCronService {
      */
     @Scheduled(fixedDelay = 2 * 60 * 1000, initialDelay = 60 * 1000)
     public void buildLibrary() {
-        log.debug("start auto-create library");
+        log.info("start auto-create library");
         try {
             Map<String, Campus> campusMap = new HashMap<String, Campus>();
             List<Integer> examIds = groupService.findExamIdByStatus(MarkStatus.TRIAL, MarkStatus.FORMAL);
@@ -107,20 +107,20 @@ public class MarkCronService {
         } catch (Exception e) {
             log.error("auto-create library error", e);
         } finally {
-            log.debug("finish auto-create library");
+            log.info("finish auto-create library");
         }
     }
 
     /**
-     * 定时生成评卷任务
+     * 定时更新评卷员质量监控指标
      */
     @Scheduled(fixedDelay = 2 * 60 * 1000, initialDelay = 60 * 1000)
-    public void updateMarker() {
+    public void updateMarkerQuality() {
         log.debug("start auto-update marker");
         try {
             List<Integer> examIds = groupService.findExamIdByStatus(MarkStatus.FORMAL);
             for (Integer examId : examIds) {
-                updateMarkerByExam(examId);
+                updateMarkerQualityByExam(examId);
             }
         } catch (Exception e) {
             log.error("auto-update marker error", e);
@@ -129,22 +129,20 @@ public class MarkCronService {
         }
     }
 
-    private void updateMarkerByExam(Integer examId) {
+    private void updateMarkerQualityByExam(Integer examId) {
         // 获取主观题总分大于0的科目
         List<ExamSubject> subjects = subjectService.list(examId, 0);
         for (ExamSubject subject : subjects) {
             List<MarkGroup> groups = groupService.findByExamAndSubjectAndStatus(examId, subject.getCode(),
                     MarkStatus.FORMAL);
             for (MarkGroup markGroup : groups) {
-                if (!MarkStatus.FINISH.equals(markGroup.getStatus())) {
-                    List<Marker> markers = markerService.findByExamAndSubjectAndGroup(examId, subject.getCode(),
-                            markGroup.getNumber());
-                    for (Marker marker : markers) {
-                        try {
-                            markService.updateQuality(marker);
-                        } catch (Exception e) {
-                            log.error("update marker quality error for markerId=" + marker.getId(), e);
-                        }
+                List<Marker> markers = markerService.findByExamAndSubjectAndGroup(examId, subject.getCode(),
+                        markGroup.getNumber());
+                for (Marker marker : markers) {
+                    try {
+                        markService.updateQuality(marker);
+                    } catch (Exception e) {
+                        log.error("update marker quality error for markerId=" + marker.getId(), e);
                     }
                 }
             }
@@ -205,12 +203,6 @@ public class MarkCronService {
         List<MarkGroup> groups = groupService.findByExamAndSubjectAndStatus(subject.getExamId(), subject.getCode(),
                 MarkStatus.TRIAL);
         for (MarkGroup group : groups) {
-            // if (group.getLibraryCount() >= group.getTrialCount()) {
-            // continue;
-            // }
-
-            // while (groupService.needTrialLibrary(group.getExamId(),
-            // group.getSubjectCode(), group.getNumber())) {
             while (group.getTrialCount() > group.getLibraryCount()) {
                 // 随机取一个未生成试评任务的考生
                 ExamStudent student = studentService.randomUnTrialStudent(group.getExamId(), group.getSubjectCode(),

+ 2 - 2
stmms-web/pom.xml

@@ -81,11 +81,11 @@
 					<systemProperties>
 						<systemProperty>
 							<name>catalina.home</name>
-							<value>/Users/luoshi/develop/data/stmms-gx</value>
+							<value>/Users/luoshi/develop/data/stmms-ft</value>
 						</systemProperty>
 						<systemProperty>
 							<name>app.home</name>
-							<value>/Users/luoshi/develop/data/stmms-gx</value>
+							<value>/Users/luoshi/develop/data/stmms-ft</value>
 						</systemProperty>
 					</systemProperties>
 				</configuration>

+ 4 - 4
stmms-web/src/main/webapp/WEB-INF/application.properties

@@ -1,9 +1,9 @@
 #jdbc config
 driverClassName=com.mysql.jdbc.Driver
 #jdbc config
-url=jdbc:mysql://192.168.10.141:3306/stmms_ft_online?useUnicode=true&characterEncoding=UTF-8
+url=jdbc:mysql://localhost:3306/stmms_ft?useUnicode=true&characterEncoding=UTF-8
 username=root
-password=123456
+password=root
 
 #cookie config
 cookie.max.age=36000
@@ -13,8 +13,8 @@ cookie.path=/
 #server config
 slice.image.server=https://ft-slice.markingcloud.com
 sheet.image.server=https://ft-sheet.markingcloud.com
-package.image.server=https://ft-package.markingcloud.com
-card.server=https://ft-card.markingcloud.com
+package.image.server=http://ft-package.markingcloud.com
+card.server=http://ft-card.markingcloud.com
 ##slice.image.server=http://${local.ip}:9000/gx-slice
 ##sheet.image.server=http://${local.ip}:9000/gx-sheet
 ##package.image.server=http://${local.ip}:9000/gx-package

+ 2 - 0
stmms-web/src/main/webapp/WEB-INF/web.xml

@@ -10,10 +10,12 @@
 		<session-timeout>300</session-timeout>
 	</session-config>
 
+	<!--  
 	<listener>
 		<description>spring监听器</description>
 		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
 	</listener>
+	-->
 	<listener>
 		<description>Introspector缓存清除监听器</description>
 		<listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>