Browse Source

Merge branch 'fix/应用市场同步加锁' into 'wrdp'

[中心服务]应用市场和用户同步过程加锁

See merge request o2oa/o2oa!2131
o2null 5 years ago
parent
commit
73ac85ccf6

+ 3 - 3
o2server/x_program_center/src/main/java/com/x/program/center/jaxrs/collect/ActionValidate.java

@@ -23,11 +23,11 @@ class ActionValidate extends BaseAction {
 		if (!this.validate(Config.collect().getName(), Config.collect().getPassword())) {
 			wo.setValue(false);
 		}
-		if (BooleanUtils.isTrue(wo.getValue())) {
-			/* 人员和应用市场同步 */
+		/*if (BooleanUtils.isTrue(wo.getValue())) {
+			*//* 人员和应用市场同步 *//*
 			ThisApplication.context().scheduleLocal(CollectPerson.class);
 			ThisApplication.context().scheduleLocal(CollectMarket.class);
-		}
+		}*/
 		result.setData(wo);
 		return result;
 	}

+ 6 - 1
o2server/x_program_center/src/main/java/com/x/program/center/schedule/CollectMarket.java

@@ -4,6 +4,7 @@ import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.locks.ReentrantLock;
 
 import org.apache.commons.lang3.BooleanUtils;
 import org.apache.commons.lang3.StringUtils;
@@ -32,9 +33,11 @@ public class CollectMarket extends BaseAction {
 
 	private static Logger logger = LoggerFactory.getLogger(CollectMarket.class);
 
+	private static ReentrantLock lock = new ReentrantLock();
+
 	@Override
 	public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
-
+		lock.lock();
 		try {
 			if (pirmaryCenter() && BooleanUtils.isTrue(Config.collect().getEnable())) {
 				try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
@@ -112,6 +115,8 @@ public class CollectMarket extends BaseAction {
 		} catch (Exception e) {
 			logger.error(e);
 			throw new JobExecutionException(e);
+		} finally {
+			lock.unlock();
 		}
 	}
 

+ 6 - 1
o2server/x_program_center/src/main/java/com/x/program/center/schedule/CollectPerson.java

@@ -2,6 +2,7 @@ package com.x.program.center.schedule;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.concurrent.locks.ReentrantLock;
 
 import org.apache.commons.lang3.BooleanUtils;
 import org.apache.commons.lang3.StringUtils;
@@ -28,9 +29,11 @@ public class CollectPerson extends BaseAction {
 
 	private static Logger logger = LoggerFactory.getLogger(CollectPerson.class);
 
+	private static ReentrantLock lock = new ReentrantLock();
+
 	@Override
 	public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
-
+		lock.lock();
 		try {
 			if (pirmaryCenter() && BooleanUtils.isTrue(Config.collect().getEnable())) {
 				try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
@@ -78,6 +81,8 @@ public class CollectPerson extends BaseAction {
 		} catch (Exception e) {
 			logger.error(e);
 			throw new JobExecutionException(e);
+		} finally {
+			lock.unlock();
 		}
 	}