This is the correct behavior as in the CDI spec. Only methods called by client classes are considered business methods and, thus, are intercepted.

I don't get this. What does that imply for the above snippet? That this code does not contain any business-methods? Certainly a client (whatever that is in the sense of the spec) can call both methods, can't it?

If you want to trigger more than one interceptors within one method invocation, then you can use standard ejb annotation:

@Interceptors(A.class, B.class)public Customer m1()

I'd recommend to raise the interceptor to class level, and check each method invocation. You'll find a very helpful class AnnotationUtils in SEAM-FACES, which provides an isAnnotationPresent(class clazz) method.

my idea is to raise the interceptor-binding to class level, and make the interceptor intercept each method call. in the interceptor itself you then have to check for the presence of a certain annotation, just like this: