Servlet Imagem fora do contexto

Pessoal boa tarde,

Estou com um problema, pesquisei em vários lugares diferentes mas não consegui resolver meu problema.
O problema é o seguinte, eu tenho uma pagina XHTML e ao chama-la eu quero que carregue uma imagem que está em c:\Contratos.

Eu fiz o Seguinte

Arquivo WEB.xml

<servlet>
    <servlet-name>ImageServlet</servlet-name>
    <servlet-class>br.com.stefanini.sgi.servlet.ImageServlet</servlet-class>
    <load-on-startup>1</load-on-startup> 
</servlet>
<servlet-mapping>
    <servlet-name>ImageServlet</servlet-name>
    <url-pattern>/image/*</url-pattern>
</servlet-mapping>

Servlet ImageServlet

package br.com.stefanini.sgi.servlet;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.Closeable;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.URLDecoder;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * The Image servlet for serving from absolute path.
 * 
 * @author BalusC
 * @link http://balusc.blogspot.com/2007/04/imageservlet.html
 */

public class ImageServlet extends HttpServlet {

	// Constants
	// ----------------------------------------------------------------------------------

	private static final int DEFAULT_BUFFER_SIZE = 10240; // 10KB.

	// Properties
	// ---------------------------------------------------------------------------------

	private String imagePath;

	// Actions
	// ------------------------------------------------------------------------------------

	public void init() throws ServletException {

		// Define base path somehow. You can define it as init-param of the
		// servlet.
		this.imagePath = "c:/Contratos";

		// In a Windows environment with the Applicationserver running on the
		// c: volume, the above path is exactly the same as "c:\images".
		// In UNIX, it is just straightforward "/images".
		// If you have stored files in the WebContent of a WAR, for example in
		// the
		// "/WEB-INF/images" folder, then you can retrieve the absolute path by:
		// this.imagePath = getServletContext().getRealPath("/WEB-INF/images");
	}

	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		// Get requested image by path info.
		String requestedImage = request.getPathInfo();

		// Check if file name is actually supplied to the request URI.
		if (requestedImage == null) {
			// Do your thing if the image is not supplied to the request URI.
			// Throw an exception, or send 404, or show default/warning image,
			// or just ignore it.
			response.sendError(HttpServletResponse.SC_NOT_FOUND); // 404.
			return;
		}

		// Decode the file name (might contain spaces and on) and prepare file
		// object.
		File image = new File(imagePath, URLDecoder.decode(requestedImage,
				"UTF-8"));

		// Check if file actually exists in filesystem.
		if (!image.exists()) {
			// Do your thing if the file appears to be non-existing.
			// Throw an exception, or send 404, or show default/warning image,
			// or just ignore it.
			response.sendError(HttpServletResponse.SC_NOT_FOUND); // 404.
			return;
		}

		// Get content type by filename.
		String contentType = getServletContext().getMimeType(image.getName());

		// Check if file is actually an image (avoid download of other files by
		// hackers!).
		// For all content types, see:
		// http://www.w3schools.com/media/media_mimeref.asp
		if (contentType == null || !contentType.startsWith("image")) {
			// Do your thing if the file appears not being a real image.
			// Throw an exception, or send 404, or show default/warning image,
			// or just ignore it.
			response.sendError(HttpServletResponse.SC_NOT_FOUND); // 404.
			return;
		}

		// Init servlet response.
		response.reset();
		response.setBufferSize(DEFAULT_BUFFER_SIZE);
		response.setContentType(contentType);
		response.setHeader("Content-Length", String.valueOf(image.length()));
		response.setHeader("Content-Disposition",
				"inline; filename=\"" + image.getName() + "\"");

		// Prepare streams.
		BufferedInputStream input = null;
		BufferedOutputStream output = null;

		try {
			// Open streams.
			input = new BufferedInputStream(new FileInputStream(image),
					DEFAULT_BUFFER_SIZE);
			output = new BufferedOutputStream(response.getOutputStream(),
					DEFAULT_BUFFER_SIZE);

			// Write file contents to response.
			byte[] buffer = new byte[DEFAULT_BUFFER_SIZE];
			int length;
			while ((length = input.read(buffer)) > 0) {
				output.write(buffer, 0, length);
			}
		} finally {
			// Gently close streams.
			close(output);
			close(input);
		}
	}

	// Helpers (can be refactored to public utility class)
	// ----------------------------------------

	private static void close(Closeable resource) {
		if (resource != null) {
			try {
				resource.close();
			} catch (IOException e) {
				// Do your thing with the exception. Print it, log it or mail
				// it.
				e.printStackTrace();
			}
		}
	}
}

e minha página que está em “WebContent/restrito/fornecedor”

Pagina xhtml “fornecedor_consulta.xhtml”

<p:column style="text-align:center;">
						<f:facet name="header">
							#{msg.coluna_contrato}
						</f:facet>
							 <h:graphicImage value="image/pesquisar.png" />
							 <img src="image/pesquisar.png" />
					</p:column>

Eu achei essa forma em vários lugares de configuração, porém ao carregar minha página ele não exibe a imagem.
Como eu faço para que essa página chame a minha Servlet e carregue a imagem?

Obrigado pela ajuda

No comando <h:graphicImage value=“image/pesquisar.png” /> você tem que apontar para o servlet.

Como assim apontar para o Servlet, tem como colocar um exemplo??

Obrigado.

Como assim apontar para o Servlet, tem como colocar um exemplo??

Obrigado.[/quote]seria tipo /MeuProjeto/servlet.jsp?imagem=“pesquisar”

Seria algo do tipo, não sei te falar de cabeça, de onde você copiou esse código ele não mostra não?

Como assim apontar para o Servlet, tem como colocar um exemplo??

Obrigado.[/quote]seria tipo /MeuProjeto/servlet.jsp?imagem=“pesquisar”

Seria algo do tipo, não sei te falar de cabeça, de onde você copiou esse código ele não mostra não?[/quote]

Ele não mostra to apanhando feio para isso.

Mas eu entendi mais ou menos o que você quis dizer.

Quando eu acesso a minha pagina fornecedor_consulta.xhtml
Na url da minha aplicação fica o seguinte - “http://localhost:8080/SGI/restrito/principal.jsf
Fica assim para todas as paginas! Isso pode interferir??
Porque ele só entrou na minha Servlet quando eu mudei o mapeamento no Web.xml…

Obrigado.

E basta eu colocar isso no value do <h:graphicImage> ou no src do ??

Ou eu faço isso no momento em que eu chamar a minha página?