Cheng Fang wrote:
> Hi,
HI Cheng,
Good catch. Please file a bug for this. Thanks.
--ken
>
>
> For the following method:
>
> @Interceptors(ArgumentsVerifier.class)
> public void emptyArgs() {
> }
>
> The generated ejb-jar.xml after deployment has this (note no
> <method-params> element is used)
>
> <interceptor-binding>
> <ejb-name>SlessEJB</ejb-name>
> <interceptor-order>
> <interceptor-class>com.sun.s1asdev.ejb.ejb30.interceptors.session.ArgumentsVerifier</interceptor-class>
>
> </interceptor-order>
> <method>
> <method-name>emptyArgs</method-name>
> </method>
> </interceptor-binding>
>
> But this is not consistence with EJB 3 spec 12.8.2 Style 3, which says
> the above xml <interceptor-binding> applies to all overloaded methods
> with the method-name. So it will also apply the ArgumentsVerifier
> interceptor to other methods like:
>
> public void emptyArgs(int i);
> public void emptyArgs(String s);
>
> even though they are not annotated with any method-level interceptors.
>
> On the other side, at runtime, if my intention is to apply such a
> catch-all binding to all overloaded methods, it doesn't work as
> expected; it only applies to the one with no param.
>
> Maybe we need to change the no-param binding to something like this?
>
> <method>
> <method-name>foo</method-name>
> <method-params/>
> </method>
>