Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
apache
SkyWalking
提交
3ee26762
S
SkyWalking
项目概览
apache
/
SkyWalking
上一次同步 1 年多
通知
302
Star
21345
Fork
6091
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
SkyWalking
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
3ee26762
编写于
7月 01, 2016
作者:
wu-sheng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
增加一个见证者类的代码。用于后期标定不同版本的插件使用。
上级
2f86b1b3
变更
10
隐藏空白更改
内联
并排
Showing
10 changed file
with
54 addition
and
31 deletion
+54
-31
skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/AbstractClassEnhancePluginDefine.java
.../plugin/interceptor/AbstractClassEnhancePluginDefine.java
+45
-22
skywalking-collector/skywalking-api/src/test/java/test/ai/cloud/matcher/TestMatcherDefine.java
...rc/test/java/test/ai/cloud/matcher/TestMatcherDefine.java
+1
-1
skywalking-collector/skywalking-api/src/test/java/test/ai/cloud/plugin/TestInterceptorDefine.java
...test/java/test/ai/cloud/plugin/TestInterceptorDefine.java
+1
-1
skywalking-collector/skywalking-sdk-plugin/dubbo-plugin/src/main/java/com/ai/cloud/skywalking/plugin/dubbo/DubboPluginDefine.java
...m/ai/cloud/skywalking/plugin/dubbo/DubboPluginDefine.java
+1
-1
skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin/src/main/java/org/skywalking/httpClient/v4/plugin/define/AbstractHttpClientPluginDefine.java
...ient/v4/plugin/define/AbstractHttpClientPluginDefine.java
+1
-1
skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin/src/main/java/org/skywalking/httpClient/v4/plugin/define/DefaultRequestDirectorPluginDefine.java
.../v4/plugin/define/DefaultRequestDirectorPluginDefine.java
+1
-1
skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin/src/main/java/org/skywalking/httpClient/v4/plugin/define/InternalHttpClientPluginDefine.java
...ient/v4/plugin/define/InternalHttpClientPluginDefine.java
+1
-1
skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin/src/main/java/org/skywalking/httpClient/v4/plugin/define/MinimalHttpClientPluginDefine.java
...lient/v4/plugin/define/MinimalHttpClientPluginDefine.java
+1
-1
skywalking-collector/skywalking-sdk-plugin/jedis-2.x-plugin/src/main/java/com/ai/cloud/skywalking/jedis/v2/plugin/define/JedisClusterPluginDefine.java
...king/jedis/v2/plugin/define/JedisClusterPluginDefine.java
+1
-1
skywalking-collector/skywalking-sdk-plugin/jedis-2.x-plugin/src/main/java/com/ai/cloud/skywalking/jedis/v2/plugin/define/JedisPluginDefine.java
.../skywalking/jedis/v2/plugin/define/JedisPluginDefine.java
+1
-1
未找到文件。
skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/AbstractClassEnhancePluginDefine.java
浏览文件 @
3ee26762
package
com.ai.cloud.skywalking.plugin.interceptor
;
import
static
com
.
ai
.
cloud
.
skywalking
.
plugin
.
PluginBootstrap
.
CLASS_TYPE_POOL
;
import
com.ai.cloud.skywalking.logging.LogManager
;
import
com.ai.cloud.skywalking.logging.Logger
;
import
com.ai.cloud.skywalking.plugin.IPlugin
;
import
com.ai.cloud.skywalking.plugin.PluginException
;
import
com.ai.cloud.skywalking.util.StringUtil
;
import
net.bytebuddy.ByteBuddy
;
import
net.bytebuddy.dynamic.ClassFileLocator
;
import
net.bytebuddy.dynamic.DynamicType
;
import
net.bytebuddy.dynamic.loading.ClassLoadingStrategy
;
import
net.bytebuddy.pool.TypePool.Resolution
;
import
com.ai.cloud.skywalking.plugin.IPlugin
;
import
com.ai.cloud.skywalking.plugin.PluginException
;
import
com.ai.cloud.skywalking.util.StringUtil
;
import
static
com
.
ai
.
cloud
.
skywalking
.
plugin
.
PluginBootstrap
.
CLASS_TYPE_POOL
;
public
abstract
class
AbstractClassEnhancePluginDefine
implements
IPlugin
{
private
static
Logger
logger
=
LogManager
.
getLogger
(
AbstractClassEnhancePluginDefine
.
class
);
@Override
public
void
define
()
throws
PluginException
{
String
interceptorDefineClassName
=
this
.
getClass
().
getName
();
String
enhanceOriginClassName
=
getBeIntercepted
ClassName
();
private
static
Logger
logger
=
LogManager
.
getLogger
(
AbstractClassEnhancePluginDefine
.
class
);
@Override
public
void
define
()
throws
PluginException
{
String
interceptorDefineClassName
=
this
.
getClass
().
getName
();
String
enhanceOriginClassName
=
enhance
ClassName
();
if
(
StringUtil
.
isEmpty
(
enhanceOriginClassName
))
{
logger
.
warn
(
"classname of being intercepted is not defined by {}."
,
interceptorDefineClassName
);
...
...
@@ -38,13 +37,27 @@ public abstract class AbstractClassEnhancePluginDefine implements IPlugin {
return
;
}
/**
* find witness classes for enhance class
*/
String
[]
witnessClasses
=
witnessClasses
();
if
(
witnessClasses
!=
null
)
{
for
(
String
witnessClass
:
witnessClasses
)
{
Resolution
witnessClassResolution
=
CLASS_TYPE_POOL
.
describe
(
witnessClass
);
if
(!
witnessClassResolution
.
isResolved
())
{
logger
.
warn
(
"enhance class {} by plugin {} is not working. Because witness class {} is not existed."
,
enhanceOriginClassName
,
interceptorDefineClassName
,
witnessClass
);
return
;
}
}
}
/**
* find origin class source code for interceptor
*/
DynamicType
.
Builder
<?>
newClassBuilder
=
new
ByteBuddy
()
.
rebase
(
resolution
.
resolve
(),
ClassFileLocator
.
ForClassLoader
.
ofClassPath
());
newClassBuilder
=
this
.
enhance
(
enhanceOriginClassName
,
newClassBuilder
);
/**
...
...
@@ -59,14 +72,24 @@ public abstract class AbstractClassEnhancePluginDefine implements IPlugin {
logger
.
debug
(
"enhance class {} by {} completely."
,
enhanceOriginClassName
,
interceptorDefineClassName
);
}
protected
abstract
DynamicType
.
Builder
<?>
enhance
(
String
enhanceOriginClassName
,
DynamicType
.
Builder
<?>
newClassBuilder
)
throws
PluginException
;
}
protected
abstract
DynamicType
.
Builder
<?>
enhance
(
String
enhanceOriginClassName
,
DynamicType
.
Builder
<?>
newClassBuilder
)
throws
PluginException
;
/**
* 返回要被增强的类,应当返回类全名
*
* @return
*/
protected
abstract
String
enhanceClassName
();
/**
* 返回要被增强的类,应当返回类全名
*
* @return
*/
protected
abstract
String
getBeInterceptedClassName
();
/**
* 返回一个类名的列表
* 如果列表中的类在JVM中存在,则enhance可以会尝试生效
*
* @return
*/
protected
String
[]
witnessClasses
(){
return
new
String
[]{};
}
}
skywalking-collector/skywalking-api/src/test/java/test/ai/cloud/matcher/TestMatcherDefine.java
浏览文件 @
3ee26762
...
...
@@ -10,7 +10,7 @@ import com.ai.cloud.skywalking.plugin.interceptor.matcher.PrivateMethodMatcher;
*/
public
class
TestMatcherDefine
extends
ClassInstanceMethodsEnhancePluginDefine
{
@Override
public
String
getBeIntercepted
ClassName
()
{
public
String
enhance
ClassName
()
{
return
"test.ai.cloud.matcher.TestMatcherClass"
;
}
...
...
skywalking-collector/skywalking-api/src/test/java/test/ai/cloud/plugin/TestInterceptorDefine.java
浏览文件 @
3ee26762
...
...
@@ -9,7 +9,7 @@ import com.ai.cloud.skywalking.plugin.interceptor.matcher.SimpleMethodMatcher;
public
class
TestInterceptorDefine
extends
ClassEnhancePluginDefine
{
@Override
public
String
getBeIntercepted
ClassName
()
{
public
String
enhance
ClassName
()
{
return
"test.ai.cloud.plugin.BeInterceptedClass"
;
}
...
...
skywalking-collector/skywalking-sdk-plugin/dubbo-plugin/src/main/java/com/ai/cloud/skywalking/plugin/dubbo/DubboPluginDefine.java
浏览文件 @
3ee26762
...
...
@@ -17,7 +17,7 @@ public class DubboPluginDefine extends ClassStaticMethodsEnhancePluginDefine {
}
@Override
protected
String
getBeIntercepted
ClassName
()
{
protected
String
enhance
ClassName
()
{
return
"com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper"
;
}
}
skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin/src/main/java/org/skywalking/httpClient/v4/plugin/define/AbstractHttpClientPluginDefine.java
浏览文件 @
3ee26762
...
...
@@ -6,7 +6,7 @@ import com.ai.cloud.skywalking.plugin.interceptor.matcher.SimpleMethodMatcher;
public
class
AbstractHttpClientPluginDefine
extends
HttpClientPluginDefine
{
@Override
public
String
getBeIntercepted
ClassName
()
{
public
String
enhance
ClassName
()
{
return
"org.apache.http.impl.client.AbstractHttpClient"
;
}
...
...
skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin/src/main/java/org/skywalking/httpClient/v4/plugin/define/DefaultRequestDirectorPluginDefine.java
浏览文件 @
3ee26762
...
...
@@ -10,7 +10,7 @@ public class DefaultRequestDirectorPluginDefine extends HttpClientPluginDefine {
* since 4.3, this class is Deprecated.
*/
@Override
public
String
getBeIntercepted
ClassName
()
{
public
String
enhance
ClassName
()
{
return
"org.apache.http.impl.client.DefaultRequestDirector"
;
}
...
...
skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin/src/main/java/org/skywalking/httpClient/v4/plugin/define/InternalHttpClientPluginDefine.java
浏览文件 @
3ee26762
...
...
@@ -10,7 +10,7 @@ public class InternalHttpClientPluginDefine extends HttpClientPluginDefine {
}
@Override
public
String
getBeIntercepted
ClassName
()
{
public
String
enhance
ClassName
()
{
return
"org.apache.http.impl.client.InternalHttpClient"
;
}
...
...
skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin/src/main/java/org/skywalking/httpClient/v4/plugin/define/MinimalHttpClientPluginDefine.java
浏览文件 @
3ee26762
...
...
@@ -10,7 +10,7 @@ public class MinimalHttpClientPluginDefine extends HttpClientPluginDefine {
}
@Override
public
String
getBeIntercepted
ClassName
()
{
public
String
enhance
ClassName
()
{
return
"org.apache.http.impl.client.MinimalHttpClient"
;
}
...
...
skywalking-collector/skywalking-sdk-plugin/jedis-2.x-plugin/src/main/java/com/ai/cloud/skywalking/jedis/v2/plugin/define/JedisClusterPluginDefine.java
浏览文件 @
3ee26762
...
...
@@ -9,7 +9,7 @@ import com.ai.cloud.skywalking.plugin.interceptor.matcher.AnyMethodsMatcher;
public
class
JedisClusterPluginDefine
extends
ClassInstanceMethodsEnhancePluginDefine
{
@Override
public
String
getBeIntercepted
ClassName
()
{
public
String
enhance
ClassName
()
{
return
"redis.clients.jedis.JedisCluster"
;
}
...
...
skywalking-collector/skywalking-sdk-plugin/jedis-2.x-plugin/src/main/java/com/ai/cloud/skywalking/jedis/v2/plugin/define/JedisPluginDefine.java
浏览文件 @
3ee26762
...
...
@@ -11,7 +11,7 @@ import com.ai.cloud.skywalking.plugin.interceptor.matcher.SimpleMethodMatcher;
public
class
JedisPluginDefine
extends
ClassInstanceMethodsEnhancePluginDefine
{
@Override
public
String
getBeIntercepted
ClassName
()
{
public
String
enhance
ClassName
()
{
return
"redis.clients.jedis.Jedis"
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录