4
有沒有辦法獲得該方法的java.lang.reflect.Method
(用@Path
註解),該方法將被調用給定的HttpServletRequest
?如何獲得給定的JAX-RS請求的目標方法?
這裏是我的用例:我在Java EE Filter
中,想知道稍後將調用的方法是否使用其他特定的註釋進行註釋。
(我使用的RESTEasy 3.0.7)
有沒有辦法獲得該方法的java.lang.reflect.Method
(用@Path
註解),該方法將被調用給定的HttpServletRequest
?如何獲得給定的JAX-RS請求的目標方法?
這裏是我的用例:我在Java EE Filter
中,想知道稍後將調用的方法是否使用其他特定的註釋進行註釋。
(我使用的RESTEasy 3.0.7)
這很容易,如果你可以使用一個ContainerRequestFilter來代替普通的Servlet過濾器。
@Provider
public class SomeFilter implements ContainerRequestFilter {
@Context
private ResourceInfo resourceInfo;
@Override
public void filter(ContainerRequestContext requestContext) throws IOException {
Method method = resourceInfo.getResourceMethod();
}
}
看起來不錯。但問題是,我在一個Servlet過濾器,並且必須是因爲該Servlet過濾器的目標是創建一個'Principal'傳遞給'FilterChain'覆蓋'HttpServletRequest.getUserPrincipal()'... –
你也可以通過ContainerRequestFilter中的requestContext.setSecurityContext()設置當前請求的SecurityContext。 – lefloh
謝謝你的建議。但是我必須在另一個使用'HttpServletRequest.getUserPrincipal()'的函數之前插入我的Filter,以便知道實際的認證用戶......最好的方法是可以給我一個'ResourceInfo'提供一個'HttpServletRequest'。 –