Skip to content

Commit fb5579e

Browse files
Merge pull request #3 from GuanceCloud/attachv1
v2
2 parents 8d75d0d + 3317cdd commit fb5579e

File tree

5 files changed

+26
-60
lines changed

5 files changed

+26
-60
lines changed

pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,12 @@
3838
<manifest>
3939
<mainClass>name.dhruba.javaagent.MyMainClass</mainClass>
4040
</manifest>
41-
<!-- <manifestEntries>
41+
<manifestEntries>
4242
<Premain-Class>name.dhruba.javaagent.MyJavaAgent</Premain-Class>
4343
<Agent-Class>name.dhruba.javaagent.MyJavaAgent</Agent-Class>
4444
<Can-Redefine-Classes>true</Can-Redefine-Classes>
4545
<Can-Retransform-Classes>true</Can-Retransform-Classes>
46-
</manifestEntries>-->
46+
</manifestEntries>
4747
</archive>
4848
</configuration>
4949
</execution>

src/main/java/name/dhruba/javaagent/Config.java

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,15 @@ public class Config {
88
private String agentJar;
99

1010
public String getOptions() {
11-
return options;
11+
return this.options;
1212
}
1313

1414
public String getDownloadAddress() {
15-
return downloadAddress;
15+
return this.downloadAddress;
1616
}
1717

1818
public String getAgentJar() {
19-
return agentJar;
19+
return this.agentJar;
2020
}
2121

2222
private Config(String options,String downloadAddress,String agentJar){
@@ -35,17 +35,18 @@ static Config parse(String... args){
3535
currentArg =arg;
3636
}else {
3737
switch (currentArg){
38-
case "options":
38+
case "-options":
3939
option = arg;
40-
case "download":
40+
break;
41+
case "-download":
4142
downloadAddr = arg;
42-
case "agent-jar":
43+
break;
44+
case "-agent-jar":
4345
agentJar = arg;
46+
break;
4447
}
4548
}
4649
}
47-
4850
return new Config(option,downloadAddr,agentJar);
4951
}
50-
5152
}

src/main/java/name/dhruba/javaagent/JavaAgentLoader.java

Lines changed: 4 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
package name.dhruba.javaagent;
22

3-
import java.lang.management.ManagementFactory;
43
import java.util.List;
5-
import java.util.Properties;
6-
74
import com.sun.tools.attach.VirtualMachineDescriptor;
85
import org.slf4j.Logger;
96
import org.slf4j.LoggerFactory;
@@ -17,45 +14,21 @@ public class JavaAgentLoader {
1714

1815
public static void loadAgent(String agentJar ,String options) {
1916
logger.info("dynamically loading javaagent");
20-
String nameOfRunningVM = ManagementFactory.getRuntimeMXBean().getName();
21-
int p = nameOfRunningVM.indexOf('@');
22-
String pid = nameOfRunningVM.substring(0, p);
23-
System.out.println("------------------into-------------");
24-
System.out.println("------------------p-------------"+p);
25-
System.out.println("------------------pid-------------"+pid);
26-
System.out.println("------------------args-------------"+options);
27-
17+
logger.info("------------------options-------------"+options);
18+
logger.info("------------------agentJar-------------"+agentJar);
2819
try {
2920
List<VirtualMachineDescriptor> list = VirtualMachine.list();
3021
for (int i = 0; i < list.size(); i++) {
3122
VirtualMachineDescriptor virtualMachineDescriptor = list.get(i);
3223
String version = virtualMachineDescriptor.id();
33-
System.out.println(version);
34-
System.out.println(virtualMachineDescriptor.id());
35-
System.out.println(virtualMachineDescriptor.displayName());
36-
System.out.println(virtualMachineDescriptor.toString());
37-
3824
VirtualMachine attach = VirtualMachine.attach(version);
3925
if (agentJar != null && !agentJar.equals("")){
40-
attach.loadAgent(jarFilePath, options);
41-
}else {
4226
attach.loadAgent(agentJar, options);
27+
}else {
28+
attach.loadAgent(jarFilePath, options);
4329
}
44-
45-
46-
Properties properties = attach.getAgentProperties();
47-
Properties sysproperties = attach.getSystemProperties();
48-
System.out.println( properties.toString());
49-
System.out.println( sysproperties.toString());
50-
System.out.println("DdTrace attach agent to displayName is:"+virtualMachineDescriptor.displayName());
51-
5230
attach.detach();
5331
}
54-
55-
// -------------
56-
// VirtualMachine vm = VirtualMachine.attach(pid);
57-
// vm.loadAgent(jarFilePath, "Ddd.env:test,Ddd.service.name:demo001,Ddd.agent.port:9529");// 参数
58-
// vm.detach();
5932
} catch (Exception e) {
6033
throw new RuntimeException(e);
6134
}

src/main/java/name/dhruba/javaagent/MyJavaAgent.java

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,11 @@ public class MyJavaAgent {
2121
* @param inst
2222
* @throws Exception
2323
*/
24-
// public static void premain(String args, Instrumentation inst) throws Exception {
25-
// logger.info("premain method invoked with args: {} and inst: {}", args, inst);
26-
// instrumentation = inst;
27-
// instrumentation.addTransformer(new MyClassFileTransformer());
28-
// }
24+
public static void premain(String args, Instrumentation inst) throws Exception {
25+
logger.info("premain method invoked with args: {} and inst: {}", args, inst);
26+
instrumentation = inst;
27+
instrumentation.addTransformer(new ClassFileTransformer());
28+
}
2929

3030
/**
3131
* JVM hook to dynamically load javaagent at runtime.
@@ -37,14 +37,9 @@ public class MyJavaAgent {
3737
* @param inst
3838
* @throws Exception
3939
*/
40-
// public static void agentmain(String args, Instrumentation inst) throws Exception {
41-
// logger.info("agentmain method invoked with args: {} and inst: {}", args, inst);
42-
// instrumentation = inst;
43-
// instrumentation.addTransformer(new MyClassFileTransformer());
44-
// }
45-
46-
/**
47-
* Programmatic hook to dynamically load javaagent at runtime.
48-
*/
49-
50-
}
40+
public static void agentmain(String args, Instrumentation inst) throws Exception {
41+
logger.info("agentmain method invoked with args: {} and inst: {}", args, inst);
42+
instrumentation = inst;
43+
instrumentation.addTransformer(new ClassFileTransformer());
44+
}
45+
}

src/main/java/name/dhruba/javaagent/MyMainClass.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,8 @@ public class MyMainClass {
1717
public static void main(String[] args) {
1818
Config config = Config.parse(args);
1919
// todo load agent ddtrace
20-
21-
// MyJavaAgent.initialize(config.getAgentJar(),config.getOptions());
2220
JavaAgentLoader.loadAgent(config.getAgentJar(),config.getOptions());
2321
logger.info("main method invoked with args: {}", Arrays.asList(args));
24-
// logger.info("userName: {}", new MyUser().getName());
2522
}
2623

2724
}

0 commit comments

Comments
 (0)