From 19a778331ecaa5c5d59bdd9ac5486614b127544e Mon Sep 17 00:00:00 2001 From: hanshuai03 <14693422+hanshuai03@user.noreply.gitee.com> Date: Fri, 11 Oct 2024 13:43:17 +0800 Subject: [PATCH 1/5] DistributedTransactionLock --- .../lock/service/api/api/LockExtension.java | 8 ++++ .../caf/lock/service/api/api/LockService.java | 8 ++++ .../api/exception/DLErrorDefinition.java | 5 +++ .../service/api/repositories/LockRepo.java | 2 + .../spi/DistributedTransactionLock.java | 8 ++++ .../spi/DistributedTransactionLockImpl.java | 13 ++++++ .../DistributedTransactionLockUtils.java | 40 +++++++++++++++++++ .../edp/caf/lockservice/api/LockEntity.java | 5 +++ .../edp/caf/lockservice/api/LockedScope.java | 5 ++- ...ock.service.spi.DistributedTransactionLock | 17 ++++++++ .../extension/jpa/JpaLockExtensionImpl.java | 36 +++++++++++++++++ .../service/memory/MemoryLockServiceImpl.java | 5 +++ .../redis/DistributedLockServiceImpl.java | 5 +++ 13 files changed, 156 insertions(+), 1 deletion(-) create mode 100644 caf-lock/caf-lock-api/src/main/java/io/iec/edp/caf/lock/service/spi/DistributedTransactionLock.java create mode 100644 caf-lock/caf-lock-api/src/main/java/io/iec/edp/caf/lock/service/spi/DistributedTransactionLockImpl.java create mode 100644 caf-lock/caf-lock-api/src/main/java/io/iec/edp/caf/lock/service/spi/utils/DistributedTransactionLockUtils.java create mode 100644 caf-lock/caf-lock-api/src/main/resources/META-INF/services/io.iec.edp.caf.lock.service.spi.DistributedTransactionLock diff --git a/caf-lock/caf-lock-api/src/main/java/io/iec/edp/caf/lock/service/api/api/LockExtension.java b/caf-lock/caf-lock-api/src/main/java/io/iec/edp/caf/lock/service/api/api/LockExtension.java index b43e37b94..3907326fa 100644 --- a/caf-lock/caf-lock-api/src/main/java/io/iec/edp/caf/lock/service/api/api/LockExtension.java +++ b/caf-lock/caf-lock-api/src/main/java/io/iec/edp/caf/lock/service/api/api/LockExtension.java @@ -47,6 +47,14 @@ public interface LockExtension { */ boolean removeSessionLock(String sessionId, int tenantId); + /** + * 解除所有分布式事务编号为distributedTransactionId的锁 + * @param distributedTransactionId 锁对应的分布式事务编号,区别于当前事务号 + * @param tenantId 租户编号 + * @return 是否清除成功,true:表示成功 false:表示失败 + */ + boolean removeDistributedTransactionLock(String distributedTransactionId, int tenantId); + /** * 批量解锁 * @param groupId 锁批量编号 diff --git a/caf-lock/caf-lock-api/src/main/java/io/iec/edp/caf/lock/service/api/api/LockService.java b/caf-lock/caf-lock-api/src/main/java/io/iec/edp/caf/lock/service/api/api/LockService.java index e6214ce84..e02ef8a8c 100644 --- a/caf-lock/caf-lock-api/src/main/java/io/iec/edp/caf/lock/service/api/api/LockService.java +++ b/caf-lock/caf-lock-api/src/main/java/io/iec/edp/caf/lock/service/api/api/LockService.java @@ -130,6 +130,14 @@ public interface LockService { */ boolean removeSessionLock(String sessionId, int tenantId); + /** + * 解除所有分布式事务编号为distributedTransactionId的锁 + * @param distributedTransactionId 锁对应的分布式事务编号,区别于当前事务号 + * @param tenantId 租户编号 + * @return 是否清除成功,true:表示成功 false:表示失败 + */ + boolean removeDistributedTransactionLock(String distributedTransactionId, int tenantId); + /** * 批量解锁 * @param groupId 锁批量编号 diff --git a/caf-lock/caf-lock-api/src/main/java/io/iec/edp/caf/lock/service/api/exception/DLErrorDefinition.java b/caf-lock/caf-lock-api/src/main/java/io/iec/edp/caf/lock/service/api/exception/DLErrorDefinition.java index 53efa314d..c95bfb679 100644 --- a/caf-lock/caf-lock-api/src/main/java/io/iec/edp/caf/lock/service/api/exception/DLErrorDefinition.java +++ b/caf-lock/caf-lock-api/src/main/java/io/iec/edp/caf/lock/service/api/exception/DLErrorDefinition.java @@ -75,5 +75,10 @@ public class DLErrorDefinition { public static final String Param_Is_Null="GSP_Svc_DistributedLock_1011"; public static final String AddBatchLock_Error="GSP_Svc_DistributedLock_1012"; + /** + * 根据distributedTransactionId删锁时报错 + */ + public static final String RemLock_DistributedTransactionId_Error = "Gsp_Svc_DistributedLock_1013"; + } diff --git a/caf-lock/caf-lock-api/src/main/java/io/iec/edp/caf/lock/service/api/repositories/LockRepo.java b/caf-lock/caf-lock-api/src/main/java/io/iec/edp/caf/lock/service/api/repositories/LockRepo.java index 2be48398a..65899eb47 100644 --- a/caf-lock/caf-lock-api/src/main/java/io/iec/edp/caf/lock/service/api/repositories/LockRepo.java +++ b/caf-lock/caf-lock-api/src/main/java/io/iec/edp/caf/lock/service/api/repositories/LockRepo.java @@ -40,6 +40,8 @@ public interface LockRepo extends JpaRepository { void deleteBySessionId(String sessionId); + void deleteByDistributedTransactionId(String distributedTransactionId); + List findByMkIdAndCategoryId(String mkId, String categoryId); List findByMkIdAndCategoryIdAndSuName(String mkId, String categoryId,String su); diff --git a/caf-lock/caf-lock-api/src/main/java/io/iec/edp/caf/lock/service/spi/DistributedTransactionLock.java b/caf-lock/caf-lock-api/src/main/java/io/iec/edp/caf/lock/service/spi/DistributedTransactionLock.java new file mode 100644 index 000000000..a3751e8f5 --- /dev/null +++ b/caf-lock/caf-lock-api/src/main/java/io/iec/edp/caf/lock/service/spi/DistributedTransactionLock.java @@ -0,0 +1,8 @@ +package io.iec.edp.caf.lock.service.spi; + +public interface DistributedTransactionLock { + + public String getDistributedTransactionId(); + + public boolean isDistributedTransactionNotValid(String distributedTransactionId); +} diff --git a/caf-lock/caf-lock-api/src/main/java/io/iec/edp/caf/lock/service/spi/DistributedTransactionLockImpl.java b/caf-lock/caf-lock-api/src/main/java/io/iec/edp/caf/lock/service/spi/DistributedTransactionLockImpl.java new file mode 100644 index 000000000..9547ac8ac --- /dev/null +++ b/caf-lock/caf-lock-api/src/main/java/io/iec/edp/caf/lock/service/spi/DistributedTransactionLockImpl.java @@ -0,0 +1,13 @@ +package io.iec.edp.caf.lock.service.spi; + +public class DistributedTransactionLockImpl implements DistributedTransactionLock{ + @Override + public String getDistributedTransactionId() { + return "1234"; + } + + @Override + public boolean isDistributedTransactionNotValid(String distributedTransactionId) { + return true; + } +} diff --git a/caf-lock/caf-lock-api/src/main/java/io/iec/edp/caf/lock/service/spi/utils/DistributedTransactionLockUtils.java b/caf-lock/caf-lock-api/src/main/java/io/iec/edp/caf/lock/service/spi/utils/DistributedTransactionLockUtils.java new file mode 100644 index 000000000..4796b1ea9 --- /dev/null +++ b/caf-lock/caf-lock-api/src/main/java/io/iec/edp/caf/lock/service/spi/utils/DistributedTransactionLockUtils.java @@ -0,0 +1,40 @@ +package io.iec.edp.caf.lock.service.spi.utils; + +import io.iec.edp.caf.lock.service.spi.DistributedTransactionLock; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.ServiceLoader; + +public class DistributedTransactionLockUtils { + + private static List distributedTransactionLockList = new ArrayList<>(); + + static { + ServiceLoader DistributedTransactionLockService = ServiceLoader.load(DistributedTransactionLock.class); + Iterator iterator = DistributedTransactionLockService.iterator(); + while (iterator.hasNext()) { + DistributedTransactionLock service = iterator.next(); + distributedTransactionLockList.add(service); + } + } + + public static String getDistributedTransactionId(){ + String distributedTransactionId = ""; + if(distributedTransactionLockList !=null&& distributedTransactionLockList.size()>0){ + distributedTransactionId = distributedTransactionLockList.get(0).getDistributedTransactionId();//默认只有1个扩展 + } + return distributedTransactionId; + } + + public static boolean isDistributedTransactionNotValid(String distributedTransactionId){ + boolean distributedTransactionNotValid = false; + if(distributedTransactionLockList !=null&& distributedTransactionLockList.size()>0){ + distributedTransactionNotValid = distributedTransactionLockList.get(0).isDistributedTransactionNotValid(distributedTransactionId);//默认只有1个扩展 + } + return distributedTransactionNotValid; + } + + +} diff --git a/caf-lock/caf-lock-api/src/main/java/io/iec/edp/caf/lockservice/api/LockEntity.java b/caf-lock/caf-lock-api/src/main/java/io/iec/edp/caf/lockservice/api/LockEntity.java index c12f4ee85..75a5b548e 100644 --- a/caf-lock/caf-lock-api/src/main/java/io/iec/edp/caf/lockservice/api/LockEntity.java +++ b/caf-lock/caf-lock-api/src/main/java/io/iec/edp/caf/lockservice/api/LockEntity.java @@ -111,4 +111,9 @@ public class LockEntity { * su名称 */ private String suName; + + /** + * 分布式事务的编号 + */ + private String distributedTransactionId; } diff --git a/caf-lock/caf-lock-api/src/main/java/io/iec/edp/caf/lockservice/api/LockedScope.java b/caf-lock/caf-lock-api/src/main/java/io/iec/edp/caf/lockservice/api/LockedScope.java index 5e35b515b..e9e02000b 100644 --- a/caf-lock/caf-lock-api/src/main/java/io/iec/edp/caf/lockservice/api/LockedScope.java +++ b/caf-lock/caf-lock-api/src/main/java/io/iec/edp/caf/lockservice/api/LockedScope.java @@ -32,7 +32,10 @@ public enum LockedScope { AppInstance(1), /** 功能上下文级的作用域。*/ - BizContext(2); + BizContext(2), + + /** 分布式事务级的作用域。*/ + DistributedTransaction(3); /*value值*/ private int value = 0; diff --git a/caf-lock/caf-lock-api/src/main/resources/META-INF/services/io.iec.edp.caf.lock.service.spi.DistributedTransactionLock b/caf-lock/caf-lock-api/src/main/resources/META-INF/services/io.iec.edp.caf.lock.service.spi.DistributedTransactionLock new file mode 100644 index 000000000..e53f4714c --- /dev/null +++ b/caf-lock/caf-lock-api/src/main/resources/META-INF/services/io.iec.edp.caf.lock.service.spi.DistributedTransactionLock @@ -0,0 +1,17 @@ +# +# Copyright (c) 2020 - present, Inspur Genersoft Co., Ltd. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +io.iec.edp.caf.lock.service.spi.DistributedTransactionLockImpl \ No newline at end of file diff --git a/caf-lock/caf-lock-extension-jpa/src/main/java/io/iec/edp/caf/lock/extension/jpa/JpaLockExtensionImpl.java b/caf-lock/caf-lock-extension-jpa/src/main/java/io/iec/edp/caf/lock/extension/jpa/JpaLockExtensionImpl.java index 96caafb43..8cc8ab12b 100644 --- a/caf-lock/caf-lock-extension-jpa/src/main/java/io/iec/edp/caf/lock/extension/jpa/JpaLockExtensionImpl.java +++ b/caf-lock/caf-lock-extension-jpa/src/main/java/io/iec/edp/caf/lock/extension/jpa/JpaLockExtensionImpl.java @@ -30,6 +30,7 @@ import io.iec.edp.caf.lock.service.api.exception.DLErrorDefinition; import io.iec.edp.caf.lock.service.api.repositories.BatchLockRepo; import io.iec.edp.caf.lock.service.api.repositories.LockRepo; import io.iec.edp.caf.lock.service.api.utils.DataValidator; +import io.iec.edp.caf.lock.service.spi.utils.DistributedTransactionLockUtils; import io.iec.edp.caf.lock.service.spi.utils.LockValidateResolverUtils; import io.iec.edp.caf.lockservice.api.*; import lombok.extern.slf4j.Slf4j; @@ -340,6 +341,22 @@ public class JpaLockExtensionImpl implements LockExtension { } } + @Override + public boolean removeDistributedTransactionLock(String distributedTransactionId, int tenantId) { + DataValidator.checkForEmptyString(distributedTransactionId, "distributedTransactionId"); + JpaTransaction tran = JpaTransaction.getTransaction(); + try { + tran.begin(TransactionPropagation.REQUIRES_NEW); + this.repo.deleteByDistributedTransactionId(distributedTransactionId); + tran.commit(); + return true; + } catch (Throwable ex) + { + tran.rollback(); + throw new io.iec.edp.caf.lock.service.api.exception.DistributedLockException("caf", DLErrorDefinition.RemLock_DistributedTransactionId_Error,"removeLockError",ex, ExceptionLevel.Error,false); + } + } + @Override public boolean removeBatchLock(String groupId){ @@ -491,12 +508,15 @@ public class JpaLockExtensionImpl implements LockExtension { String contextId=""; String currentSU=""; String userId=""; + String distributedTransactionId=""; if(contextInfo!=null){ sessionId=contextInfo.getSessionId(); contextId=contextInfo.getContextId(); currentSU=contextInfo.getCurrentSU(); userId=contextInfo.getUserId(); } + //获取distributedTransactionId的相关代码 + distributedTransactionId= DistributedTransactionLockUtils.getDistributedTransactionId(); var entity = new LockEntity(); // entity.setId(lockId); entity.setMkId(mkId); @@ -512,6 +532,7 @@ public class JpaLockExtensionImpl implements LockExtension { entity.setUserId(userId); entity.setLockTime(OffsetDateTime.now()); entity.setSuName(currentSU); + entity.setDistributedTransactionId(distributedTransactionId); return entity; } @@ -544,12 +565,16 @@ public class JpaLockExtensionImpl implements LockExtension { //3 根据范围(LockedScope)判断是否有效 String locksessionId = lockEntity.getSessionId(); String contextId = lockEntity.getContextId(); + String distributedTransactionId = lockEntity.getDistributedTransactionId(); String currentsessionId ="";// this.contextService.getSessionId(); String currentContextId ="";// this.contextService.getContextId(); + String currentDistributedTransactionId = ""; if(contextInfo!=null){ currentsessionId=contextInfo.getSessionId(); currentContextId=contextInfo.getContextId(); } + //获取distributedTransactionId的相关代码 + currentDistributedTransactionId= DistributedTransactionLockUtils.getDistributedTransactionId(); switch (lockEntity.getLockedScope()) { case AppInstance: // 表示实例锁有效,需要近一步检查 result = LockStatus.Replaceable; @@ -581,6 +606,12 @@ public class JpaLockExtensionImpl implements LockExtension { } result = LockStatus.Replaceable; break; + case DistributedTransaction: + if (!distributedTransactionId.equals(currentDistributedTransactionId) && this.isDistributedTransactionNotValid(distributedTransactionId)) { + return LockStatus.Invalid; + } + result = LockStatus.Replaceable; + break; default: result = LockStatus.Invalid; break; @@ -645,6 +676,11 @@ public class JpaLockExtensionImpl implements LockExtension { } + private boolean isDistributedTransactionNotValid(String distributedTransactionId) { + return DistributedTransactionLockUtils.isDistributedTransactionNotValid(distributedTransactionId); + } + + private boolean tryRemoveLock(Throwable e){ if(e==null){ return false; diff --git a/caf-lock/caf-lock-memory/src/main/java/io/iec/edp/caf/lock/service/memory/MemoryLockServiceImpl.java b/caf-lock/caf-lock-memory/src/main/java/io/iec/edp/caf/lock/service/memory/MemoryLockServiceImpl.java index 7f231a57b..71843cf2a 100644 --- a/caf-lock/caf-lock-memory/src/main/java/io/iec/edp/caf/lock/service/memory/MemoryLockServiceImpl.java +++ b/caf-lock/caf-lock-memory/src/main/java/io/iec/edp/caf/lock/service/memory/MemoryLockServiceImpl.java @@ -192,6 +192,11 @@ public class MemoryLockServiceImpl implements LockService { return lockExtension.removeSessionLock(sessionId,tenantId); } + @Override + public boolean removeDistributedTransactionLock(String distributedTransactionId, int tenantId) { + return lockExtension.removeDistributedTransactionLock(distributedTransactionId,tenantId); + } + @Override public boolean removeBatchLock(String groupId) { return lockExtension.removeBatchLock(groupId); diff --git a/caf-lock/caf-lock-redis/src/main/java/io/iec/edp/caf/lock/service/redis/DistributedLockServiceImpl.java b/caf-lock/caf-lock-redis/src/main/java/io/iec/edp/caf/lock/service/redis/DistributedLockServiceImpl.java index 183197ebb..07371b390 100644 --- a/caf-lock/caf-lock-redis/src/main/java/io/iec/edp/caf/lock/service/redis/DistributedLockServiceImpl.java +++ b/caf-lock/caf-lock-redis/src/main/java/io/iec/edp/caf/lock/service/redis/DistributedLockServiceImpl.java @@ -207,6 +207,11 @@ public class DistributedLockServiceImpl implements LockService { return lockExtension.removeSessionLock(sessionId,tenantId); } + @Override + public boolean removeDistributedTransactionLock(String distributedTransactionId, int tenantId) { + return lockExtension.removeDistributedTransactionLock(distributedTransactionId,tenantId); + } + @Override public boolean removeBatchLock(String groupId) { return lockExtension.removeBatchLock(groupId); -- Gitee From cd5f13bd4c92adc482e5e73aa454ab10cfc826fa Mon Sep 17 00:00:00 2001 From: hanshuai03 <14693422+hanshuai03@user.noreply.gitee.com> Date: Fri, 11 Oct 2024 14:12:17 +0800 Subject: [PATCH 2/5] DistributedTransactionLock --- .../java/io/iec/edp/caf/lockservice/api/BatchLockEntity.java | 5 +++++ .../iec/edp/caf/lock/extension/jpa/JpaLockExtensionImpl.java | 3 +++ 2 files changed, 8 insertions(+) diff --git a/caf-lock/caf-lock-api/src/main/java/io/iec/edp/caf/lockservice/api/BatchLockEntity.java b/caf-lock/caf-lock-api/src/main/java/io/iec/edp/caf/lockservice/api/BatchLockEntity.java index fefb61bce..01454a8f3 100644 --- a/caf-lock/caf-lock-api/src/main/java/io/iec/edp/caf/lockservice/api/BatchLockEntity.java +++ b/caf-lock/caf-lock-api/src/main/java/io/iec/edp/caf/lockservice/api/BatchLockEntity.java @@ -101,4 +101,9 @@ public BatchLockEntity(){} * su名称 */ private String suName; + + /** + * 分布式事务的编号 + */ + private String distributedTransactionId; } diff --git a/caf-lock/caf-lock-extension-jpa/src/main/java/io/iec/edp/caf/lock/extension/jpa/JpaLockExtensionImpl.java b/caf-lock/caf-lock-extension-jpa/src/main/java/io/iec/edp/caf/lock/extension/jpa/JpaLockExtensionImpl.java index 8cc8ab12b..46a969981 100644 --- a/caf-lock/caf-lock-extension-jpa/src/main/java/io/iec/edp/caf/lock/extension/jpa/JpaLockExtensionImpl.java +++ b/caf-lock/caf-lock-extension-jpa/src/main/java/io/iec/edp/caf/lock/extension/jpa/JpaLockExtensionImpl.java @@ -423,12 +423,14 @@ public class JpaLockExtensionImpl implements LockExtension { String contextId ="";// this.contextService.getContextId(); String userId=""; String currentSU=""; + String distributedTransactionId=""; if(contextInfo!=null){ sessionId=contextInfo.getSessionId(); contextId=contextInfo.getContextId(); userId=contextInfo.getUserId(); currentSU=contextInfo.getCurrentSU(); } + distributedTransactionId=DistributedTransactionLockUtils.getDistributedTransactionId(); for (var dataId : dataIds) { var entity = new BatchLockEntity(); entity.setId(UUID.randomUUID().toString()); @@ -444,6 +446,7 @@ public class JpaLockExtensionImpl implements LockExtension { entity.setLockTime(lockTime); entity.setUserId(userId); entity.setSuName(currentSU); + entity.setDistributedTransactionId(distributedTransactionId); entities.add(entity); } return entities; -- Gitee From ca972edf92178329d8146e087e378b9e005b4d3c Mon Sep 17 00:00:00 2001 From: hanshuai03 <14693422+hanshuai03@user.noreply.gitee.com> Date: Fri, 11 Oct 2024 14:19:53 +0800 Subject: [PATCH 3/5] DistributedTransactionLock --- .../io/iec/edp/caf/lock/extension/jpa/JpaLockExtensionImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/caf-lock/caf-lock-extension-jpa/src/main/java/io/iec/edp/caf/lock/extension/jpa/JpaLockExtensionImpl.java b/caf-lock/caf-lock-extension-jpa/src/main/java/io/iec/edp/caf/lock/extension/jpa/JpaLockExtensionImpl.java index 46a969981..1282cdc34 100644 --- a/caf-lock/caf-lock-extension-jpa/src/main/java/io/iec/edp/caf/lock/extension/jpa/JpaLockExtensionImpl.java +++ b/caf-lock/caf-lock-extension-jpa/src/main/java/io/iec/edp/caf/lock/extension/jpa/JpaLockExtensionImpl.java @@ -430,7 +430,7 @@ public class JpaLockExtensionImpl implements LockExtension { userId=contextInfo.getUserId(); currentSU=contextInfo.getCurrentSU(); } - distributedTransactionId=DistributedTransactionLockUtils.getDistributedTransactionId(); + distributedTransactionId= DistributedTransactionLockUtils.getDistributedTransactionId(); for (var dataId : dataIds) { var entity = new BatchLockEntity(); entity.setId(UUID.randomUUID().toString()); -- Gitee From 3ebb248be998ca0c0d0a1bec441f34330aec6a61 Mon Sep 17 00:00:00 2001 From: hanshuai03 <14693422+hanshuai03@user.noreply.gitee.com> Date: Tue, 22 Oct 2024 15:14:08 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E5=88=86=E5=B8=83=E5=BC=8F=E4=BA=8B?= =?UTF-8?q?=E5=8A=A1=E9=94=81=EF=BC=9A=E5=AE=8C=E5=96=84=E5=91=BD=E5=90=8D?= =?UTF-8?q?&=E5=8E=BB=E6=8E=89=E6=B5=8B=E8=AF=95=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../spi/DistributedTransactionLockImpl.java | 13 ------------- ... => DistributedTransactionLockResolver.java} | 2 +- ....lock.service.spi.DistributedTransactionLock | 17 ----------------- .../extension/jpa/JpaLockExtensionImpl.java | 10 +++++----- 4 files changed, 6 insertions(+), 36 deletions(-) delete mode 100644 caf-lock/caf-lock-api/src/main/java/io/iec/edp/caf/lock/service/spi/DistributedTransactionLockImpl.java rename caf-lock/caf-lock-api/src/main/java/io/iec/edp/caf/lock/service/spi/utils/{DistributedTransactionLockUtils.java => DistributedTransactionLockResolver.java} (97%) delete mode 100644 caf-lock/caf-lock-api/src/main/resources/META-INF/services/io.iec.edp.caf.lock.service.spi.DistributedTransactionLock diff --git a/caf-lock/caf-lock-api/src/main/java/io/iec/edp/caf/lock/service/spi/DistributedTransactionLockImpl.java b/caf-lock/caf-lock-api/src/main/java/io/iec/edp/caf/lock/service/spi/DistributedTransactionLockImpl.java deleted file mode 100644 index 9547ac8ac..000000000 --- a/caf-lock/caf-lock-api/src/main/java/io/iec/edp/caf/lock/service/spi/DistributedTransactionLockImpl.java +++ /dev/null @@ -1,13 +0,0 @@ -package io.iec.edp.caf.lock.service.spi; - -public class DistributedTransactionLockImpl implements DistributedTransactionLock{ - @Override - public String getDistributedTransactionId() { - return "1234"; - } - - @Override - public boolean isDistributedTransactionNotValid(String distributedTransactionId) { - return true; - } -} diff --git a/caf-lock/caf-lock-api/src/main/java/io/iec/edp/caf/lock/service/spi/utils/DistributedTransactionLockUtils.java b/caf-lock/caf-lock-api/src/main/java/io/iec/edp/caf/lock/service/spi/utils/DistributedTransactionLockResolver.java similarity index 97% rename from caf-lock/caf-lock-api/src/main/java/io/iec/edp/caf/lock/service/spi/utils/DistributedTransactionLockUtils.java rename to caf-lock/caf-lock-api/src/main/java/io/iec/edp/caf/lock/service/spi/utils/DistributedTransactionLockResolver.java index 4796b1ea9..ec48996ec 100644 --- a/caf-lock/caf-lock-api/src/main/java/io/iec/edp/caf/lock/service/spi/utils/DistributedTransactionLockUtils.java +++ b/caf-lock/caf-lock-api/src/main/java/io/iec/edp/caf/lock/service/spi/utils/DistributedTransactionLockResolver.java @@ -7,7 +7,7 @@ import java.util.Iterator; import java.util.List; import java.util.ServiceLoader; -public class DistributedTransactionLockUtils { +public class DistributedTransactionLockResolver { private static List distributedTransactionLockList = new ArrayList<>(); diff --git a/caf-lock/caf-lock-api/src/main/resources/META-INF/services/io.iec.edp.caf.lock.service.spi.DistributedTransactionLock b/caf-lock/caf-lock-api/src/main/resources/META-INF/services/io.iec.edp.caf.lock.service.spi.DistributedTransactionLock deleted file mode 100644 index e53f4714c..000000000 --- a/caf-lock/caf-lock-api/src/main/resources/META-INF/services/io.iec.edp.caf.lock.service.spi.DistributedTransactionLock +++ /dev/null @@ -1,17 +0,0 @@ -# -# Copyright (c) 2020 - present, Inspur Genersoft Co., Ltd. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -io.iec.edp.caf.lock.service.spi.DistributedTransactionLockImpl \ No newline at end of file diff --git a/caf-lock/caf-lock-extension-jpa/src/main/java/io/iec/edp/caf/lock/extension/jpa/JpaLockExtensionImpl.java b/caf-lock/caf-lock-extension-jpa/src/main/java/io/iec/edp/caf/lock/extension/jpa/JpaLockExtensionImpl.java index 1282cdc34..4469754bd 100644 --- a/caf-lock/caf-lock-extension-jpa/src/main/java/io/iec/edp/caf/lock/extension/jpa/JpaLockExtensionImpl.java +++ b/caf-lock/caf-lock-extension-jpa/src/main/java/io/iec/edp/caf/lock/extension/jpa/JpaLockExtensionImpl.java @@ -30,7 +30,7 @@ import io.iec.edp.caf.lock.service.api.exception.DLErrorDefinition; import io.iec.edp.caf.lock.service.api.repositories.BatchLockRepo; import io.iec.edp.caf.lock.service.api.repositories.LockRepo; import io.iec.edp.caf.lock.service.api.utils.DataValidator; -import io.iec.edp.caf.lock.service.spi.utils.DistributedTransactionLockUtils; +import io.iec.edp.caf.lock.service.spi.utils.DistributedTransactionLockResolver; import io.iec.edp.caf.lock.service.spi.utils.LockValidateResolverUtils; import io.iec.edp.caf.lockservice.api.*; import lombok.extern.slf4j.Slf4j; @@ -430,7 +430,7 @@ public class JpaLockExtensionImpl implements LockExtension { userId=contextInfo.getUserId(); currentSU=contextInfo.getCurrentSU(); } - distributedTransactionId= DistributedTransactionLockUtils.getDistributedTransactionId(); + distributedTransactionId= DistributedTransactionLockResolver.getDistributedTransactionId(); for (var dataId : dataIds) { var entity = new BatchLockEntity(); entity.setId(UUID.randomUUID().toString()); @@ -519,7 +519,7 @@ public class JpaLockExtensionImpl implements LockExtension { userId=contextInfo.getUserId(); } //获取distributedTransactionId的相关代码 - distributedTransactionId= DistributedTransactionLockUtils.getDistributedTransactionId(); + distributedTransactionId= DistributedTransactionLockResolver.getDistributedTransactionId(); var entity = new LockEntity(); // entity.setId(lockId); entity.setMkId(mkId); @@ -577,7 +577,7 @@ public class JpaLockExtensionImpl implements LockExtension { currentContextId=contextInfo.getContextId(); } //获取distributedTransactionId的相关代码 - currentDistributedTransactionId= DistributedTransactionLockUtils.getDistributedTransactionId(); + currentDistributedTransactionId= DistributedTransactionLockResolver.getDistributedTransactionId(); switch (lockEntity.getLockedScope()) { case AppInstance: // 表示实例锁有效,需要近一步检查 result = LockStatus.Replaceable; @@ -680,7 +680,7 @@ public class JpaLockExtensionImpl implements LockExtension { } private boolean isDistributedTransactionNotValid(String distributedTransactionId) { - return DistributedTransactionLockUtils.isDistributedTransactionNotValid(distributedTransactionId); + return DistributedTransactionLockResolver.isDistributedTransactionNotValid(distributedTransactionId); } -- Gitee From 758dcd6fe6830c9aa4e437c11d2c44c1ea72b86c Mon Sep 17 00:00:00 2001 From: hanshuai03 <14693422+hanshuai03@user.noreply.gitee.com> Date: Tue, 12 Nov 2024 14:15:07 +0800 Subject: [PATCH 5/5] =?UTF-8?q?ClassLoader=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/spi/utils/DistributedTransactionLockResolver.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/caf-lock/caf-lock-api/src/main/java/io/iec/edp/caf/lock/service/spi/utils/DistributedTransactionLockResolver.java b/caf-lock/caf-lock-api/src/main/java/io/iec/edp/caf/lock/service/spi/utils/DistributedTransactionLockResolver.java index ec48996ec..58e4c8d77 100644 --- a/caf-lock/caf-lock-api/src/main/java/io/iec/edp/caf/lock/service/spi/utils/DistributedTransactionLockResolver.java +++ b/caf-lock/caf-lock-api/src/main/java/io/iec/edp/caf/lock/service/spi/utils/DistributedTransactionLockResolver.java @@ -1,5 +1,6 @@ package io.iec.edp.caf.lock.service.spi.utils; +import io.iec.edp.caf.commons.ApplicationClassLoaderManager; import io.iec.edp.caf.lock.service.spi.DistributedTransactionLock; import java.util.ArrayList; @@ -12,7 +13,7 @@ public class DistributedTransactionLockResolver { private static List distributedTransactionLockList = new ArrayList<>(); static { - ServiceLoader DistributedTransactionLockService = ServiceLoader.load(DistributedTransactionLock.class); + ServiceLoader DistributedTransactionLockService = ServiceLoader.load(DistributedTransactionLock.class, ApplicationClassLoaderManager.getServiceClassLoader()); Iterator iterator = DistributedTransactionLockService.iterator(); while (iterator.hasNext()) { DistributedTransactionLock service = iterator.next(); -- Gitee