Achei uma solução para carregar fotos armazenadas no servidor. Espero que ajudem vocês

Bom dia amigos do GUJ.

Recentemente estava com um problema para exibir imagens que estavam armazenadas no servidor mas que estavam fora do contexto da aplicação WEB

Mas detalhes sobre o problema que estava passando acesse este tópico
http://www.guj.com.br/posts/list/88504.java

Quero compartilhar com vocês a solução que encontrei, acredito que muitos procuram essa solução.

Encontrei neste site a solução: http://balusc.blogspot.com/2007/04/imageservlet.html

No meu sistema existe uma tabela chamada PRODUTO onde estão armazenadas as características do produto. como nome, gramatura, tamanho preço e o caminho das fotos do produtos que serão usadas pelo sistema para carregas as fotos. Em uma outra tabela chamada ESTOQUE são cadastrada os a quantidade de estoque do produto pois cada produto pode ter diversas cores. e o a referência dessas cores e armazena da seguinte forma:
COR: 1012 - C, 5017 - C etc…

As imagens são gravadas com os nomes da seguinte forma 1012C.jpg, 5017.jpg
Na minha classe Estoque possui um método chamado getCaminhoFotoProduto()
que monta o caminho da foto do produto. Eu tinha que exibir a foto retornando pelo caminho retornado pelo método. Ao retornar os produtos consultados exibo os produtos em dataTable e a foto no componente graphicImage.

Mas detalhes sobre o problema que estava passando acesse este tópico
http://www.guj.com.br/posts/list/88504.java

Usando a dica do site http://balusc.blogspot.com/2007/04/imageservlet.html

Defini minha coluna que exibe a mensagem da seguinte forma:

<h:column rendered="true" id ="imgProduto">                                  
   	<f:facet name="header" >  
            	<h:outputText style="font-weight: bold;" value=""/>  
             </f:facet>                                                                                                                                                                                                                                                                     
                            
             <h:graphicImage height="80" width="80"                                               
                                         value="image?file=#{item.caminhoFotoProduto}"                                                                                                       
                                         alt="Foto não exibida"  
                                         id="imgProduto1" />                                     
 </h:column>                                                                                                                                                                                                         

Meu servlet

import java.io.*;
import java.net.*;
import java.io.File;
import java.io.IOException;
import javax.imageio.*;
import javax.servlet.*;
import javax.servlet.http.*;

/**
 *
 * Este Servlet carrega um aimagem armazenada no hd
 * @author PAULO
 */
public class LoadImageHDServlet extends HttpServlet {
   
       
    //Defino aqui o diretorio base das fotos 
    String imageFilePath = "C:\\Fotos";         

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)  
        throws ServletException, IOException {          
     
         // Get file name from reques
         //Capturando o caminho do arquivo atraves do request
         String imageFileName = request.getParameter("file");
    
         /*Como meu método getCaminhoFotoProduto retorna o caminho completo
          * uso p método substring para copiar somente o diretório depois de
          * C:\\Fotos ou seja se o caminho retornando foi C:\\Fotos\\PV\\1012C.jpg
          * o método substring so vai copiar \\PV\\1012C.jpg
          */
         imageFileName = imageFileName.substring(10);         
         
         if (imageFileName != null) {         
            imageFileName = imageFileName.replaceAll("\\.+(\\\\|/)", "");        
            
            // Decode the file name and prepare file object.
            imageFileName = URLDecoder.decode(imageFileName, "UTF-16");        
         
            // Get content type by filename.
            String contentType = URLConnection.guessContentTypeFromName(imageFileName);
        

            File file = new File(imageFilePath, imageFileName);
        
            // Preparando os streams
            BufferedInputStream input = null;
            BufferedOutputStream output = null;

            try {
                // Abrindo a imagem
                input = new BufferedInputStream(new FileInputStream(file));
                int contentLength = input.available();

                // Init servlet response.
                response.reset();
                response.setContentLength(contentLength);
                response.setContentType(contentType);
                response.setHeader(
                    "Content-disposition", "inline; filename=\"" + imageFileName + "\"");
                output = new BufferedOutputStream(response.getOutputStream());

                // Write file contents to response.
                while (contentLength-- > 0) {
                    output.write(input.read());
                }   
                //Finalizando
                output.flush();
            } catch (IOException e) {            
                    e.printStackTrace();
            } finally {            
                //Finalizando os streams
                if (input != null) {
                    try {
                        input.close();
                    } catch (IOException e) {                    
                        e.printStackTrace();
                    }
                }
                if (output != null) {
                    try {
                        output.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }     
         } 
    }              
    
    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /** 
    * Handles the HTTP <code>GET</code> method.
    * @param request servlet request
    * @param response servlet response
    */
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    } 

    /** 
    * Handles the HTTP <code>POST</code> method.
    * @param request servlet request
    * @param response servlet response
    */
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }

    /** 
    * Returns a short description of the servlet.
    */
    public String getServletInfo() {
        return "Short description";
    }
    // </editor-fold>
}

Mapeamento no arquivo WEB.xml

    <servlet-mapping>
        <servlet-name>LoadImageHDServlet</servlet-name>
        <url-pattern>/image/*</url-pattern>
    </servlet-mapping>

Espero ter ajudo vocês