Mic*_*her 6 java jboss dependency-injection java-ee interceptor
我有一个带模块的EAR:
在foo-api中有:
@Local
FooService // (interface of a local stateless session bean)
Run Code Online (Sandbox Code Playgroud)
在foo-impl中有:
@Stateless
FooServiceImpl implements FooService //(implementation of the foo service)
Run Code Online (Sandbox Code Playgroud)
在interceptor.jar我想要
public class BazInterceptor {
@EJB
private FooService foo;
@AroundInvoke
public Object intercept( final InvocationContext i) throws Exception {
// do someting with foo service
return i.proceed();
}
Run Code Online (Sandbox Code Playgroud)
问题是:
Java EE 5兼容的应用程序服务器(例如JBoss 5)是否会注入拦截器?如果不是,访问会话bean的好策略是什么?
考虑:
是的,注入应该在拦截器中进行,例如在Java EE 5平台简介文章中提到的(粗体是我的):
通过依赖注入更容易访问资源
依赖注入是一种模式,其中对象的依赖关系由该对象外部的实体自动提供.该对象不需要显式请求这些资源,例如,通过在命名服务中查找它们.在Java EE 5平台中,依赖注入可以应用于组件所需的所有资源,从而有效地隐藏了应用程序代码中资源的创建和查找.可以在整个Java EE 5技术中应用依赖注入 - 在EJB软件容器,Web容器和客户端中.
要请求注入资源,组件使用
@Resource注释,或者在某些专用资源的情况下,使用注释@EJB和@WebServiceRef注释.以下是可以注入的一些资源:
SessionContext宾语DataSources宾语UserTransactionEntityManager接口TimerService接口- 其他企业bean
- 网页服务
- 消息队列和主题
- 资源适配器的连接工厂
- 环境条目(例如,字符串,整数等)
任何组件类都可以请求资源注入,即生命周期由容器管理的任何类.在EJB软件容器中,支持注入的组件包括以下内容:
- EJB技术组件
- 拦截器
- 用于XML Web服务的Java API(JAX-WS)和用于基于XML的RPC的Java API(JAX-RPC)的消息处理程序
在Web容器中,支持注入的组件如下:
- Servlet,servlet过滤器,事件监听器
- 标记处理程序,标记库事件侦听器
- 管理豆类
在客户端容器中,主 类和
login回调处理程序组件支持注入.
另请参阅JBoss EJB 3.0教程的EJB Interceptors部分:
就像bean类一样,拦截器可以成为依赖注入的目标.它的工作原理的格式是相同的,注入与拦截器绑定的bean在同一个ENC上工作.
...
请记住,拦截器遵循与它们绑定的bean相同的生命周期.拦截器是在创建bean实例的同时创建的,并且在调用第一个业务方法之前会发生依赖注入.
| 归档时间: |
|
| 查看次数: |
6111 次 |
| 最近记录: |