To use MethodInterceptors, you already have to create an *instance* of the MethodInterceptor yourself and associate it with methods that should be intercepted using Matchers. They aren't given any Guice scope at all since they aren't created by Guice. I don't see how Servlets are relevant here.
Colin On Mon, Jan 24, 2011 at 10:50 AM, TJ Rothwell <[email protected]> wrote: > IMHO, this might be a confusion/consistency thing. > > With guice-servlet, binding a servlet requires that it be bound in > singleton scope, either explicitly or by annotation. > > Note: Every servlet (or filter) is required to be a @Singleton. If you >> cannot annotate the class directly, you must bind it using >> bind(..).in(Singleton.class), separate to the filter() or servlet() rules. >> Mapping under any other scope is an error. This is to maintain consistency >> with the Servlet specification. Guice Servlet does not support the >> deprecated SingleThreadModel. >> http://code.google.com/p/google-guice/wiki/ServletModule > > > It would make sense to be consistent for the method interceptor and > require the same thing, this may reduce confusion. > > Cheers, > -- TJ > > > > On Mon, Jan 24, 2011 at 9:20 AM, Fred Faber <[email protected]> wrote: > >> Hi again, >> >> I don't know that this is a defect, other than a case of needing to know >> that an interceptor is a singleton. If its logic needs to be thread safe >> then it can define mutexes appropriately. I don't know that I'd expect it >> to behave any differently :/ >> >> -Fred >> >> >> On Mon, Jan 24, 2011 at 10:17 AM, Anthony MULLER < >> [email protected]> wrote: >> >>> Thanks very much for your reply. Do you know if this issue is tracked? >>> >>> Is it fixed in Guice 2.0? >>> >>> Regards, >>> Anthony MÜLLER >>> >>> >>> 2011/1/24 Fred Faber <[email protected]>: >>> > Your suspicions are correct: an interceptor may be invoked by several >>> > threads concurrently. For instance: >>> > class TimingInterceptor implements MethodInterceptor { >>> > private final Stopwatch stopwatch; >>> > >>> > TimingInterceptor(Stopwatch stopwatch) { >>> > this.stopwatch = stopwatch; >>> > } >>> > @Override Object invoke(MethodInvocation i) throws Throwable { >>> > stopwatch.reset(); >>> > try { >>> > return i.proceed(); >>> > } finally { >>> > System.err.println("Invocation time: " + stopwatch.get()); >>> > } >>> > } >>> > Is going to break, because the stopwatch is shared among threads. >>> > -Fred >>> > On Mon, Jan 24, 2011 at 9:46 AM, Anthony MULLER < >>> [email protected]> >>> > wrote: >>> >> >>> >> Hello, >>> >> >>> >> I'm using "method interceptor" mechanisms with Guice 1.0 and I wish to >>> >> know if it is thread-safe? (I have some strange behaviours in >>> >> multithreading environment) >>> >> >>> >> Regards, >>> >> Anthony MÜLLER >>> >> >>> >> -- >>> >> You received this message because you are subscribed to the Google >>> Groups >>> >> "google-guice" group. >>> >> To post to this group, send email to [email protected]. >>> >> To unsubscribe from this group, send email to >>> >> [email protected]<google-guice%[email protected]> >>> . >>> >> For more options, visit this group at >>> >> http://groups.google.com/group/google-guice?hl=en. >>> >> >>> > >>> > -- >>> > You received this message because you are subscribed to the Google >>> Groups >>> > "google-guice" group. >>> > To post to this group, send email to [email protected]. >>> > To unsubscribe from this group, send email to >>> > [email protected]<google-guice%[email protected]> >>> . >>> > For more options, visit this group at >>> > http://groups.google.com/group/google-guice?hl=en. >>> > >>> >>> -- >>> You received this message because you are subscribed to the Google Groups >>> "google-guice" group. >>> To post to this group, send email to [email protected]. >>> To unsubscribe from this group, send email to >>> [email protected]<google-guice%[email protected]> >>> . >>> For more options, visit this group at >>> http://groups.google.com/group/google-guice?hl=en. >>> >>> >> -- >> You received this message because you are subscribed to the Google Groups >> "google-guice" group. >> To post to this group, send email to [email protected]. >> To unsubscribe from this group, send email to >> [email protected]<google-guice%[email protected]> >> . >> For more options, visit this group at >> http://groups.google.com/group/google-guice?hl=en. >> > > -- > You received this message because you are subscribed to the Google Groups > "google-guice" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]<google-guice%[email protected]> > . > For more options, visit this group at > http://groups.google.com/group/google-guice?hl=en. > -- You received this message because you are subscribed to the Google Groups "google-guice" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/google-guice?hl=en.
