1818import java .util .jar .JarOutputStream ;
1919import java .util .jar .Manifest ;
2020
21+ // todo: 其他中间件
22+
2123public class JARAgentFormater implements IFormater {
2224 public byte [] transform (byte [] clazzbyte , AbstractConfig config ) throws Exception {
2325 String className = TomcatAgentTransformer .class .getName ();
2426 String simpleName = TomcatAgentTransformer .class .getSimpleName ();
25- if (config .getServerType ().equals (Constants .SERVER_TOMCAT )){
27+ if (config .getServerType ().equals (Constants .SERVER_TOMCAT )) {
2628 className = TomcatAgentTransformer .class .getName ();
2729 simpleName = TomcatAgentTransformer .class .getSimpleName ();
28- }
29- if (config .getServerType ().equals (Constants .SERVER_SPRING_MVC )){
30+ } else if (config .getServerType ().equals (Constants .SERVER_SPRING_MVC )) {
3031 className = SpringMVCAgentTransformer .class .getName ();
3132 simpleName = SpringMVCAgentTransformer .class .getSimpleName ();
33+ } else {
34+ throw new RuntimeException (String .format ("Java Agent 暂时只支持 %s、%s" ,Constants .SERVER_TOMCAT ,Constants .SERVER_SPRING_MVC ));
3235 }
36+
3337 String classFileName = simpleName .replace ('.' , '/' ) + ".class" ;
3438 ClassPool pool = ClassPool .getDefault ();
3539// Note: jar 包中的文件不能通过文件路径读取,需要通过流读取
@@ -53,7 +57,7 @@ public byte[] transform(byte[] clazzbyte, AbstractConfig config) throws Exceptio
5357
5458 copyJarEntries (jar , tempJar );
5559
56- addModifiedClassToJar (pool , className , simpleName , classFileName , tempJar , config .getPass (),CommonUtil .encodeBase64 (clazzbyte ));
60+ addModifiedClassToJar (pool , className , simpleName , classFileName , tempJar , config .getPass (), CommonUtil .encodeBase64 (clazzbyte ));
5761 } catch (Exception e ) {
5862 e .printStackTrace ();
5963 }
@@ -86,7 +90,7 @@ private void copyJarEntries(JarFile jar, JarOutputStream tempJar) throws IOExcep
8690 }
8791 }
8892
89- private void addModifiedClassToJar (ClassPool pool , String className , String simpleName , String classFileName , JarOutputStream tempJar ,String injectFlag , String injectorCode ) throws Exception {
93+ private void addModifiedClassToJar (ClassPool pool , String className , String simpleName , String classFileName , JarOutputStream tempJar , String injectFlag , String injectorCode ) throws Exception {
9094 CtClass ctClass = pool .get (className );
9195 ctClass .getClassFile ().setVersionToJava5 ();
9296 ctClass .setName (simpleName );
0 commit comments