2016-12-27 4 views
0

Я использую Errai Framework на встроенной установке Jetty и запускаю среду Weld-SE.Как получить ссылку на область запроса встроенного Jetty

В инфраструктуре Errai используется функция PicketLink для обеспечения безопасности, которая, в свою очередь, позволяет использовать некоторые ключевые компоненты в @RequestScoped. В результате я сталкиваюсь с «Отсутствием активных контекстов для ошибок области» при обращении к API безопасности.

Мои вопросы: как я могу воспользоваться API-интерфейсом Jetty и/или Errai, чтобы вручную инициализировать RequestScope в правой нити для моей среды?

ответ

0

Для тех, кто наткнуться на это можно запустить @RequestScope внутри фильтра:

public class WeldRequestScopeFilter implements Filter { 

    private static final Logger logger = LoggerFactory.getLogger(
      WeldRequestScopeFilter.class.getSimpleName()); 

    @Override 
    public void destroy() { 
     logger.trace("Filter destroyed"); 
    } 

    @Override 
    public void doFilter(ServletRequest request, ServletResponse response, 
         FilterChain chain) throws IOException, ServletException { 

     final String url = ((HttpServletRequest) request).getRequestURL() 
       .toString(); 
     final Map<String, Object> requestDataStore = new HashMap<>(10); 

     final WeldContainer WELD = WeldContainer 
       .instance(Application.WELD_CONTAINER_ID); 
     final BoundRequestContext requestContext = WELD 
       .select(BoundRequestContext.class).get(); 

     logger.info("Activating @RequestScoped for request on {}", url); 
     requestContext.associate(requestDataStore); 
     requestContext.activate(); 

     chain.doFilter(request, response); 

     logger.info("Deactivating @RequestScoped for request on {}", url); 
     requestContext.invalidate(); 
     requestContext.deactivate(); 
     requestContext.dissociate(requestDataStore); 

    } 

    @Override 
    public void init(FilterConfig filterConfig) throws ServletException { 
     logger.trace("Filter initialized"); 
    } 

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