拦截器元素语法有四种可能的风格:
风格1:
<interceptor-binding>
<ejb-name>*</ejb-name>
<interceptor-class>INTERCEPTOR</interceptor-class>
</interceptor-binding>
用通配符“*”指定ejb-name 元素来指派缺省拦截器(这些拦截器应用到ejb-jar 包内的所有企业bean)。
风格2:
<interceptor-binding>
<ejb-name>EJBNAME</ejb-name>
<interceptor-class>INTERCEPTOR</interceptor-class>
</interceptor-binding>
这个风格用于指定与特定企业bean 类相关的拦截器(类级别拦截器)。
风格3:
<interceptor-binding>
<ejb-name>EJBNAME</ejb-name>
<interceptor-class>INTERCEPTOR</interceptor-class>
<method-name>METHOD</method-name>
</interceptor-binding>
这个风格用于为特定bean 的特定方法指定关联的方法级的拦截器。如果多个方法具有相同的名字,那么这个风格的元素指具有相同名字的所有方法。方法级的拦截器只能和bean 的业务方法相关联。注意:在方法级的拦截器不能使用通配符“*”。
风格4:
<interceptor-binding>
<ejb-name>EJBNAME</ejb-name>
<interceptor-class>INTERCEPTOR</interceptor-class>
<method-name>METHOD</method-name>
<method-params>
<method-param>PARAM-1</method-param>
<method-param>PARAM-2</method-param>
...
<method-param>PARAM-n</method-param>
</method-params>
<interceptor-binding>
这个风格用于指定与特定企业bean 的特定方法关联的方法级拦截器。这个风格用于在许多重名方法中指定其中的一个方法。PARAM-1 到PARAM-n 的值事方法入参的java 类型的全称(如果方法没有入参,那么method-params 不包含method-param 元素)。数组是通过数组元素类型来指定,元素后加上一到多个“[]”(例如,int[][])。
如果对同一个企业bean 同时使用风格3 和风格4 来定义方法级的拦截器,那么这些方法级拦截器的顺序没有明确规定。
下面是使用interceptor-binding 语法的例子。
风格1:下面的拦截器作为缺省拦截器应用到ejb-jar 中的所有组件上。他们将按照指定的顺序被调用。
<interceptor-binding>
<ejb-name>*</ejb-name>
<interceptor-class>org.acme.MyDefaultIC</interceptor-class>
<interceptor-class>org.acme.MyDefaultIC2</interceptor-class>
</interceptor-binding>
风格2:下面的例子是定义EmployeeService 企业bean 的方法级拦截器。它们会在缺省拦截器被调用后按照指定的顺序被调用。
<interceptor-binding>
<ejb-name>EmployeeService</ejb-name>
<interceptor-class>org.acme.MyIC</interceptor-class>
<interceptor-class>org.acme.MyIC2</interceptor-class>
</interceptor-binding>
风格3:下面的拦截器应用到EmployeeService 企业bean 的所有myMethod方法上。他们会在所有缺省的拦截器和类层级的拦截器被调用后按照指定的顺序被调用。
<interceptor-binding>
<ejb-name>EmployeeService</ejb-name>
<interceptor-class>org.acme.MyIC</interceptor-class>
<interceptor-class>org.acme.MyIC2</interceptor-class>
<method-name>myMethod</method-name>
</interceptor-binding>
风格4:下面的拦截器应用到EmployeeService 企业bean 的myMethod(String firstName, String lastName)方法指定拦截器。
<interceptor-binding>
<ejb-name>EmployeeService</ejb-name>
<interceptor-class>org.acme.MyIC</interceptor-class>
<method-name>myMethod</method-name>
<method-params>
<method-param>java.lang.String</method-param>
<method-param>java.lang.String</method-param>
</method-params>
</interceptor-binding>
下面的例子用更复杂的参数类型来解释风格3.方法myMethod(char s, int I,int[] iar, mypackage.MyClass mycl, mypackage.MyClass[][] myclaar)指定如下:
<interceptor-binding>
<ejb-name>EmployeeService</ejb-name>
<interceptor-class>org.acme.MyIC</interceptor-class>
<method-name>myMethod</method-name>
<method-params>
<method-param>char</method-param>
<method-param>int</method-param>
<method-param>int[]</method-param>
<method-param>mypackage.MyClass</method-param>
<method-param>mypackage.MyClass[][]</method-param>
</method-params>
</interceptor-binding>
下面的例子解释用interceptor-order 元素来指定拦截器的顺序:
<interceptor-binding>
<ejb-name>EmployeeService</ejb-name>
<interceptor-order>
<interceptor-class>org.acme.MyIC</interceptor-class>
<interceptor-class>org.acme.MyDefaultIC</interceptor-class>
<interceptor-class>org.acme.MyDefaultIC2</interceptor-class>
<interceptor-class>org.acme.MyIC2</interceptor-class>
</interceptor-order>
</interceptor-binding>
分享到:
相关推荐
- **定时服务与安全服务**:介绍了EJB3中的定时服务和安全服务功能,包括自定义安全域的配置方法。 #### 六、消息驱动Bean与实体Bean - **消息驱动Bean**:消息驱动Bean用于处理异步消息,该章节将介绍其配置和使用...
在EJB3中,通过JPA(Java Persistence API)来实现ORM。 - **关键概念**:包括实体类、实体管理器、持久化上下文等。 - **优势**:提高开发效率,减少手写SQL语句的工作量,提供强大的查询能力。 #### 五、Java持久...
- 指导如何重新创建和设置教程中使用的开发环境。 **6. EJB3 调试** - 使用调试工具来检查和修改EJB的运行时状态。 **7. 单元测试** - 编写和执行针对EJB组件的单元测试。 #### 四、会话Bean(Session Bean) **1....
- 介绍了EJB3中拦截器的功能和用途。 - 包括如何编写和使用自定义拦截器来增强会话Bean的行为。 - **依赖注入**: - 解释了依赖注入的概念及其在EJB3中的实现方式。 - 通过示例演示了如何利用依赖注入简化应用...
此外,还探讨了会话Bean的生命周期管理、JNDI名称的修改、拦截器的使用、依赖注入和定时服务等功能,这些都是EJB3.0的重要特性。 #### 消息驱动Bean(Message Driven Bean) 消息驱动Bean是EJB3.0中用于处理异步消息...
- **在Web中使用EJB3.0框架**: - 解释如何在Web应用中集成EJB3.0技术。 - 包括如何使用Session Bean和Message Driven Bean等。 - **使用Message Driven Bean**: - 继续探讨如何利用Message Driven Bean提高Web...
- **拦截器(Interceptor)**:了解如何利用拦截器来增强会话Bean的功能,如日志记录、性能监控等。 - **依赖注入(Dependency Injection)**:探讨依赖注入在EJB中的应用,特别是如何使用@EJB和@Inject注解来自动装配...
- **第三方类库**: 处理EJB项目中使用的第三方类库。 - **J2EE项目打包**: 如何打包包含多个模块的大型J2EE项目。 - **开发环境恢复**: 提供步骤指南,帮助用户恢复书中提供的示例环境。 - **EJB3调试**: 探讨如何...
当EJB应用使用了第三方类库时,这些类库需要被打包进`.jar`文件,并作为依赖项包含在最终的`.jar`或`.ear`文件中。 ##### 3.6 共用了第三方类库的J2EE项目如何打包 对于包含多个模块的J2EE项目,每个模块都可能...
本教程《JBoss EJB3.0 实例教程》由黎活明编写,适用于希望深入了解Java企业级开发中EJB3.0组件使用的开发者们。无论是初学者还是有一定经验的开发人员,都能从中获得有价值的信息。 **1.1 本教程适合人群** - Java...