通过将方法调用转储到日志并模拟java中的用法来模拟客户端活动

时间:2010-04-23 15:36:15

标签: java reflection

我想在java应用程序中模拟用户行为,我想将方法​​调用和参数写入我将读取的日志文件并与之进行相同的调用。

我想使用反射(java.lang.reflect.Proxy)将文件写入日志,然后读取日志并进行调用。

是否有工具或方法?

1.在日志文件中写出对这样的方法的调用,例如:    com.example.Order.doStuff(String a,int b)

2.在日志文件中写出返回类型的内容,如果它存在,则为:    com.example.ReturnType [private fildname = contents]

3.阅读此信息并使用反射进行上述调用?

感谢。

1 个答案:

答案 0 :(得分:1)

查找AOP(Aspect Oriented Programming) 这将允许您在方法周围声明拦截器,然后您可以简单地使用拦截器写入日志文件。

以下是通过反思执行代码的示例。

import java.lang.reflect.Method;

public class RunMthdRef {
  public int add(int a, int b) {
    return a+b;
  }

  public int sub(int a, int b) {
    return a-b;
  }

  public int mul(int a, int b) {
    return a*b;
  }

  public int div(int a, int b) {
    return a/b;
  }

  public static void main(String[] args) {
    try {
      Integer[] input={new Integer(2),new Integer(6)};
      Class cl=Class.forName("RunMthdRef");
      Class[] par=new Class[2];
      par[0]=Integer.TYPE;
      par[1]=Integer.TYPE;
      Method mthd=cl.getMethod("add",par);
      Integer output=(Integer)mthd.invoke(new RunMthdRef(),input);
      System.out.println(output.intValue());
    } catch (Exception e) {
      e.printStackTrace();
    } 
  }
}