2016-09-29 2 views
-1

J'ai une classe de filtre pour laquelle j'utilise essayer avec des ressources dans java7. Mais j'ai besoin de l'implémenter dans java6. J'ai besoin de l'aide par écrit le code équivalent en java6 pour cela:essayez avec une ressource équivalente en 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); 
    } 
} 

Répondre

0

Regardez ici pour une bonne réponse avec la bibliothèque Lombok similar question Toutefois, si vous voulez juste solution pure java: Essayez avec des ressources uniquement a été ajoutée en Java 7 afin voici une solution Java 6 appropriée

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 
     } 
    }