Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
apache
SkyWalking
提交
9a741317
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 搜索 >>
提交
9a741317
编写于
8月 04, 2016
作者:
A
ascrutae
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
1. 移除BootPlugin模式, 2. 修改JDBC插件模式
上级
306652bc
变更
23
隐藏空白更改
内联
并排
Showing
23 changed file
with
119 addition
and
281 deletion
+119
-281
skywalking-collector/skywalking-agent/src/main/java/com/ai/cloud/skywalking/agent/SkyWalkingAgent.java
...n/java/com/ai/cloud/skywalking/agent/SkyWalkingAgent.java
+23
-24
skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/AbstractClassEnhancePluginDefine.java
...d/skywalking/plugin/AbstractClassEnhancePluginDefine.java
+1
-1
skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/IPlugin.java
...src/main/java/com/ai/cloud/skywalking/plugin/IPlugin.java
+0
-5
skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/PluginBootstrap.java
.../java/com/ai/cloud/skywalking/plugin/PluginBootstrap.java
+5
-4
skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/PluginDefineCategory.java
.../com/ai/cloud/skywalking/plugin/PluginDefineCategory.java
+14
-29
skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/TracingBootstrap.java
...java/com/ai/cloud/skywalking/plugin/TracingBootstrap.java
+15
-20
skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/boot/BootException.java
...va/com/ai/cloud/skywalking/plugin/boot/BootException.java
+0
-16
skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/boot/IBootPluginDefine.java
...om/ai/cloud/skywalking/plugin/boot/IBootPluginDefine.java
+0
-9
skywalking-collector/skywalking-api/src/test/java/test/ai/cloud/matcher/ExclusionMatcherTest.java
...test/java/test/ai/cloud/matcher/ExclusionMatcherTest.java
+18
-9
skywalking-collector/skywalking-api/src/test/java/test/ai/cloud/plugin/PluginDefineCategoryTest.java
...t/java/test/ai/cloud/plugin/PluginDefineCategoryTest.java
+1
-2
skywalking-collector/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/CallableStatementTracing.java
...loud/skywalking/plugin/jdbc/CallableStatementTracing.java
+1
-0
skywalking-collector/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/ConnectionTracing.java
...om/ai/cloud/skywalking/plugin/jdbc/ConnectionTracing.java
+1
-0
skywalking-collector/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/JDBCPluginDefine.java
...com/ai/cloud/skywalking/plugin/jdbc/JDBCPluginDefine.java
+0
-48
skywalking-collector/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/PreparedStatementTracing.java
...loud/skywalking/plugin/jdbc/PreparedStatementTracing.java
+1
-0
skywalking-collector/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/StatementTracing.java
...com/ai/cloud/skywalking/plugin/jdbc/StatementTracing.java
+1
-0
skywalking-collector/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/TracingDriver.java
...va/com/ai/cloud/skywalking/plugin/jdbc/TracingDriver.java
+0
-100
skywalking-collector/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/define/H2PluginDefine.java
...i/cloud/skywalking/plugin/jdbc/define/H2PluginDefine.java
+8
-0
skywalking-collector/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/define/JDBCBuriedPointType.java
...ud/skywalking/plugin/jdbc/define/JDBCBuriedPointType.java
+1
-1
skywalking-collector/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/define/JDBCDriverInterceptor.java
.../skywalking/plugin/jdbc/define/JDBCDriverInterceptor.java
+4
-3
skywalking-collector/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/define/MysqlPluginDefine.java
...loud/skywalking/plugin/jdbc/define/MysqlPluginDefine.java
+11
-0
skywalking-collector/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/define/OraclePluginDefine.java
...oud/skywalking/plugin/jdbc/define/OraclePluginDefine.java
+11
-0
skywalking-collector/skywalking-sdk-plugin/jdbc-plugin/src/main/resources/driver-mapping-url.def
...gin/jdbc-plugin/src/main/resources/driver-mapping-url.def
+0
-9
skywalking-collector/skywalking-sdk-plugin/jdbc-plugin/src/main/resources/skywalking-plugin.def
...ugin/jdbc-plugin/src/main/resources/skywalking-plugin.def
+3
-1
未找到文件。
skywalking-collector/skywalking-agent/src/main/java/com/ai/cloud/skywalking/agent/SkyWalkingAgent.java
浏览文件 @
9a741317
...
...
@@ -5,8 +5,10 @@ import com.ai.cloud.skywalking.conf.AuthDesc;
import
com.ai.cloud.skywalking.conf.Config
;
import
com.ai.cloud.skywalking.logging.LogManager
;
import
com.ai.cloud.skywalking.logging.Logger
;
import
com.ai.cloud.skywalking.plugin.*
;
import
com.ai.cloud.skywalking.plugin.boot.IBootPluginDefine
;
import
com.ai.cloud.skywalking.plugin.AbstractClassEnhancePluginDefine
;
import
com.ai.cloud.skywalking.plugin.PluginBootstrap
;
import
com.ai.cloud.skywalking.plugin.PluginDefineCategory
;
import
com.ai.cloud.skywalking.plugin.PluginException
;
import
net.bytebuddy.agent.builder.AgentBuilder
;
import
net.bytebuddy.description.NamedElement
;
import
net.bytebuddy.description.type.TypeDescription
;
...
...
@@ -17,7 +19,6 @@ import net.bytebuddy.utility.JavaModule;
import
java.io.File
;
import
java.lang.instrument.Instrumentation
;
import
java.net.URL
;
import
java.util.List
;
public
class
SkyWalkingAgent
{
private
static
Logger
logger
=
LogManager
.
getLogger
(
SkyWalkingAgent
.
class
);
...
...
@@ -25,18 +26,21 @@ public class SkyWalkingAgent {
public
static
void
premain
(
String
agentArgs
,
Instrumentation
instrumentation
)
throws
PluginException
{
initConfig
();
if
(
AuthDesc
.
isAuth
())
{
final
PluginDefineCategory
pluginDefineCategory
=
PluginDefineCategory
.
category
(
new
PluginBootstrap
().
loadPlugins
());
startBootPluginDefines
(
pluginDefineCategory
.
getBootPluginsDefines
());
new
AgentBuilder
.
Default
().
type
(
enhanceClassMatcher
(
pluginDefineCategory
)).
transform
(
new
AgentBuilder
.
Transformer
()
{
public
DynamicType
.
Builder
<?>
transform
(
DynamicType
.
Builder
<?>
builder
,
TypeDescription
typeDescription
,
ClassLoader
classLoader
)
{
AbstractClassEnhancePluginDefine
pluginDefine
=
pluginDefineCategory
.
findPluginDefine
(
typeDescription
.
getTypeName
());
return
pluginDefine
.
define
(
typeDescription
.
getTypeName
(),
builder
);
}
}).
with
(
new
AgentBuilder
.
Listener
()
{
final
PluginDefineCategory
pluginDefineCategory
=
PluginDefineCategory
.
category
(
new
PluginBootstrap
().
loadPlugins
());
new
AgentBuilder
.
Default
().
type
(
enhanceClassMatcher
(
pluginDefineCategory
))
.
transform
(
new
AgentBuilder
.
Transformer
()
{
public
DynamicType
.
Builder
<?>
transform
(
DynamicType
.
Builder
<?>
builder
,
TypeDescription
typeDescription
,
ClassLoader
classLoader
)
{
AbstractClassEnhancePluginDefine
pluginDefine
=
pluginDefineCategory
.
findPluginDefine
(
typeDescription
.
getTypeName
());
return
pluginDefine
.
define
(
typeDescription
.
getTypeName
(),
builder
);
}
}).
with
(
new
AgentBuilder
.
Listener
()
{
@Override
public
void
onTransformation
(
TypeDescription
typeDescription
,
ClassLoader
classLoader
,
JavaModule
module
,
DynamicType
dynamicType
)
{
public
void
onTransformation
(
TypeDescription
typeDescription
,
ClassLoader
classLoader
,
JavaModule
module
,
DynamicType
dynamicType
)
{
}
...
...
@@ -58,18 +62,11 @@ public class SkyWalkingAgent {
}
private
static
<
T
extends
NamedElement
>
ElementMatcher
.
Junction
<
T
>
enhanceClassMatcher
(
PluginDefineCategory
pluginDefineCategory
)
{
private
static
<
T
extends
NamedElement
>
ElementMatcher
.
Junction
<
T
>
enhanceClassMatcher
(
PluginDefineCategory
pluginDefineCategory
)
{
return
new
SkyWalkingEnhanceMatcher
<
T
>(
pluginDefineCategory
);
}
public
static
void
startBootPluginDefines
(
List
<
IBootPluginDefine
>
IBootPluginDefines
)
throws
PluginException
{
for
(
IBootPluginDefine
bootPluginDefine
:
IBootPluginDefines
)
{
bootPluginDefine
.
boot
();
}
}
private
static
String
generateLocationPath
()
{
return
SkyWalkingAgent
.
class
.
getName
().
replaceAll
(
"\\."
,
"/"
)
+
".class"
;
}
...
...
@@ -82,7 +79,9 @@ public class SkyWalkingAgent {
private
static
String
initAgentBasePath
()
{
try
{
String
urlString
=
SkyWalkingAgent
.
class
.
getClassLoader
().
getSystemClassLoader
().
getResource
(
generateLocationPath
()).
toString
();
String
urlString
=
SkyWalkingAgent
.
class
.
getClassLoader
().
getSystemClassLoader
().
getResource
(
generateLocationPath
())
.
toString
();
urlString
=
urlString
.
substring
(
urlString
.
indexOf
(
"file:"
),
urlString
.
indexOf
(
'!'
));
return
new
File
(
new
URL
(
urlString
).
getFile
()).
getParentFile
().
getAbsolutePath
();
}
catch
(
Exception
e
)
{
...
...
skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/AbstractClassEnhancePluginDefine.java
浏览文件 @
9a741317
...
...
@@ -11,7 +11,7 @@ import net.bytebuddy.pool.TypePool.Resolution;
import
static
com
.
ai
.
cloud
.
skywalking
.
plugin
.
PluginBootstrap
.
CLASS_TYPE_POOL
;
public
abstract
class
AbstractClassEnhancePluginDefine
implements
IPlugin
{
public
abstract
class
AbstractClassEnhancePluginDefine
{
private
static
Logger
logger
=
LogManager
.
getLogger
(
AbstractClassEnhancePluginDefine
.
class
);
public
DynamicType
.
Builder
<?>
define
(
String
transformClassName
,
DynamicType
.
Builder
<?>
builder
)
throws
PluginException
{
...
...
skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/IPlugin.java
已删除
100644 → 0
浏览文件 @
306652bc
package
com.ai.cloud.skywalking.plugin
;
public
interface
IPlugin
{
}
skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/PluginBootstrap.java
浏览文件 @
9a741317
...
...
@@ -13,7 +13,7 @@ public class PluginBootstrap {
public
static
TypePool
CLASS_TYPE_POOL
=
null
;
public
List
<
IPlugin
>
loadPlugins
()
{
public
List
<
AbstractClassEnhancePluginDefine
>
loadPlugins
()
{
CLASS_TYPE_POOL
=
TypePool
.
Default
.
ofClassPath
();
PluginResourcesResolver
resolver
=
new
PluginResourcesResolver
();
...
...
@@ -21,7 +21,7 @@ public class PluginBootstrap {
if
(
resources
==
null
||
resources
.
size
()
==
0
)
{
logger
.
info
(
"no plugin files (skywalking-plugin.properties) found, continue to start application."
);
return
new
ArrayList
<
IPlugin
>();
return
new
ArrayList
<
AbstractClassEnhancePluginDefine
>();
}
for
(
URL
pluginUrl
:
resources
)
{
...
...
@@ -34,11 +34,12 @@ public class PluginBootstrap {
List
<
String
>
pluginClassList
=
PluginCfg
.
CFG
.
getPluginClassList
();
List
<
IPlugin
>
plugins
=
new
ArrayList
<
IPlugin
>();
List
<
AbstractClassEnhancePluginDefine
>
plugins
=
new
ArrayList
<
AbstractClassEnhancePluginDefine
>();
for
(
String
pluginClassName
:
pluginClassList
)
{
try
{
logger
.
debug
(
"prepare to enhance class by plugin {}."
,
pluginClassName
);
IPlugin
plugin
=
(
IPlugin
)
Class
.
forName
(
pluginClassName
).
newInstance
();
AbstractClassEnhancePluginDefine
plugin
=
(
AbstractClassEnhancePluginDefine
)
Class
.
forName
(
pluginClassName
).
newInstance
();
plugins
.
add
(
plugin
);
}
catch
(
Throwable
t
)
{
logger
.
error
(
"prepare to enhance class by plugin [{}] failure."
,
new
Object
[]
{
pluginClassName
},
t
);
...
...
skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/PluginDefineCategory.java
浏览文件 @
9a741317
package
com.ai.cloud.skywalking.plugin
;
import
com.ai.cloud.skywalking.plugin.boot.IBootPluginDefine
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
...
...
@@ -13,42 +10,29 @@ public class PluginDefineCategory {
private
final
Map
<
String
,
AbstractClassEnhancePluginDefine
>
exactClassEnhancePluginDefineMapping
=
new
HashMap
<
String
,
AbstractClassEnhancePluginDefine
>();
private
final
List
<
IBootPluginDefine
>
IBootPluginDefines
=
new
ArrayList
<
IBootPluginDefine
>();
private
final
Map
<
String
,
AbstractClassEnhancePluginDefine
>
blurryClassEnhancePluginDefineMapping
=
new
HashMap
<
String
,
AbstractClassEnhancePluginDefine
>();
private
PluginDefineCategory
(
List
<
IPlugin
>
plugins
)
{
for
(
IPlugin
plugin
:
plugins
)
{
if
(
plugin
instanceof
AbstractClassEnhancePluginDefine
)
{
String
enhanceClassName
=
((
AbstractClassEnhancePluginDefine
)
plugin
).
enhanceClassName
();
if
(
enhanceClassName
.
endsWith
(
"*"
))
{
// 加上. 为了区分 com.ai.test com.ai.test1
blurryClassEnhancePluginDefineMapping
.
put
(
enhanceClassName
.
substring
(
0
,
enhanceClassName
.
length
()
-
1
),
(
AbstractClassEnhancePluginDefine
)
plugin
);
}
else
{
exactClassEnhancePluginDefineMapping
.
put
(
enhanceClassName
,
(
AbstractClassEnhancePluginDefine
)
plugin
);
}
}
if
(
plugin
instanceof
IBootPluginDefine
)
{
IBootPluginDefines
.
add
((
IBootPluginDefine
)
plugin
);
private
PluginDefineCategory
(
List
<
AbstractClassEnhancePluginDefine
>
plugins
)
{
for
(
AbstractClassEnhancePluginDefine
plugin
:
plugins
)
{
String
enhanceClassName
=
plugin
.
enhanceClassName
();
if
(
enhanceClassName
.
endsWith
(
"*"
))
{
// 加上. 为了区分 com.ai.test com.ai.test1
blurryClassEnhancePluginDefineMapping
.
put
(
enhanceClassName
.
substring
(
0
,
enhanceClassName
.
length
()
-
1
),
plugin
);
}
else
{
exactClassEnhancePluginDefineMapping
.
put
(
enhanceClassName
,
plugin
);
}
}
}
public
static
PluginDefineCategory
category
(
List
<
IPlugin
>
plugins
)
{
public
static
PluginDefineCategory
category
(
List
<
AbstractClassEnhancePluginDefine
>
plugins
)
{
if
(
pluginDefineCategory
==
null
)
{
pluginDefineCategory
=
new
PluginDefineCategory
(
plugins
);
}
return
pluginDefineCategory
;
}
public
List
<
IBootPluginDefine
>
getBootPluginsDefines
()
{
return
pluginDefineCategory
.
IBootPluginDefines
;
}
public
Map
<
String
,
AbstractClassEnhancePluginDefine
>
getExactClassEnhancePluginDefineMapping
()
{
return
pluginDefineCategory
.
exactClassEnhancePluginDefineMapping
;
...
...
@@ -59,12 +43,13 @@ public class PluginDefineCategory {
}
public
AbstractClassEnhancePluginDefine
findPluginDefine
(
String
enhanceClassName
)
{
if
(
exactClassEnhancePluginDefineMapping
.
containsKey
(
enhanceClassName
)){
if
(
exactClassEnhancePluginDefineMapping
.
containsKey
(
enhanceClassName
))
{
return
exactClassEnhancePluginDefineMapping
.
get
(
enhanceClassName
);
}
for
(
Map
.
Entry
<
String
,
AbstractClassEnhancePluginDefine
>
entry
:
blurryClassEnhancePluginDefineMapping
.
entrySet
()){
if
(
enhanceClassName
.
startsWith
(
entry
.
getKey
())){
for
(
Map
.
Entry
<
String
,
AbstractClassEnhancePluginDefine
>
entry
:
blurryClassEnhancePluginDefineMapping
.
entrySet
())
{
if
(
enhanceClassName
.
startsWith
(
entry
.
getKey
()))
{
return
entry
.
getValue
();
}
}
...
...
skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/TracingBootstrap.java
浏览文件 @
9a741317
...
...
@@ -2,7 +2,6 @@ package com.ai.cloud.skywalking.plugin;
import
com.ai.cloud.skywalking.logging.LogManager
;
import
com.ai.cloud.skywalking.logging.Logger
;
import
com.ai.cloud.skywalking.plugin.boot.IBootPluginDefine
;
import
net.bytebuddy.ByteBuddy
;
import
net.bytebuddy.dynamic.ClassFileLocator
;
import
net.bytebuddy.dynamic.DynamicType
;
...
...
@@ -25,12 +24,14 @@ public class TracingBootstrap {
private
TracingBootstrap
()
{
}
public
static
void
main
(
String
[]
args
)
throws
PluginException
,
ClassNotFoundException
,
NoSuchMethodException
,
InvocationTargetException
,
IllegalAccessException
{
public
static
void
main
(
String
[]
args
)
throws
PluginException
,
ClassNotFoundException
,
NoSuchMethodException
,
InvocationTargetException
,
IllegalAccessException
{
if
(
args
.
length
==
0
)
{
throw
new
RuntimeException
(
"bootstrap failure. need args[0] to be main class."
);
}
List
<
IPlugin
>
plugins
=
null
;
List
<
AbstractClassEnhancePluginDefine
>
plugins
=
null
;
try
{
PluginBootstrap
bootstrap
=
new
PluginBootstrap
();
...
...
@@ -39,24 +40,18 @@ public class TracingBootstrap {
logger
.
error
(
"PluginBootstrap start failure."
,
t
);
}
for
(
IPlugin
plugin
:
plugins
)
{
if
(
plugin
instanceof
AbstractClassEnhancePluginDefine
)
{
String
enhanceClassName
=
((
AbstractClassEnhancePluginDefine
)
plugin
).
enhanceClassName
();
TypePool
.
Resolution
resolution
=
TypePool
.
Default
.
ofClassPath
().
describe
(
enhanceClassName
);
if
(!
resolution
.
isResolved
())
{
logger
.
error
(
"Failed to resolve the class "
+
enhanceClassName
);
continue
;
}
DynamicType
.
Builder
<?>
newClassBuilder
=
new
ByteBuddy
().
rebase
(
resolution
.
resolve
(),
ClassFileLocator
.
ForClassLoader
.
ofClassPath
());
newClassBuilder
=
((
AbstractClassEnhancePluginDefine
)
plugin
).
define
(
enhanceClassName
,
newClassBuilder
);
newClassBuilder
.
make
().
load
(
ClassLoader
.
getSystemClassLoader
(),
ClassLoadingStrategy
.
Default
.
INJECTION
).
getLoaded
();
for
(
AbstractClassEnhancePluginDefine
plugin
:
plugins
)
{
String
enhanceClassName
=
plugin
.
enhanceClassName
();
TypePool
.
Resolution
resolution
=
TypePool
.
Default
.
ofClassPath
().
describe
(
enhanceClassName
);
if
(!
resolution
.
isResolved
())
{
logger
.
error
(
"Failed to resolve the class "
+
enhanceClassName
);
continue
;
}
if
(
plugin
instanceof
IBootPluginDefine
){
((
IBootPluginDefine
)
plugin
).
boot
();
}
DynamicType
.
Builder
<?>
newClassBuilder
=
new
ByteBuddy
().
rebase
(
resolution
.
resolve
(),
ClassFileLocator
.
ForClassLoader
.
ofClassPath
());
newClassBuilder
=
((
AbstractClassEnhancePluginDefine
)
plugin
).
define
(
enhanceClassName
,
newClassBuilder
);
newClassBuilder
.
make
().
load
(
ClassLoader
.
getSystemClassLoader
(),
ClassLoadingStrategy
.
Default
.
INJECTION
)
.
getLoaded
();
}
String
[]
newArgs
=
Arrays
.
copyOfRange
(
args
,
1
,
args
.
length
);
...
...
skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/boot/BootException.java
已删除
100644 → 0
浏览文件 @
306652bc
package
com.ai.cloud.skywalking.plugin.boot
;
import
com.ai.cloud.skywalking.plugin.PluginException
;
public
class
BootException
extends
PluginException
{
private
static
final
long
serialVersionUID
=
8618884011525098003L
;
public
BootException
(
String
message
)
{
super
(
message
);
}
public
BootException
(
String
message
,
Throwable
cause
)
{
super
(
message
,
cause
);
}
}
skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/boot/IBootPluginDefine.java
已删除
100644 → 0
浏览文件 @
306652bc
package
com.ai.cloud.skywalking.plugin.boot
;
import
com.ai.cloud.skywalking.plugin.IPlugin
;
public
interface
IBootPluginDefine
extends
IPlugin
{
void
boot
()
throws
BootException
;
}
skywalking-collector/skywalking-api/src/test/java/test/ai/cloud/matcher/ExclusionMatcherTest.java
浏览文件 @
9a741317
package
test.ai.cloud.matcher
;
import
com.ai.cloud.skywalking.plugin.*
;
import
com.ai.cloud.skywalking.plugin.AbstractClassEnhancePluginDefine
;
import
com.ai.cloud.skywalking.plugin.PluginBootstrap
;
import
com.ai.cloud.skywalking.plugin.PluginDefineCategory
;
import
com.ai.cloud.skywalking.plugin.PluginException
;
import
junit.framework.TestCase
;
import
net.bytebuddy.ByteBuddy
;
import
net.bytebuddy.dynamic.ClassFileLocator
;
...
...
@@ -14,21 +17,27 @@ import java.util.Map;
public
class
ExclusionMatcherTest
extends
TestCase
{
@Test
public
void
testMatcher
()
throws
ClassNotFoundException
,
IllegalAccessException
,
InstantiationException
,
InterruptedException
,
PluginException
{
List
<
IPlugin
>
pluginDefines
=
new
PluginBootstrap
().
loadPlugins
();
public
void
testMatcher
()
throws
ClassNotFoundException
,
IllegalAccessException
,
InstantiationException
,
InterruptedException
,
PluginException
{
List
<
AbstractClassEnhancePluginDefine
>
pluginDefines
=
new
PluginBootstrap
().
loadPlugins
();
PluginDefineCategory
category
=
PluginDefineCategory
.
category
(
pluginDefines
);
PluginDefineCategory
category
=
PluginDefineCategory
.
category
(
pluginDefines
);
for
(
Map
.
Entry
<
String
,
AbstractClassEnhancePluginDefine
>
entry
:
category
.
getExactClassEnhancePluginDefineMapping
().
entrySet
())
{
DynamicType
.
Builder
<?>
newClassBuilder
=
new
ByteBuddy
().
rebase
(
TypePool
.
Default
.
ofClassPath
().
describe
(
entry
.
getKey
()).
resolve
(),
ClassFileLocator
.
ForClassLoader
.
ofClassPath
());
for
(
Map
.
Entry
<
String
,
AbstractClassEnhancePluginDefine
>
entry
:
category
.
getExactClassEnhancePluginDefineMapping
().
entrySet
())
{
DynamicType
.
Builder
<?>
newClassBuilder
=
new
ByteBuddy
()
.
rebase
(
TypePool
.
Default
.
ofClassPath
().
describe
(
entry
.
getKey
()).
resolve
(),
ClassFileLocator
.
ForClassLoader
.
ofClassPath
());
newClassBuilder
=
entry
.
getValue
().
define
(
entry
.
getKey
(),
newClassBuilder
);
newClassBuilder
.
make
().
load
(
ClassLoader
.
getSystemClassLoader
(),
ClassLoadingStrategy
.
Default
.
INJECTION
).
getLoaded
();
newClassBuilder
.
make
().
load
(
ClassLoader
.
getSystemClassLoader
(),
ClassLoadingStrategy
.
Default
.
INJECTION
)
.
getLoaded
();
}
TestMatcherClass
testMatcherClass
=
(
TestMatcherClass
)
Class
.
forName
(
"test.ai.cloud.matcher.TestMatcherClass"
).
newInstance
();
TestMatcherClass
testMatcherClass
=
(
TestMatcherClass
)
Class
.
forName
(
"test.ai.cloud.matcher.TestMatcherClass"
).
newInstance
();
testMatcherClass
.
set
();
testMatcherClass
.
seta
(
"a"
);
...
...
skywalking-collector/skywalking-api/src/test/java/test/ai/cloud/plugin/PluginDefineCategoryTest.java
浏览文件 @
9a741317
package
test.ai.cloud.plugin
;
import
com.ai.cloud.skywalking.plugin.AbstractClassEnhancePluginDefine
;
import
com.ai.cloud.skywalking.plugin.IPlugin
;
import
com.ai.cloud.skywalking.plugin.PluginDefineCategory
;
import
com.ai.cloud.skywalking.plugin.PluginException
;
import
net.bytebuddy.dynamic.DynamicType
;
...
...
@@ -41,7 +40,7 @@ public class PluginDefineCategoryTest {
return
"com.ai.test.*"
;
}
});
List
<
IPlugin
>
plugins
=
new
ArrayList
<
IPlugin
>();
List
<
AbstractClassEnhancePluginDefine
>
plugins
=
new
ArrayList
<
AbstractClassEnhancePluginDefine
>();
plugins
.
add
(
define1
);
pluginDefineCategory
=
PluginDefineCategory
.
category
(
plugins
);
...
...
skywalking-collector/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/CallableStatementTracing.java
浏览文件 @
9a741317
...
...
@@ -2,6 +2,7 @@ package com.ai.cloud.skywalking.plugin.jdbc;
import
com.ai.cloud.skywalking.invoke.monitor.RPCClientInvokeMonitor
;
import
com.ai.cloud.skywalking.model.Identification
;
import
com.ai.cloud.skywalking.plugin.jdbc.define.JDBCBuriedPointType
;
import
java.sql.SQLException
;
...
...
skywalking-collector/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/ConnectionTracing.java
浏览文件 @
9a741317
...
...
@@ -2,6 +2,7 @@ package com.ai.cloud.skywalking.plugin.jdbc;
import
com.ai.cloud.skywalking.invoke.monitor.RPCClientInvokeMonitor
;
import
com.ai.cloud.skywalking.model.Identification
;
import
com.ai.cloud.skywalking.plugin.jdbc.define.JDBCBuriedPointType
;
import
java.sql.SQLException
;
...
...
skywalking-collector/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/JDBCPluginDefine.java
已删除
100644 → 0
浏览文件 @
306652bc
package
com.ai.cloud.skywalking.plugin.jdbc
;
import
com.ai.cloud.skywalking.logging.LogManager
;
import
com.ai.cloud.skywalking.logging.Logger
;
import
com.ai.cloud.skywalking.plugin.boot.BootException
;
import
com.ai.cloud.skywalking.plugin.boot.IBootPluginDefine
;
import
java.lang.reflect.Constructor
;
import
java.lang.reflect.Field
;
import
java.sql.DriverManager
;
import
java.util.concurrent.CopyOnWriteArrayList
;
public
class
JDBCPluginDefine
implements
IBootPluginDefine
{
private
static
Logger
logger
=
LogManager
.
getLogger
(
JDBCPluginDefine
.
class
);
@Override
public
void
boot
()
throws
BootException
{
try
{
Class
<?>
classes
=
Class
.
forName
(
"java.sql.DriverInfo"
);
Object
traceDriverInfo
=
newDriverInfoInstance
(
classes
);
Field
field
=
DriverManager
.
class
.
getDeclaredField
(
"registeredDrivers"
);
field
.
setAccessible
(
true
);
@SuppressWarnings
(
"unchecked"
)
CopyOnWriteArrayList
<
Object
>
copyOnWriteArrayList
=
(
CopyOnWriteArrayList
<
Object
>)
field
.
get
(
DriverManager
.
class
);
copyOnWriteArrayList
.
add
(
0
,
traceDriverInfo
);
}
catch
(
Throwable
e
)
{
// 开启补偿机制
logger
.
error
(
"Failed to inject TracingDriver to the top of registered Drivers. Need to alter jdbc url to trace."
,
e
);
TracingDriver
.
registerDriver
();
}
}
private
Object
newDriverInfoInstance
(
Class
<?>
classes
)
throws
NoSuchMethodException
,
InstantiationException
,
IllegalAccessException
,
java
.
lang
.
reflect
.
InvocationTargetException
{
//DriverInfo 只有一个构造函数
Constructor
constructor
=
classes
.
getDeclaredConstructors
()[
0
];
constructor
.
setAccessible
(
true
);
// JDK 1.7 DriverInfo 只有一个Driver入参构造函数
if
(
constructor
.
getParameterTypes
().
length
==
1
)
{
return
constructor
.
newInstance
(
new
TracingDriver
());
}
// JDK1.8 DriverInfo 有两个入参的构造函数(Driver, DriverAction)
return
constructor
.
newInstance
(
new
TracingDriver
(),
null
);
}
}
skywalking-collector/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/PreparedStatementTracing.java
浏览文件 @
9a741317
...
...
@@ -2,6 +2,7 @@ package com.ai.cloud.skywalking.plugin.jdbc;
import
com.ai.cloud.skywalking.invoke.monitor.RPCClientInvokeMonitor
;
import
com.ai.cloud.skywalking.model.Identification
;
import
com.ai.cloud.skywalking.plugin.jdbc.define.JDBCBuriedPointType
;
import
java.sql.SQLException
;
...
...
skywalking-collector/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/StatementTracing.java
浏览文件 @
9a741317
...
...
@@ -2,6 +2,7 @@ package com.ai.cloud.skywalking.plugin.jdbc;
import
com.ai.cloud.skywalking.invoke.monitor.RPCClientInvokeMonitor
;
import
com.ai.cloud.skywalking.model.Identification
;
import
com.ai.cloud.skywalking.plugin.jdbc.define.JDBCBuriedPointType
;
import
java.sql.SQLException
;
...
...
skywalking-collector/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/TracingDriver.java
已删除
100755 → 0
浏览文件 @
306652bc
package
com.ai.cloud.skywalking.plugin.jdbc
;
import
com.ai.cloud.skywalking.conf.AuthDesc
;
import
com.ai.cloud.skywalking.logging.LogManager
;
import
com.ai.cloud.skywalking.logging.Logger
;
import
java.sql.*
;
import
java.util.Enumeration
;
import
java.util.Properties
;
public
class
TracingDriver
implements
Driver
{
private
static
Logger
logger
=
LogManager
.
getLogger
(
TracingDriver
.
class
);
private
static
final
String
TRACING_SIGN
=
"tracing:"
;
public
static
final
void
registerDriver
()
{
try
{
DriverManager
.
registerDriver
(
new
TracingDriver
());
}
catch
(
SQLException
e
)
{
logger
.
error
(
"register TracingDriver failure."
,
e
);
}
}
private
String
convertConnectURLIfNecessary
(
String
url
)
throws
SQLException
{
if
(
url
.
toLowerCase
().
startsWith
(
TRACING_SIGN
))
{
return
url
.
substring
(
TRACING_SIGN
.
length
());
}
else
{
return
url
;
}
}
public
java
.
sql
.
Connection
connect
(
String
url
,
Properties
info
)
throws
SQLException
{
Driver
driver
=
chooseActualDriver
(
convertConnectURLIfNecessary
(
url
));
if
(
driver
==
null
)
{
throw
new
SQLException
(
"Failed to chooseActualDriver driver by url[{}]."
,
convertConnectURLIfNecessary
(
url
));
}
java
.
sql
.
Connection
conn
=
driver
.
connect
(
convertConnectURLIfNecessary
(
url
),
info
);
if
(!
AuthDesc
.
isAuth
())
{
return
conn
;
}
else
{
return
new
SWConnection
(
convertConnectURLIfNecessary
(
url
),
info
,
conn
);
}
}
public
boolean
acceptsURL
(
String
url
)
throws
SQLException
{
Driver
driver
=
chooseActualDriver
(
convertConnectURLIfNecessary
(
url
));
if
(
driver
==
null
)
{
return
false
;
}
return
driver
.
acceptsURL
(
convertConnectURLIfNecessary
(
url
));
}
public
DriverPropertyInfo
[]
getPropertyInfo
(
String
url
,
Properties
info
)
throws
SQLException
{
return
chooseActualDriver
(
convertConnectURLIfNecessary
(
url
)).
getPropertyInfo
(
convertConnectURLIfNecessary
(
url
),
info
);
}
public
int
getMajorVersion
()
{
return
1
;
}
public
int
getMinorVersion
()
{
return
0
;
}
public
boolean
jdbcCompliant
()
{
return
false
;
}
public
java
.
util
.
logging
.
Logger
getParentLogger
()
throws
SQLFeatureNotSupportedException
{
return
null
;
}
private
static
Driver
chooseActualDriver
(
String
url
)
throws
SQLException
{
try
{
Driver
result
=
null
;
for
(
Enumeration
<
Driver
>
drivers
=
DriverManager
.
getDrivers
();
drivers
.
hasMoreElements
();
)
{
Driver
driver
=
drivers
.
nextElement
();
if
(
driver
instanceof
TracingDriver
)
{
continue
;
}
if
(
driver
.
acceptsURL
(
url
))
{
result
=
driver
;
}
}
return
result
;
}
catch
(
Exception
e
)
{
logger
.
error
(
"Failed to chooseActualDriver sql driver with url["
+
url
+
"]"
,
e
);
throw
new
SQLException
(
"Failed to chooseActualDriver sql driver with url["
+
url
+
"]"
,
e
);
}
}
}
skywalking-collector/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/
plugin/H2Database
PluginDefine.java
→
skywalking-collector/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/
define/H2
PluginDefine.java
浏览文件 @
9a741317
package
com.ai.cloud.skywalking.plugin.jdbc.
plugin
;
package
com.ai.cloud.skywalking.plugin.jdbc.
define
;
import
com.ai.cloud.skywalking.plugin.jdbc.define.AbstractDatabasePluginDefine
;
public
class
H2DatabasePluginDefine
extends
AbstractDatabasePluginDefine
{
public
class
H2PluginDefine
extends
AbstractDatabasePluginDefine
{
@Override
protected
String
enhanceClassName
()
{
return
"org.h2.Driver"
;
...
...
skywalking-collector/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/JDBCBuriedPointType.java
→
skywalking-collector/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/
define/
JDBCBuriedPointType.java
浏览文件 @
9a741317
package
com.ai.cloud.skywalking.plugin.jdbc
;
package
com.ai.cloud.skywalking.plugin.jdbc
.define
;
import
com.ai.cloud.skywalking.api.IBuriedPointType
;
import
com.ai.cloud.skywalking.protocol.common.CallType
;
...
...
skywalking-collector/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/define/
DatabasePlugin
Interceptor.java
→
skywalking-collector/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/define/
JDBCDriver
Interceptor.java
浏览文件 @
9a741317
...
...
@@ -10,7 +10,7 @@ import com.ai.cloud.skywalking.plugin.jdbc.SWConnection;
import
java.sql.Connection
;
import
java.util.Properties
;
public
class
DatabasePlugin
Interceptor
implements
InstanceMethodsAroundInterceptor
{
public
class
JDBCDriver
Interceptor
implements
InstanceMethodsAroundInterceptor
{
@Override
public
void
onConstruct
(
EnhancedClassInstanceContext
context
,
ConstructorInvokeContext
interceptorContext
)
{
}
...
...
@@ -18,7 +18,7 @@ public class DatabasePluginInterceptor implements InstanceMethodsAroundIntercept
@Override
public
void
beforeMethod
(
EnhancedClassInstanceContext
context
,
InstanceMethodInvokeContext
interceptorContext
,
MethodInterceptResult
result
)
{
System
.
out
.
println
(
"Data/////"
);
}
@Override
...
...
@@ -30,7 +30,8 @@ public class DatabasePluginInterceptor implements InstanceMethodsAroundIntercept
@Override
public
void
handleMethodException
(
Throwable
t
,
EnhancedClassInstanceContext
context
,
InstanceMethodInvokeContext
interceptorContext
,
Object
ret
)
{
InstanceMethodInvokeContext
interceptorContext
)
{
}
}
skywalking-collector/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/define/MysqlPluginDefine.java
0 → 100644
浏览文件 @
9a741317
package
com.ai.cloud.skywalking.plugin.jdbc.define
;
/**
* Created by xin on 16/8/4.
*/
public
class
MysqlPluginDefine
extends
AbstractDatabasePluginDefine
{
@Override
protected
String
enhanceClassName
()
{
return
"com.mysql.jdbc.Driver"
;
}
}
skywalking-collector/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/define/OraclePluginDefine.java
0 → 100644
浏览文件 @
9a741317
package
com.ai.cloud.skywalking.plugin.jdbc.define
;
/**
* Created by xin on 16/8/4.
*/
public
class
OraclePluginDefine
extends
AbstractDatabasePluginDefine
{
@Override
protected
String
enhanceClassName
()
{
return
"oracle.jdbc.OracleDriver"
;
}
}
skywalking-collector/skywalking-sdk-plugin/jdbc-plugin/src/main/resources/driver-mapping-url.def
已删除
100644 → 0
浏览文件 @
306652bc
jdbc:mysql=com.mysql.jdbc.Driver
jdbc:oracle=oracle.jdbc.driver.OracleDriver
jdbc:sybase=com.sybase.jdbc2.jdbc.SybDriver
jdbc:microsoft:sqlserver=com.microsoft.jdbc.sqlserver.SQLServerDriver
jdbc:sqlserver=com.microsoft.sqlserver.jdbc.SQLServerDriver
jdbc:jtds:sqlserver=net.sourceforge.jtds.jdbc.Driver
jdbc:db2=com.ibm.db2.jcc.DB2Driver
jdbc:informix-sqli=com.informix.jdbc.IfxDriver
jdbc:h2=org.h2.Driver
\ No newline at end of file
skywalking-collector/skywalking-sdk-plugin/jdbc-plugin/src/main/resources/skywalking-plugin.def
浏览文件 @
9a741317
com.ai.cloud.skywalking.plugin.jdbc.plugin.H2DatabasePluginDefine
com.ai.cloud.skywalking.plugin.jdbc.define.H2DatabasePluginDefine
com.ai.cloud.skywalking.plugin.jdbc.define.MysqlPluginDefine
com.ai.cloud.skywalking.plugin.jdbc.define.OraclePluginDefine
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录