RequestHandler을 만들고 실제로 HandlersFactory을 재정 의하여 요청 처리기가 포함 된 목록을 반환하면 부분적으로 지원되는 방법입니다. 이에 대한 구성은 here입니다. 이 요청 처리기는 호출 된 마지막 요청 처리기 인 InvokeMethodHandler 바로 앞에 요청 처리 체인에 삽입되며 이는 실제로 자원 메서드를 호출하는 요청 처리기입니다.
다음과 같이 (실제로 JAX/RS 자원을 호출)을 InvokeMethodHandler에 대한 소스 코드를 읽기를 바탕으로, 당신은 매개 변수, 인스턴스와 방법 매개 변수를 얻을 수 있습니다 :이 다소 해키
// Get Method Validator from hibernate
MethodValidator validator = Validation.byProvider(HibernateValidator.class).configure()
.buildValidatorFactory().getValidator().unwrap(
MethodValidator.class);
// Extract the method parameters, object instance and method metadata from the JAX/RS internals.
Method javaMethod = null;
Object instance = null;
Object[] parameters = null;
SearchResult searchResult = context.getAttribute(SearchResult.class);
javaMethod = searchResult.getMethod().getMetadata()
.getReflectionMethod();
parameters = searchResult.getInvocationParameters();
instance = searchResult.getResource().getInstance(context);
// Use all this to perform validation...
Set<MethodConstraintViolation<Object>> violations = validator
.validateAllParameters(instance, javaMethod, parameters);
if (!violations.isEmpty()) {
// do something with the violations here
}
등 그것은 (필자가 말할 수있는 한 문서화되지 않은) 윙크의 구현 세부 사항에 의존하여 인스턴스, 매개 변수 및 메타 데이터를 얻습니다 (이 정보를 얻으려는 대중적인 방법을 제공하면 좋을 것입니다). 그러나 프록시에서 발생하는 리플렉션으로부터 여러 오버 헤드를 추정하지 않기 때문에 프록시를 사용하는 것이 다소 바람직합니다.