From 916d12982f754a785c7c45f4c48284f2528c42fc Mon Sep 17 00:00:00 2001 From: pen4uin Date: Sat, 24 Aug 2024 00:45:45 +0800 Subject: [PATCH] =?UTF-8?q?update:=20=E4=BC=98=E5=8C=96=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/jmg/core/format/JARAgentFormater.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/jmg-core/src/main/java/jmg/core/format/JARAgentFormater.java b/jmg-core/src/main/java/jmg/core/format/JARAgentFormater.java index 9c0b569..976f2a8 100755 --- a/jmg-core/src/main/java/jmg/core/format/JARAgentFormater.java +++ b/jmg-core/src/main/java/jmg/core/format/JARAgentFormater.java @@ -18,18 +18,22 @@ import java.util.jar.JarFile; import java.util.jar.JarOutputStream; import java.util.jar.Manifest; +// todo: 其他中间件 + public class JARAgentFormater implements IFormater { public byte[] transform(byte[] clazzbyte, AbstractConfig config) throws Exception { String className = TomcatAgentTransformer.class.getName(); String simpleName = TomcatAgentTransformer.class.getSimpleName(); - if (config.getServerType().equals(Constants.SERVER_TOMCAT)){ + if (config.getServerType().equals(Constants.SERVER_TOMCAT)) { className = TomcatAgentTransformer.class.getName(); simpleName = TomcatAgentTransformer.class.getSimpleName(); - } - if (config.getServerType().equals(Constants.SERVER_SPRING_MVC)){ + } else if (config.getServerType().equals(Constants.SERVER_SPRING_MVC)) { className = SpringMVCAgentTransformer.class.getName(); simpleName = SpringMVCAgentTransformer.class.getSimpleName(); + } else { + throw new RuntimeException(String.format("Java Agent 暂时只支持 %s、%s",Constants.SERVER_TOMCAT,Constants.SERVER_SPRING_MVC)); } + String classFileName = simpleName.replace('.', '/') + ".class"; ClassPool pool = ClassPool.getDefault(); // Note: jar 包中的文件不能通过文件路径读取,需要通过流读取 @@ -53,7 +57,7 @@ public class JARAgentFormater implements IFormater { copyJarEntries(jar, tempJar); - addModifiedClassToJar(pool, className, simpleName, classFileName, tempJar, config.getPass(),CommonUtil.encodeBase64(clazzbyte)); + addModifiedClassToJar(pool, className, simpleName, classFileName, tempJar, config.getPass(), CommonUtil.encodeBase64(clazzbyte)); } catch (Exception e) { e.printStackTrace(); } @@ -86,7 +90,7 @@ public class JARAgentFormater implements IFormater { } } - private void addModifiedClassToJar(ClassPool pool, String className, String simpleName, String classFileName, JarOutputStream tempJar,String injectFlag, String injectorCode) throws Exception { + private void addModifiedClassToJar(ClassPool pool, String className, String simpleName, String classFileName, JarOutputStream tempJar, String injectFlag, String injectorCode) throws Exception { CtClass ctClass = pool.get(className); ctClass.getClassFile().setVersionToJava5(); ctClass.setName(simpleName);