Servlet acessando recursos em WEB-INF

Olá. Sei que este é um tema bastante discutido. Inclusive pesquisei no GUJ e fiz vários testes… mas não consigo fazer uma servlet ler um arquivo com conteúdo html e mandar as linhas para out.println… Onde estou errando? por favor ajudem.
Porque sempre dá NullPointerException???

Veja os testes que já fiz:

        ...
        try {
            String fileName="/WEB-INF/BTTNLOGI.HTM";
            log("reading resource: "+ fileName);

            //URI uri  = getClass().getResource(fileName).toURI();
            //FileInputStream fis = new FileInputStream(new File(uri));
            //BufferedReader br = new BufferedReader(new InputStreamReader(fis));

            // InputStream is = getClass().getClassLoader().getResourceAsStream(fileName);
            // BufferedReader br = new BufferedReader(new InputStreamReader(is));

            //URL url = getServletContext().getResource(fileName);
            //BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream()));

            //InputStream is = getServletContext().getResourceAsStream(fileName);
            //BufferedReader br = new BufferedReader(new InputStreamReader(is));

            //FileInputStream fis = new FileInputStream(Thread.currentThread().getContextClassLoader().getResource(fileName).getPath());
            //BufferedReader br = new BufferedReader(new InputStreamReader(fis));

            FileInputStream fis = new FileInputStream(getServletContext().getResource(fileName).getFile());
            BufferedReader br = new BufferedReader(new InputStreamReader(fis));

            String s;
	    while ((s = br.readLine()) != null) {
                out.println(s);
	    }
	    br.close();
           ...

Log somente “getServletContext().getResource(fileName).getFile()”, pois possivelmente o arquivo não está sendo encontrado.

[quote=betounisul]Log somente “getServletContext().getResource(fileName).getFile()”, pois possivelmente o arquivo não está sendo encontrado.

[/quote]
Obrigado. Graças a sua resposta identifiquei o problema
Coloquei a linha com log… e deu nullPointer novamente… aí coloquei um getRealPath para ver para onde estava apontando e … descobri que o nome do arquivo estava errado :oops:

            log("getFile:" + getServletContext().getResource(fileName).getFile());
            log("getRealPath:" + getServletContext().getRealPath(fileName));

Acertei o nome no programa e testei novamente.

Das alternativas utilizadas estas duas funcionaram… Qual é recomendada? Tem diferença entre elas?

            // Funciona
            //URL url = getServletContext().getResource(fileName);
            //BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream()));

            // Funciona
            InputStream is = getServletContext().getResourceAsStream(fileName);
            BufferedReader br = new BufferedReader(new InputStreamReader(is));

Aproveitando o tópico para uma pergunta relacionada.
A página html consegue fazer referência a recursos que estão no WEB-INF???
Exemplo:

<style>
#bgHeader {width: 100%; height: 44px;position: absolute; left: 0px; top: 0px;background-image: url(/WEB-INF/imagem/bgHeader.gif);}
#bgFoot   {width: 100%; height: 35px;padding: 5px 5px 5px 5px;background-image: url(/WEB-INF/BTT/v250/imagem/bgFoot.gif);background-repeat: repeat-x;}
#pagina {	font-family: Arial, Helvetica, sans-serif;	text-decoration: none;	font-style: normal;	font-weight: normal;	margin: 0px auto 0px 0px;    width: 100%; 	/*height: 120px;*/	position: absolute; 	left: 0px; top: 44px; 	background: url(/WEB-INF/imagem/fundo.gif) repeat-x;}
</style>
<link href="/WEB-INF/css/style.css" rel="stylesheet" />
<link rel="shortcut icon" href="/WEB-INF/imagem/favicon.ico"  type="image/x-icon" />
....
<div align="right"><img src="/WEB-INF/imagem/logo_tag.jpg" alt="Logo" /></div>   
<div id="bgFoot">  <table>  <tr>    <td><img src="/WEB-INF/imagem/logo_25.jpg" alt="Logo" /></td>        <td><h5>Companyt ©</h5></td>  </tr>  </table>  </div>
</div></body></html>