Ist es möglich, Guice AOP zu verwenden, um eine kommentierte Methode auf einer Jersey-Ressource abzufangen?Methode Abfangen in Jersey mit Guice AOP
Ich habe eine erfolgreich konfigurierte Guice Integration mit Jersey in Bezug auf Dependency Injection ohne Probleme, aber meine konfiguriert Interceptor ist nicht abfangen meine annotierte Methode überhaupt.
web.xml
<listener>
<listener-class>my.package.GuiceConfig</listener-class>
</listener>
<filter>
<filter-name>guiceFilter</filter-name>
<filter-class>com.google.inject.servlet.GuiceFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>guiceFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
GuiceConfig Konfigurationsmodul
public class GuiceConfig extends GuiceServletContextListener {
@Override
protected Injector getInjector() {
return Guice.createInjector(new JerseyServletModule() {
@Override
protected void configureServlets() {
bindInterceptor(Matchers.any(),
Matchers.annotatedWith(RequiredAuthority.class),
new AuthorisationInterceptor());
Map<String, String> params = new HashMap<String, String>();
params.put(JSP_TEMPLATES_BASE_PATH, "/WEB-INF/jsp");
params.put(FEATURE_FILTER_FORWARD_ON_404, "true");
params.put(PROPERTY_PACKAGES, "my.service.package");
filter("/*").through(GuiceContainer.class, params);
}
});
}
}
RequiredAuthority Annotations
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface RequiredAuthority {
String value();
}
AuthorisationInterceptor Aspekt
public class AuthorisationInterceptor implements MethodInterceptor {
public Object invoke(MethodInvocation methodInvocation) throws Throwable {
// Allow invocation to process or throw an appropriate exception
}
}
TempResource JAX-RS-Ressourcenklasse
@Path("/temp")
public class TempResource {
@GET
@Produces(MediaType.APPLICATION_JSON)
@RequiredAuthority("PERMISSION")
public String getTemp() {
// Return resource normally
}
}
spät zur Party, aber es sieht aus wie ['@ BindingAnnotation'] (http://google-guice.googlecode.com/git/javadoc/com/google/inject/BindingAnnotation. html) fehlt auch in 'RequiredAuthority'. –
Danke, ja das hat auch zu der Zeit ein Problem verursacht. Es lohnt sich, hier zu notieren. – Kynth