使用EJB默认拦截器来匹配参数

时间:2011-02-09 08:45:30

标签: java ejb-3.0 interceptor

我想创建一个EJB默认拦截器,它对包含一组特定参数的任何业务方法起作用,但不需要完全匹配。有参数集匹配的经典方法,即:

<assembly-descriptor>.
<!-- Method interceptor will apply to sendBookingCancellationMessage for EmailSystemBean -->
    <interceptor-binding>
        <ejb-name>MyBean</ejb-name>
        <interceptor-class>SomeInterceptor</interceptor-class>
        <method>
            <method-name>overLoadedMethod</method-name>
            <method-params>
                <method-param>int</method-param>
                <method-param>java.lang.String[][]</method-param>
            </method-params>
        </method>
    </interceptor-binding>
</assembly-descriptor>

但是我想要匹配任何采用int和String [] []以及其他任何方法的方法,而不是那两个方法。有人知道是否可以这样做吗?

2 个答案:

答案 0 :(得分:0)

在Glassfish v3上,使用通配符值'*'作为方法名称似乎适用于单个bean级别:

<interceptor-binding>
   <ejb-name>MyBean</ejb-name>
   <interceptor-class>SomeInterceptor</interceptor-class>
   <method>
      <method-name>*</method-name>
      <method-params>
         <method-param>int</method-param>
         <method-param>java.lang.String[][]</method-param>
      </method-params>
   </method>
</interceptor-binding>

但是,就我所见,拦截器规范中没有调用此行为,因此可能不应该依赖它。

答案 1 :(得分:0)

无法以标准定义的方式完成。

但是,您可以简单地拦截每个呼叫并自己检查参数类型。