WEB开发网
开发学院软件开发Java 使用 CBE 和 JAXB 集成实现对 WebSphere Applicat... 阅读

使用 CBE 和 JAXB 集成实现对 WebSphere Application Server 上应用程序的业务数据监控

 2009-10-28 00:00:00 来源:WEB开发网   
核心提示: 为消息驱动 Bean 的 onMessage/onNotification 方法增加 JAXB Annotation 修饰符在 EJB3 应用程序中,元数据通过消息驱动 Bean 中的 onMessage/onNotication 方法进行处理,使用 CBE 和 JAXB 集成实现对 WebSp

为消息驱动 Bean 的 onMessage/onNotification 方法增加 JAXB Annotation 修饰符

在 EJB3 应用程序中,元数据通过消息驱动 Bean 中的 onMessage/onNotication 方法进行处理,然后发送给会话 Bean,因此,为了对元数据进行截获,我们利用 EJB 3 提供的 @Interceptors 修饰符对 onMessage、onNotification 进行定义,其中的属性值指定的为拦截器类,在该类中将实现对企业元数据的分析,同时进行构造 CBE 以及发送 CBE 的操作。拦截器类中的所有操作和 onMessage/onNotification 是并行的,不会更改元数据。


清单 2. onMessage 拦截器修饰
 @Interceptors( { MetadataInterceptor.class }) 
 public onMessage(arg0, arg1) 
 { 
 try { 
… 
 } catch (Exception e) { 
 throw new javax.ejb.EJBException(e); 
 } 
 }

拦截器定义

如上所述,我们已经为 onMessage、onNotification 方法添加拦截器定义后,接着我们就需要实现相应的拦截器 MetadataInterceptor。


清单 3. 拦截器 MetadataInterceptor
 public class MetadataInterceptor { 
 
 @AroundInvoke 
 public Object monitorEvents(javax.interceptor.InvocationContext invokeCtx) 
 throws Exception { 
 constructCBE(invokeCtx); 
  
 } 
 return invokeCtx.proceed(); 
 }

@AroundInvoke 修饰符指定了要用作拦截器的方法 monitorEvents(invokeCtx),拦截器方法与被拦截的业务方法执行在同一个 java 调用堆栈、同一个事务和上下文中,这样就保证了整个事务的全局完整性。另外,在拦截器中,我们调用了 invokeCtx.proceed() 方法,这个方法会保证调用所有的拦截器的 @AroundInvoke 方法,直到后面的拦截器全部执行结束,EJB 容器才会执行被拦截的业务方法,本文中只使用了一个拦截器,所以执行完后就直接返回。值得注意的是 invokeCtx.proceed()方法必须在拦截器代码中被调用,否则被拦截的业务方法就不会被执行到,因此为了保证不影响原有的业务逻辑,我们在拦截器中必须使用此方法。

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:使用 CBE JAXB

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