设置 Property
有的时候,需要在命令行设置一些属性信息;当属性信息比较多的时候,命令行的内容就特别长。我们可以使用一个 Agent Jar 来设置这些属性信息。
Application
package sample;
public class Program {
public static void main(String[] args) {
String username = System.getProperty("lsieun.agent.username");
String password = System.getProperty("lsieun.agent.password");
System.out.println(username);
System.out.println(password);
}
}
Agent Jar
package lsieun.agent;
public class LoadTimeAgent {
public static void premain(String agentArgs) {
System.setProperty("lsieun.agent.username", "tomcat");
System.setProperty("lsieun.agent.password", "123456");
}
}
Run
第一次运行:
$ java -cp ./target/classes/ sample.Program
null
null
第二次运行:
$ java -cp ./target/classes/ -Dlsieun.agent.username=jerry -Dlsieun.agent.password=12345 sample.Program
jerry
12345
第三次运行:
$ java -cp ./target/classes/ -javaagent:./target/TheAgent.jar sample.Program
tomcat
123456
不打印信息
有的时候,程序当中有许多打印语句,但是我们并不想让它们输出。
Application
package sample;
import java.lang.management.ManagementFactory;
import java.util.concurrent.TimeUnit;
public class Program {
public static void main(String[] args) throws Exception {
// 第一步,打印进程 ID
String nameOfRunningVM = ManagementFactory.getRuntimeMXBean().getName();
System.out.println(nameOfRunningVM);
// 第二步,倒计时退出
int count = 600;
for (int i = 0; i < count; i++) {
String info = String.format("|%03d| %s remains %03d seconds", i, nameOfRunningVM, (count - i));
System.out.println(info);
TimeUnit.SECONDS.sleep(1);
}
}
}
Agent Jar
package lsieun.agent;
import java.io.PrintStream;
public class LoadTimeAgent {
public static void premain(String agentArgs) {
System.setOut(new PrintStream(System.out) {
@Override
public void println(String x) {
// super.println("What are you doing: " + x);
}
});
}
}
Run
第一次运行:
$ java -cp ./target/classes/ sample.Program
8472@LenovoWin7
|000| 8472@LenovoWin7 remains 600 seconds
|001| 8472@LenovoWin7 remains 599 seconds
第二次运行:(没有输出内容)
$ java -cp ./target/classes/ -javaagent:./target/TheAgent.jar sample.Program
第三次运行:(取消注释)
$ java -cp ./target/classes/ -javaagent:./target/TheAgent.jar sample.Program
What are you doing: 9072@LenovoWin7
What are you doing: |000| 9072@LenovoWin7 remains 600 seconds
What are you doing: |001| 9072@LenovoWin7 remains 599 seconds