2014-06-10 41 views
4

有沒有辦法獲得該方法的java.lang.reflect.Method(用@Path註解),該方法將被調用給定的HttpServletRequest如何獲得給定的JAX-RS請求的目標方法?

這裏是我的用例:我在Java EE Filter中,想知道稍後將調用的方法是否使用其他特定的註釋進行註釋。

(我使用的RESTEasy 3.0.7)

回答

8

這很容易,如果你可以使用一個ContainerRequestFilter來代替普通的Servlet過濾器。

@Provider 
public class SomeFilter implements ContainerRequestFilter { 

    @Context 
    private ResourceInfo resourceInfo; 

    @Override 
    public void filter(ContainerRequestContext requestContext) throws IOException { 
     Method method = resourceInfo.getResourceMethod(); 
    } 

} 
+0

看起來不錯。但問題是,我在一個Servlet過濾器,並且必須是因爲該Servlet過濾器的目標是創建一個'Principal'傳遞給'FilterChain'覆蓋'HttpServletRequest.getUserPrincipal()'... –

+1

你也可以通過ContainerRequestFilter中的requestContext.setSecurityContext()設置當前請求的SecurityContext。 – lefloh

+0

謝謝你的建議。但是我必須在另一個使用'HttpServletRequest.getUserPrincipal()'的函數之前插入我的Filter,以便知道實際的認證用戶......最好的方法是可以給我一個'ResourceInfo'提供一個'HttpServletRequest'。 –