From 087ffca4b35243b40659f25cfd5c1284f2d520d6 Mon Sep 17 00:00:00 2001 From: dengzedong <dengzedong@email> Date: 星期五, 28 二月 2025 14:41:12 +0800 Subject: [PATCH] MATLAB-开始加载项目已发布的jar matlab.bak-file-path 命名错误 --- iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/ModelServiceApplication.java | 10 ++++++++-- iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/matlab/common/utils/MatlabUtils.java | 30 ++++++++++++++++++++---------- iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/matlab/service/impl/MlProjectServiceImpl.java | 9 ++++----- iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/matlab/service/impl/MlModelServiceImpl.java | 6 +++--- iailab-module-model/iailab-module-model-biz/src/main/resources/application-dev.yaml | 2 +- 5 files changed, 36 insertions(+), 21 deletions(-) diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/ModelServiceApplication.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/ModelServiceApplication.java index e080cbe..5907aea 100644 --- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/ModelServiceApplication.java +++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/ModelServiceApplication.java @@ -1,5 +1,6 @@ package com.iailab; +import com.iailab.module.model.matlab.common.utils.MatlabUtils; import com.iailab.module.model.mpk.common.MdkConstant; import com.iailab.module.model.mpk.common.utils.DllUtils; import iail.mdk.model.common.Environment; @@ -23,6 +24,8 @@ @Value("${mpk.bak-file-path}") private String mpkBakFilePath; + @Value("${matlab.bak-file-path}") + private String matlabBakFilePath; @PostConstruct void init() { @@ -47,9 +50,12 @@ //加载项目已发布的dll和jar try { - log.info("************开始加载项目已发布的dll和jar**************"); + log.info("************MDK-开始加载项目已发布的dll和jar**************"); DllUtils.loadProjectPublish(mpkBakFilePath + File.separator + MdkConstant.PROJECT_PUBLISH); - log.info("************加载项目已发布的dll和jar结束**************"); + log.info("************MDK-加载项目已发布的dll和jar结束**************"); + log.info("************MATLAB-开始加载项目已发布的jar**************"); + MatlabUtils.loadProjectPublish(matlabBakFilePath + File.separator + MdkConstant.PROJECT_PUBLISH); + log.info("************MATLAB-加载项目已发布的jar结束**************"); } catch (Exception e) { e.printStackTrace(); log.error("加载项目已发布的dll和jar失败"); diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/matlab/common/utils/MatlabUtils.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/matlab/common/utils/MatlabUtils.java index 13281e3..4ffbcd2 100644 --- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/matlab/common/utils/MatlabUtils.java +++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/matlab/common/utils/MatlabUtils.java @@ -11,6 +11,7 @@ import com.mathworks.toolbox.javabuilder.*; import com.mathworks.toolbox.javabuilder.internal.MWFunctionSignature; import lombok.extern.slf4j.Slf4j; +import org.springframework.util.CollectionUtils; import java.io.File; import java.io.IOException; @@ -183,7 +184,7 @@ } /** - * @description: 项目启动加载已发布的dll和jar + * @description: 项目启动加载已发布的jar * @author: dzd * @date: 2024/10/10 11:58 **/ @@ -192,23 +193,32 @@ if (dir.exists() && dir.isDirectory()) { File[] files = dir.listFiles(); if (null != files && files.length > 0) { + HashMap<String,List<String>> projectIdJarFilePaths = new HashMap<>(); for (File file : files) { String fileName = file.getName(); if (fileName.endsWith(".jar")) { String[] split = fileName.split(MdkConstant.SPLIT); String projectId = split[0]; - - URLClassLoader urlClassLoader = null; - try { - // 加载新的jar - urlClassLoader = loadJar(projectId,file.getAbsolutePath()); - } catch (Exception e) { - throw new RuntimeException("加载jar异常", e); + if (projectId != null) { + if (projectIdJarFilePaths.containsKey(projectId)) { + projectIdJarFilePaths.get(projectId).add(file.getAbsolutePath()); + } else { + projectIdJarFilePaths.put(projectId,new ArrayList<String>(){{add(file.getAbsolutePath());}}); + } } - // 成功后加入缓存 - addClassLoaderCache(projectId, urlClassLoader); } } + + try { + if (!CollectionUtils.isEmpty(projectIdJarFilePaths)) { + for (Map.Entry<String, List<String>> entry : projectIdJarFilePaths.entrySet()) { + // 加载新的jar + loadJar(entry.getKey(),entry.getValue().toArray(new String[0])); + } + } + } catch (Exception e) { + throw new RuntimeException("加载jar异常", e); + } } } diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/matlab/service/impl/MlModelServiceImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/matlab/service/impl/MlModelServiceImpl.java index 2211a31..d8c9d42 100644 --- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/matlab/service/impl/MlModelServiceImpl.java +++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/matlab/service/impl/MlModelServiceImpl.java @@ -55,8 +55,8 @@ @Service public class MlModelServiceImpl extends BaseServiceImpl<MlModelDao, MlModelEntity> implements MlModelService { - @Value("${mablab.bak-file-path}") - private String mablabBakFilePath; + @Value("${matlab.bak-file-path}") + private String matlabBakFilePath; @Autowired private MlModelMethodService mlModelMethodService; @@ -276,7 +276,7 @@ private String getMatlabTenantBakFilePath() { Long tenantId = TenantContextHolder.getTenantId(); // 备份文件夹 租户隔离 - String matlabTenantBakFilePath = mablabBakFilePath + File.separator + tenantId; + String matlabTenantBakFilePath = matlabBakFilePath + File.separator + tenantId; File bakDir = new File(matlabTenantBakFilePath); if (!bakDir.exists()) { bakDir.mkdirs(); diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/matlab/service/impl/MlProjectServiceImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/matlab/service/impl/MlProjectServiceImpl.java index ca70a63..31bf5a4 100644 --- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/matlab/service/impl/MlProjectServiceImpl.java +++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/matlab/service/impl/MlProjectServiceImpl.java @@ -18,7 +18,6 @@ import com.iailab.module.model.matlab.service.MlProjectModelService; import com.iailab.module.model.matlab.service.MlProjectService; import com.iailab.module.model.mpk.common.MdkConstant; -import com.iailab.module.model.mpk.common.utils.DllUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; @@ -45,8 +44,8 @@ @Autowired MlModelDao mlModelDao; - @Value("${mablab.bak-file-path}") - private String mablabBakFilePath; + @Value("${matlab.bak-file-path}") + private String matlabBakFilePath; @Override public PageData<MlProjectDTO> page(Map<String, Object> params) { @@ -149,7 +148,7 @@ // 卸载上次发布的classloader 并删除发布备份文件 MatlabUtils.removeClassLoaderCache(projectId); - MatlabUtils.removeOldFile(mablabBakFilePath + File.separator + MdkConstant.PROJECT_PUBLISH,projectId); + MatlabUtils.removeOldFile(matlabBakFilePath + File.separator + MdkConstant.PROJECT_PUBLISH,projectId); // 查询关联模型 List<MlModelDTO> list = mlProjectModelService.getProjectModel(params); @@ -157,7 +156,7 @@ String[] jarFilePaths = new String[list.size()]; for (int i = 0; i < list.size(); i++) { MlModelDTO mlModelDTO = list.get(i); - String jarFilePath = mablabBakFilePath + File.separator + MdkConstant.PROJECT_PUBLISH + File.separator + projectId + MdkConstant.SPLIT + mlModelDTO.getId() + ".jar"; + String jarFilePath = matlabBakFilePath + File.separator + MdkConstant.PROJECT_PUBLISH + File.separator + projectId + MdkConstant.SPLIT + mlModelDTO.getId() + ".jar"; FileUtil.copy(mlModelDTO.getModelFilePath(),jarFilePath,true); jarFilePaths[i] = jarFilePath; } diff --git a/iailab-module-model/iailab-module-model-biz/src/main/resources/application-dev.yaml b/iailab-module-model/iailab-module-model-biz/src/main/resources/application-dev.yaml index 487f2b7..dd79178 100644 --- a/iailab-module-model/iailab-module-model-biz/src/main/resources/application-dev.yaml +++ b/iailab-module-model/iailab-module-model-biz/src/main/resources/application-dev.yaml @@ -52,7 +52,7 @@ bak-file-path: D:\DLUT\mpkBakFile bak-resources: D:\DLUT\mpkResources model-file-path: D:\DLUT\MDK\Model\miail\ -mablab: +matlab: bak-file-path: D:\DLUT\matlabBakFile influx-db: -- Gitblit v1.9.3