From f01450fd2c9731564e6f8c5601a0c9fa5d105397 Mon Sep 17 00:00:00 2001 From: zhang chengzhi <3144712872@qq.com> Date: Sun, 8 Sep 2024 14:13:45 +0800 Subject: [PATCH] 11111 --- .../impl/RuleEngineVersionServiceImpl.java | 73 +++++++++---------- 1 file changed, 33 insertions(+), 40 deletions(-) diff --git a/cloud-rule-server/src/main/java/com/muyu/rule/server/service/impl/RuleEngineVersionServiceImpl.java b/cloud-rule-server/src/main/java/com/muyu/rule/server/service/impl/RuleEngineVersionServiceImpl.java index b3b4988..7083264 100644 --- a/cloud-rule-server/src/main/java/com/muyu/rule/server/service/impl/RuleEngineVersionServiceImpl.java +++ b/cloud-rule-server/src/main/java/com/muyu/rule/server/service/impl/RuleEngineVersionServiceImpl.java @@ -84,7 +84,7 @@ public class RuleEngineVersionServiceImpl extends ServiceImpl"+versionClazz); + log.info("======>" + versionClazz); String ossFilePath = className + Suffix_JAVA; //创建服务器项目容器的java源码文件目录路径 File serverFile = new File(engineWorkSourcePath, ossFilePath); @@ -141,11 +142,11 @@ public static final String importClassAndPackPath="home/lib/"; serverFile.getParentFile().mkdirs(); } try (BufferedWriter writer = new BufferedWriter(new FileWriter(serverFile))) { - writer.write(versionClazz); - System.out.println("文件已成功创建并写入Java源码。"); + writer.write(versionClazz); + System.out.println("文件已成功创建并写入Java源码。"); } catch (IOException e) { - System.err.println("发生错误:" + e.getMessage()); - } + System.err.println("发生错误:" + e.getMessage()); + } JavaCompiler javaCompiler = ToolProvider.getSystemJavaCompiler(); // @@ -171,46 +172,43 @@ public static final String importClassAndPackPath="home/lib/"; /** * 加载规则引擎 + * * @param className 规则引擎类名 */ @Override public void loadValueEngineClass(String className) { //查询类是否已加载,避免重复加载规则引擎 - if(!engineMap.containsKey(className)){ - log.info("引擎map集合下没有该实例的规则,进行自定义类加载"); + if (!engineMap.containsKey(className)) { + log.info("引擎map集合下没有该实例的规则,进行自定义类加载"); - Object instance = loadMethod(className); + Object instance = loadMethod(className); //将加载出来引擎实例存入map集合中 - engineMap.put(className, (BasicEngine) instance); - } + engineMap.put(className, (BasicEngine) instance); + } } - - - - - public Object loadMethod(String className){ + public Object loadMethod(String className) { try { - // 假设这是你的外部类文件路径 - String externalClassFilePath = - importClassAndPackPath + serverClassPath + className + Suffix_CLASS; - Path classFilePath = Paths.get(externalClassFilePath); - String externalClassDir = externalClassFilePath.substring(0, externalClassFilePath.lastIndexOf('/')); - URL[] urls = new URL[]{new File(externalClassDir).toURI().toURL()}; + // 假设这是你的外部类文件路径 + String externalClassFilePath = + importClassAndPackPath + serverClassPath + className + Suffix_CLASS; + Path classFilePath = Paths.get(externalClassFilePath); + String externalClassDir = externalClassFilePath.substring(0, externalClassFilePath.lastIndexOf('/')); + URL[] urls = new URL[]{new File(externalClassDir).toURI().toURL()}; - //创建自定义类加载器 - ExternalClassLoader externalClassLoader = new ExternalClassLoader(urls); + //创建自定义类加载器 + ExternalClassLoader externalClassLoader = new ExternalClassLoader(urls); - //加载类 - //注意类名必须是完全限定名(包括包名) - Class clazz = null; + //加载类 + //注意类名必须是完全限定名(包括包名) + Class clazz = null; - clazz = externalClassLoader.loadClassFromPath(classFilePath, className_prefix + className); - //创建类的实例 - Object instance = clazz.getDeclaredConstructor().newInstance(); - return instance; + clazz = externalClassLoader.loadClassFromPath(classFilePath, className_prefix + className); + //创建类的实例 + Object instance = clazz.getDeclaredConstructor().newInstance(); + return instance; } catch (IOException e) { throw new RuntimeException(e); } catch (InvocationTargetException e) { @@ -227,12 +225,13 @@ public static final String importClassAndPackPath="home/lib/"; /** * 实现测试数据 + * * @param className 类名 * @param dataValue ktvl数据 */ @Override public void testEngine(String className, DataValue dataValue) { - log.info("测试的数据[]{}:" +dataValue); + log.info("测试的数据[]{}:" + dataValue); BasicEngine valueBasicEngine = engineMap.get(className); @@ -245,11 +244,6 @@ public static final String importClassAndPackPath="home/lib/"; public String deposit(Integer type) { - - - - - return null; } @@ -267,7 +261,7 @@ public static final String importClassAndPackPath="home/lib/"; public void loadDateSetEngineClass(String className) { //查询类是否已加载,避免重复加载规则引擎 - if(!engineDataSetMap.containsKey(className)){ + if (!engineDataSetMap.containsKey(className)) { log.info("引擎map集合下没有该实例的规则,进行自定义类加载"); Object instance = loadMethod(className); @@ -276,7 +270,6 @@ public static final String importClassAndPackPath="home/lib/"; } - } /**