Filters e Servlets Thread-Safe

Olá pessoal,

Estou iniciando no desenvolvimento com servlets, e fiquei com algumas dúvidas se minha implementação é segura e eficiente.
A princípio em meus testes está funcionando, mas não sei em um
ambiente com muitos usuários concorrentes se haveria algum problema.

Criei um filter p/ retornar uma conexão do Pool de conexões e
instanciar um objeto da classe Env que guardará alguns
parâmetros recebidos através da URL, os quais eu guardo
através de
request.setAttribute(“con”, con);
request.setAttribute(“env”, env);

Depois recupero a conexão e o objeto dentro do servlet
através de
Connection con = (Connection)request.getAttribute(“con”);
Env env = (Env)request.getAttribute(“env”);

public final class DBConnectionFilter implements Filter {
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        Connection con = null;
        try {
            // Retorna uma conexão do Pool de conexões
            Context initContext = new InitialContext();
            Context envContext  = (Context)initContext.lookup("java:/comp/env");
            DataSource ds = (DataSource)envContext.lookup("jdbc/mydatabase");
            con = ds.getConnection();
            // Armazena a conexão p/ ser utilizada posteriormente pelo servlet
            request.setAttribute("con", con);
            // Captura e armazena parâmetros comuns recebidos através da URL
            Env env = new Env();
            env.setUsr(request.getParameter("usr"));
            env.setPwd(request.getParameter("pwd"));
            // Armazena objeto Env p/ ser utilizado posteriormente pelo servlet
            request.setAttribute("env", env);
           	chain.doFilter(request, response);
        } catch (Exception e) {
            response.setContentType("text/plain");
            PrintWriter out = response.getWriter();
            out.println("Erro ao conectar a base de dados.");
        } finally {
            // Garante o fechamento da conexão para retorno
            // desta ao Pool de conexões
            try {
                if (con != null)
                    con.close();
            } catch (SQLException ignored) {
            }
        }
    }
	public void destroy() {
	}
	public void init(FilterConfig arg0) throws ServletException {
	}
}
public class MyServlet extends HttpServlet implements Servlet {
    protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    	try {
    		// Recupera os objetos con e env armazenados pelo DBConnectionFilter
    		Connection con = (Connection)request.getAttribute("con");
    		Env env = (Env)request.getAttribute("env");
    		// Restante do código... 
    	} catch (Exception e) {
			e.printStackTrace();
		}
    }
}

Haveria algum problema nesta implementação, no caso
de vários usuários acessando um mesmo servlet ao
mesmo tempo ?

Grato pela colaboração,

Douglas