使用 AroundInvoke 来对 EJB 进行性能测试

2014-08-20 开源中国

<无详细内容>

import javax.ejb.Stateful;
import javax.interceptor.AroundInvoke;
import javax.interceptor.InvocationContext;

@Stateful
public class EmployeeBean implements EmployeeServiceLocal, EmployeeServiceRemote {

 public EmployeeBean() {
}

 public void doAction() {
System.out.println("Processing...");
}

@AroundInvoke
 public Object TimerLog(InvocationContext ctx) throws Exception {
 String beanClassName = ctx.getClass().getName();
 String businessMethodName = ctx.getMethod().getName();
 String target = beanClassName +"."+ businessMethodName;
 long startTime = System.currentTimeMillis();
 System.out.println("Invoking"+ target);
 try {
 return ctx.proceed();
 } finally {
 System.out.println("Exiting"+ target);
 long totalTime = System.currentTimeMillis() - startTime;
 System.out.println("Business method"+ businessMethodName +"in"+ beanClassName +"takes"
 + totalTime +"ms to execute");
}
}
}
import javax.ejb.Local;
import javax.ejb.Remote;


@Local
public interface EmployeeServiceLocal{
 public void doAction();
}
import javax.ejb.Remote;

@Remote
public interface EmployeeServiceRemote {
 public void doAction();
}
import javax.persistence.Entity;
import javax.persistence.EntityListeners;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.PostRemove;

@Entity

public class Employee implements java.io.Serializable {
 private int id;

 private String firstName;

 private String lastName;

@Id
@GeneratedValue
 public int getId() {
 return id;
}


@PostRemove
 public void postRemove()
{
System.out.println("@PostRemove");
}

 public void setId(int id) {
 this.id = id;
}

 public String getFirstName() {
 return firstName;
}

 public void setFirstName(String first) {
 this.firstName = first;
}

 public String getLastName() {
 return lastName;
}

 public void setLastName(String last) {
 this.lastName = last;
}
}
import javax.ejb.EJB;
import javax.naming.InitialContext;

public class Main {

 public static void main(String[] a) throws Exception {

 EmployeeServiceRemote service = null;

 // Context compEnv = (Context) new InitialContext().lookup("java:comp/env");

 // service = (HelloService)new InitialContext().lookup("java:comp/env/ejb/HelloService");
 service = (EmployeeServiceRemote) new InitialContext().lookup("EmployeeBean/remote");

service.doAction();

}

}