For those who are interested: finally I found the reason and it is 
surprisingly magical!

Jersey server version 1.x has its own internal (and very limited) DI 
framework for instantiation resource controllers and injection some 
specific stuff. But for real use it is better to use Guice via jersey-guice 
contrib package. Both DI frameworks coexists on very magical base -- 
controllers may use Guicey @Inject injection and also Jersey @Context 
injection. If any controller has constructor with @Inject annotation, then 
Guice instantiate it, in other case Jersey DI does it. Those created by 
Jersey DI could not be intercepted by Guice, exactly how it is specified in 
Guice documentation.

Naturally, I have both types of controllers ;-) 

Maybe it helps someone.

Again I have to repeat: it would be nice to see some warnings in 
console when Guice cannot instrument interceptors and should be because 
matchers in bindInterceptor(...) say yes.


On Friday, October 19, 2012 6:02:31 PM UTC+2, Martin Schayna wrote:
>
> Mea culpa! 
>
> Actually, I cannot confirm my report, I refactored code many times... and 
> now interception methods with annotated arguments works well. Sorry.
>
> But in cases specified in 
> documentation<http://code.google.com/p/google-guice/wiki/AOP#Limitations> 
> would 
> be nice to see some warnings from Guice in console...
>
> Thanks, and sorry again.
>
>
> On Friday, October 19, 2012 4:04:25 PM UTC+2, Martin Schayna wrote:
>>
>> Hi,
>>
>> I have app based on Jersey REST server and now I'm trying to use 
>> guice-persist. I could not use guice-persist as is, but I borrow some 
>> thoughts, esp. transaction control via @Transactional annotation and method 
>> interceptor. But I found some glitches, which are guice specific.
>>
>> This method is OK and method interceptor is invoked:
>>
>> @Transactional
>> @Path("/ok")
>> *public* String ok() { ... }
>>
>>
>> but for this one interceptor is not invoked:
>>
>> @Transactional
>> @Path("/fail/{id}")
>> *public* String fail(@PathParam("id") String id) { ... }
>>
>>
>> So annotatated arguments prevents method intercepting. When I annotate 
>> arguments in interface and than implement this interface (which is 
>> thankfully supported in Jersey), it works. I think that this limitation is 
>> not specified in docu 
>> http://code.google.com/p/google-guice/wiki/AOP#Limitations
>>
>> Can I see warnings or so for methods which Guice should intercept (i.e. 
>> matches binding matchers) and could not due limitations? It seems like 
>> lotery to me...
>>
>> Thank you!
>>
>>

-- 
You received this message because you are subscribed to the Google Groups 
"google-guice" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-guice/-/PvhO5V_XnBwJ.
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.

Reply via email to