2013-06-06 2 views
0

Я работаю над API-интерфейсом Jboss Resteasy для реализации сервисов REST на сервере Jboss. Я новичок в этой области. Может кто-то помочь мне здесь ...Как достичь через перехватчики Jboss Resteasy?

Существует метод службы отдыха с пользовательской аннотацией (VRestAuto), как показано ниже.

@POST 
@Produces("text/json") 
@Path("/qciimplinv") 
@Interceptors(VRestInterceptor.class) 
public String getInvSummary(@VRestAuto("EnterpriseId") String enterpriseId,String circuitType){ 
    .... 
    businessMethod(enterpriseId,circuitType); 
    .... 
} 

@VRestAuto аннотация сообщите нам, что значение «enterpriseId» доступно в сеансе пользователя.

Пользователь передает тип схемы только как параметр POST в инструменте Rest Client. Необходимо в идеале прочитать enterpriseid из сеанса и вызвать службу Rest с этими двумя параметрами (enterpriseid, circuitType).

Для достижения указанной выше функциональности, реализуемый перехватчиков класса (VRestInterceptor), как показано ниже:

public class VRestInterceptor implemnets PreProcessInterceptor,AcceptedByMethod { 
public boolean accept(Class declaring, Method method) { 
     for (Annotation[] annotations : method.getParameterAnnotations()) { 
      for (Annotation annotation : annotations) { 
       if(annotation.annotationType() == VRestAuto.class){ 
        VRestAuto vRestAuto = (VRestAuto) annotation; 
        return vRestAuto.value().equals("EnterpriseId"); 
       } 
      } 
     } 
     return false; 
    } 
      Override 
    public ServerResponse preProcess(HttpRequest request, ResourceMethod method) 
      throws Failure, WebApplicationException { ......} 
} 

Я был в состоянии проверить аннотацию VRestAuto в методе принимаю. Но в методе preProcess, как я могу вызвать метод REST с двумя параметрами (enterpriseid, circuitType)?

Если эти перехватчики не подходят, есть ли другие перехватчики, наиболее подходящие для этой функции?

Ваша помощь очень ценится.

ответ

1

Почему бы не забыть указать значение enterpriseId при вызове метода и вместо этого просто ввести HttpServletRequest и использовать его для захвата сеанса и значения?

Смежные вопросы