移除Javassit的引用并修复编译问题
This commit is contained in:
parent
2158fd0cbe
commit
7829a52422
|
|
@ -0,0 +1,5 @@
|
|||
#Generated by Maven
|
||||
#Thu Jul 28 13:53:53 CST 2016
|
||||
version=1.0-Final
|
||||
groupId=com.ai.cloud
|
||||
artifactId=dubbo-impl
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
com/ai/cloud/skywalking/sample/mybatis/model/Sampletable1Example$Criterion.class
|
||||
com/ai/cloud/skywalking/sample/mybatis/model/Sampletable2Example$Criterion.class
|
||||
com/ai/cloud/skywalking/sample/mybatis/model/Sampletable1.class
|
||||
com/ai/cloud/skywalking/sample/mybatis/model/Sampletable2.class
|
||||
com/ai/cloud/skywalking/sample/dubbo/impl/SampleDubboInterfaceImpl.class
|
||||
com/ai/cloud/skywalking/sample/mybatis/model/Sampletable2Example$Criteria.class
|
||||
com/ai/cloud/skywalking/sample/util/DubboStart.class
|
||||
com/ai/cloud/skywalking/sample/mybatis/dao/Sampletable1Mapper.class
|
||||
com/ai/cloud/skywalking/sample/mybatis/model/Sampletable1Example$GeneratedCriteria.class
|
||||
com/ai/cloud/skywalking/sample/mybatis/dao/Sampletable2Mapper.class
|
||||
com/ai/cloud/skywalking/sample/mybatis/model/Sampletable2Example.class
|
||||
com/ai/cloud/skywalking/sample/mybatis/model/Sampletable1Example.class
|
||||
com/ai/cloud/skywalking/sample/mybatis/model/Sampletable1Example$Criteria.class
|
||||
com/ai/cloud/skywalking/sample/service/impl/SampleServiceImpl.class
|
||||
com/ai/cloud/skywalking/sample/service/inter/SampleServiceInterface.class
|
||||
com/ai/cloud/skywalking/sample/mybatis/model/Sampletable2Example$GeneratedCriteria.class
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
/Users/xin/workbench/sky-walking/samples/skywalking-example/example-dubbo/dubbo-impl/src/main/java/com/ai/cloud/skywalking/sample/dubbo/impl/SampleDubboInterfaceImpl.java
|
||||
/Users/xin/workbench/sky-walking/samples/skywalking-example/example-dubbo/dubbo-impl/src/main/java/com/ai/cloud/skywalking/sample/mybatis/model/Sampletable1.java
|
||||
/Users/xin/workbench/sky-walking/samples/skywalking-example/example-dubbo/dubbo-impl/src/main/java/com/ai/cloud/skywalking/sample/mybatis/dao/Sampletable1Mapper.java
|
||||
/Users/xin/workbench/sky-walking/samples/skywalking-example/example-dubbo/dubbo-impl/src/main/java/com/ai/cloud/skywalking/sample/mybatis/dao/Sampletable2Mapper.java
|
||||
/Users/xin/workbench/sky-walking/samples/skywalking-example/example-dubbo/dubbo-impl/src/main/java/com/ai/cloud/skywalking/sample/util/DubboStart.java
|
||||
/Users/xin/workbench/sky-walking/samples/skywalking-example/example-dubbo/dubbo-impl/src/main/java/com/ai/cloud/skywalking/sample/mybatis/model/Sampletable1Example.java
|
||||
/Users/xin/workbench/sky-walking/samples/skywalking-example/example-dubbo/dubbo-impl/src/main/java/com/ai/cloud/skywalking/sample/mybatis/model/Sampletable2.java
|
||||
/Users/xin/workbench/sky-walking/samples/skywalking-example/example-dubbo/dubbo-impl/src/main/java/com/ai/cloud/skywalking/sample/service/impl/SampleServiceImpl.java
|
||||
/Users/xin/workbench/sky-walking/samples/skywalking-example/example-dubbo/dubbo-impl/src/main/java/com/ai/cloud/skywalking/sample/service/inter/SampleServiceInterface.java
|
||||
/Users/xin/workbench/sky-walking/samples/skywalking-example/example-dubbo/dubbo-impl/src/main/java/com/ai/cloud/skywalking/sample/mybatis/model/Sampletable2Example.java
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
#Generated by Maven
|
||||
#Thu Jul 28 13:53:50 CST 2016
|
||||
version=1.0-Final
|
||||
groupId=com.ai.cloud
|
||||
artifactId=dubbo-interfaces
|
||||
|
|
@ -0,0 +1 @@
|
|||
com/ai/cloud/skywalking/sample/dubbo/interfaces/SampleDubboInterface.class
|
||||
|
|
@ -0,0 +1 @@
|
|||
/Users/xin/workbench/sky-walking/samples/skywalking-example/example-dubbo/dubbo-interfaces/src/main/java/com/ai/cloud/skywalking/sample/dubbo/interfaces/SampleDubboInterface.java
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
Manifest-Version: 1.0
|
||||
Built-By: xin
|
||||
Created-By: IntelliJ IDEA
|
||||
Build-Jdk: 1.8.0_91
|
||||
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
#Generated by Maven
|
||||
#Thu Jul 28 13:53:52 CST 2016
|
||||
version=1.0-Final
|
||||
groupId=com.ai.cloud
|
||||
artifactId=example-web
|
||||
|
|
@ -0,0 +1 @@
|
|||
com/ai/cloud/skywalking/sample/web/controller/SampleWebController.class
|
||||
|
|
@ -0,0 +1 @@
|
|||
/Users/xin/workbench/sky-walking/samples/skywalking-example/example-web/src/main/java/com/ai/cloud/skywalking/sample/web/controller/SampleWebController.java
|
||||
|
|
@ -23,8 +23,6 @@
|
|||
<shade.io.netty.target>com.ai.cloud.skywalking.api.dependencies.io.netty</shade.io.netty.target>
|
||||
<shade.com.google.protobuf.source>com.google.protobuf</shade.com.google.protobuf.source>
|
||||
<shade.com.google.protobuf.target>com.ai.cloud.skywalking.api.dependencies.google.protobuf</shade.com.google.protobuf.target>
|
||||
<shade.javassist.source>javassist</shade.javassist.source>
|
||||
<shade.javassist.target>com.ai.cloud.skywalking.api.dependencies.javassist</shade.javassist.target>
|
||||
<shade.com.google.gson.source>com.google.gson</shade.com.google.gson.source>
|
||||
<shade.com.google.gson.target>com.ai.cloud.skywalking.api.dependencies.com.google.gson</shade.com.google.gson.target>
|
||||
</properties>
|
||||
|
|
@ -97,10 +95,6 @@
|
|||
<pattern>${shade.com.google.protobuf.source}</pattern>
|
||||
<shadedPattern>${shade.com.google.protobuf.target}</shadedPattern>
|
||||
</relocation>
|
||||
<relocation>
|
||||
<pattern>${shade.javassist.source}</pattern>
|
||||
<shadedPattern>${shade.javassist.target}</shadedPattern>
|
||||
</relocation>
|
||||
<relocation>
|
||||
<pattern>${shade.com.google.gson.source}</pattern>
|
||||
<shadedPattern>${shade.com.google.gson.target}</shadedPattern>
|
||||
|
|
|
|||
|
|
@ -44,11 +44,7 @@
|
|||
<version>1.0-Final</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.javassist</groupId>
|
||||
<artifactId>javassist</artifactId>
|
||||
<version>3.20.0-GA</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.google.code.gson</groupId>
|
||||
<artifactId>gson</artifactId>
|
||||
|
|
|
|||
|
|
@ -1,70 +0,0 @@
|
|||
package com.ai.cloud.skywalking.transformer;
|
||||
|
||||
import com.ai.cloud.skywalking.logging.LogManager;
|
||||
import com.ai.cloud.skywalking.logging.Logger;
|
||||
import javassist.ClassPool;
|
||||
import javassist.CtClass;
|
||||
import javassist.CtMethod;
|
||||
|
||||
import java.lang.instrument.ClassFileTransformer;
|
||||
import java.lang.instrument.IllegalClassFormatException;
|
||||
import java.lang.reflect.Modifier;
|
||||
import java.security.ProtectionDomain;
|
||||
|
||||
public class ClassTransformer implements ClassFileTransformer {
|
||||
|
||||
private static Logger logger = LogManager.getLogger(ClassTransformer.class);
|
||||
|
||||
private String interceptorPackage;
|
||||
|
||||
public ClassTransformer(String interceptorPackage){
|
||||
this.interceptorPackage = interceptorPackage;
|
||||
}
|
||||
|
||||
@Override
|
||||
public byte[] transform(ClassLoader loader, String className, Class<?> classBeingRedefined, ProtectionDomain protectionDomain, byte[] classfileBuffer) throws IllegalClassFormatException {
|
||||
|
||||
if (interceptorPackage == null || interceptorPackage.length() == 0) {
|
||||
return classfileBuffer;
|
||||
}
|
||||
|
||||
if (!className.replaceAll("/", ".").startsWith(interceptorPackage)) {
|
||||
return classfileBuffer;
|
||||
}
|
||||
|
||||
try {
|
||||
ClassPool classPool = ClassPool.getDefault();
|
||||
CtClass ctClass = classPool.get(className.replaceAll("/", "."));
|
||||
|
||||
if (ctClass.isInterface()) {
|
||||
return classfileBuffer;
|
||||
}
|
||||
|
||||
CtMethod[] ctMethod = ctClass.getDeclaredMethods();
|
||||
for (CtMethod method : ctMethod) {
|
||||
if (Modifier.isStatic(method.getModifiers())) {
|
||||
continue;
|
||||
}
|
||||
|
||||
String methodName = method.getName();
|
||||
method.setName(methodName + "_skywalking_enhance");
|
||||
|
||||
CtMethod newMethod =
|
||||
new CtMethod(method.getReturnType(), methodName, method.getParameterTypes(),
|
||||
method.getDeclaringClass());
|
||||
newMethod.setBody("{" +
|
||||
MethodInterceptor.class.getName() + ".before($class,,$sig,$args,$0,\"" + methodName + "\");"
|
||||
+ "return " + methodName + "_skywalking_enhance($$);}");
|
||||
newMethod.addCatch("{ " + MethodInterceptor.class.getName() + ".handleException(e); throw e;}", classPool.get("java.lang.Throwable"), "e");
|
||||
newMethod.insertAfter("{" + MethodInterceptor.class.getName() + ".after($class,$type,$_);}", true);
|
||||
|
||||
ctClass.addMethod(newMethod);
|
||||
}
|
||||
return ctClass.toBytecode();
|
||||
} catch (Exception e) {
|
||||
logger.error("Failed to transform class " + className, e);
|
||||
return classfileBuffer;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -1,74 +0,0 @@
|
|||
package com.ai.cloud.skywalking.transformer;
|
||||
|
||||
import com.ai.cloud.skywalking.api.IBuriedPointType;
|
||||
import com.ai.cloud.skywalking.invoke.monitor.LocalMethodInvokeMonitor;
|
||||
import com.ai.cloud.skywalking.model.Identification;
|
||||
import com.ai.cloud.skywalking.protocol.common.CallType;
|
||||
import com.google.gson.Gson;
|
||||
|
||||
public class MethodInterceptor {
|
||||
public static IBuriedPointType METHOD_INVOKE_BURIEDPOINT = new IBuriedPointType() {
|
||||
@Override
|
||||
public String getTypeName() {
|
||||
return "LOCAL";
|
||||
}
|
||||
|
||||
@Override
|
||||
public CallType getCallType() {
|
||||
return CallType.SYNC;
|
||||
}
|
||||
};
|
||||
|
||||
public void before(Class originClass, Class[] parametersType, Object[] allArgument, Object superCall,
|
||||
String methodName) {
|
||||
LocalMethodInvokeMonitor localMethodInvokeMonitor = new LocalMethodInvokeMonitor();
|
||||
Identification.IdentificationBuilder identificationBuilder = Identification.newBuilder();
|
||||
identificationBuilder.viewPoint(generateViewPoint(originClass, parametersType, methodName));
|
||||
appendingParameters(allArgument, identificationBuilder);
|
||||
identificationBuilder.spanType(METHOD_INVOKE_BURIEDPOINT);
|
||||
|
||||
localMethodInvokeMonitor.beforeInvoke(identificationBuilder.build());
|
||||
|
||||
}
|
||||
|
||||
private void appendingParameters(Object[] allArgument, Identification.IdentificationBuilder identificationBuilder) {
|
||||
Gson gson = new Gson();
|
||||
for (int i = 0; i < allArgument.length; i++) {
|
||||
try {
|
||||
identificationBuilder.addParameter(gson.toJson(allArgument[i]));
|
||||
} catch (Exception e) {
|
||||
identificationBuilder.addParameter("N/A");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private String generateViewPoint(Class originClass, Class[] parametersType, String methodName) {
|
||||
StringBuilder viewPoint = new StringBuilder(originClass.getName() + "." + methodName + "(");
|
||||
for (Class parameterType : parametersType) {
|
||||
viewPoint.append(parameterType.getClass() + ",");
|
||||
}
|
||||
viewPoint.append(")");
|
||||
return viewPoint.toString();
|
||||
}
|
||||
|
||||
|
||||
public void handleException(Throwable e) {
|
||||
new LocalMethodInvokeMonitor().occurException(e);
|
||||
}
|
||||
|
||||
|
||||
public void after(Class originClass, Class resultType, Object result) {
|
||||
String resultJson = null;
|
||||
if (!void.class.getName().equals(resultType.getName())) {
|
||||
try {
|
||||
resultJson = new Gson().toJson(result);
|
||||
} catch (Exception e) {
|
||||
resultJson = "N/A";
|
||||
}
|
||||
}
|
||||
|
||||
new LocalMethodInvokeMonitor().afterInvoke(resultJson);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
package com.ai.cloud.skywalking.transformer;
|
||||
|
||||
public class StaticMethodInterceptor {
|
||||
|
||||
public void intercept(Class originClass, Object[] allArgument) {
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
#Generated by Maven
|
||||
#Thu Jul 28 13:53:54 CST 2016
|
||||
version=1.0-Final
|
||||
groupId=com.ai.cloud
|
||||
artifactId=tomcat-7.x-8.x-plugin
|
||||
Loading…
Reference in New Issue