WEB开发网
开发学院软件开发Java Roland Barcia 的<提示>: 检验 EJB 3.0 简化 API ... 阅读

Roland Barcia 的<提示>: 检验 EJB 3.0 简化 API 规范

 2009-10-23 00:00:00 来源:WEB开发网   
核心提示: publicclassStockRequestAudit{@AroundInvokepublicObjectauditStockOperation(InvocationContextinv)throwsException{try{Objectresult=inv.proceed();Audito

public class StockRequestAudit { 
 @AroundInvoke 
 public Object auditStockOperation(InvocationContext inv) throws 
 Exception { 
 try { 
  Object result = inv.proceed(); 
  Auditor.audit(inv.getMethod().getName(), inv.getParameters[0]); 
  return result; 
 } catch (Exception ex) { 
  Auditor.auditFailure(ex); 
  throw ex; 
 } 
 } 
}

以上的拦截器截取了对目标 EJB 方法的调用,然后就调用 InvocationContext 上的 proceed() 方法。这样将使得该调用可以通向被调用的实际 EJB 方法。在返回目标 EJB 方法后,它将使用 InvocationTarget 里的元数据来获取被调用的 EJB 组件的方法名称和参数。那么该拦截器就可以应用到 Bean 类:

@Stateless @Interceptors({StockRequestAudit}) 
public class StockBean implements Stock 
 public double getQuote(String symbol) 
 { 
 return 100.33; 
 } 
}

除此之外,您可以选择开发那些在 Bean 类内部实现的拦截器方法,同时也可以指定多个拦截器,这种情况下它们被调用的次序由在 Bean 类中定义的次序决定。

引入依赖性

使得 EJB 开发测试操作很困难的原因是 EJB 代码依赖于数据源等因素,这种情况如同 EJB 客户端如何调用 EJB 组件一样。EJB 3.0 规范将引入依赖性作为一种组织机制来介绍,以此来减少这些困难。EJB 能够通过引入代码来定义资源引用,而不是通过使用 JNDI 查看功能。下面是一个 EJB bean 需要调用另一个 EJB 组件并且使用数据源来完成 JDBC 工作的实例:

上一页  1 2 3 4 5 6  下一页

Tags:Roland Barcia lt

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接