2016-09-29 7 views
-1

У меня есть класс фильтра, для которого я использую try с ресурсами в java7. Но мне нужно реализовать это в java6. Мне нужна помощь в написании эквивалентного кода в java6 для этого:попробуйте с эквивалентом ресурсов в java 6

public final class YourContext implements AutoCloseable { 

    private static ThreadLocal<YourContext> instance = new ThreadLocal<>(); 

    private HttpServletRequest request; 
    private HttpServletResponse response; 

    private YourContext(HttpServletRequest request, HttpServletResponse response) { 
     this.request = request; 
     this.response = response; 
    } 

    public static YourContext create(HttpServletRequest request, HttpServletResponse response) { 
     YourContext context = new YourContext(request, response); 
     instance.set(context); 
     return context; 
    } 

    public static YourContext getCurrentInstance() { 
     return instance.get(); 
    } 

    @Override  
    public void close() { 
     instance.remove(); 
    } 

    public HttpSession getSession() { 
     return request.getSession(); 
    } 

    // ... (add if necessary more methods here which return/delegate the request/response).  
} 



@Override 
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws ServletException, IOException { 
    HttpServletRequest request = (HttpServletRequest) req; 
    HttpServletResponse response = (HttpServletResponse) res; 

    try (YourContext context = YourContext.create(request, response)) { 
     chain.doFilter(request, response); 
    } 
} 

ответ

0

Посмотрите здесь для хорошего ответа с библиотекой Ломбок similar question Однако, если вы просто хотите чистое решения Java: Попробуйте с ресурсами только был добавлен в Java-так здесь находится надлежащее решение java 6

YourContext context; 
    try { 
     context = YourContext.create(request, response); 
     chain.doFilter(request, response); 
    } finally { 
     try { 
     context.close(); 
     } catch(Exception e) { 
     //Print error into log or do any error handling you wish to do 
     } 
    }