FacesContext

7 respostas
T

Fala Pessoal, tudo bem?

Estou com um probleminha aqui com esse FacesContext.

Eu tenho um projeto que ele tem que fazer uma verificação inicial de um arquivo e pra isso criei um ContextListener.

Ai é o seguinte, eu tenho um arquivo .properties que ele tem que ser verificado inicialmente, e eu não queria chumbar o caminho dele, ai eu tenho esse método que pega onde o arquivo está…

private String getRealPath( HttpSession session){
		return StringUtils.removeEnd(
				session.getServletContext()
				.getRealPath("/webauto"), "\\webauto");
	}

E ai eu tenho um outro método que eu chamo esse cara, utilizando o FacesContext.

public void conexao() throws IOException{
		
		ServletContext servletContext = (ServletContext)FacesContext.getCurrentInstance().getExternalContext().getContext();

		HttpServletRequest request = (HttpServletRequest) servletContext;

		HttpSession session = request.getSession();

ConfigDataBase config = 
			new ConfigDataBase( getRealPath(session) + "\\config\\config.properties");

.
.
.
.
.

Já tentei varias formas, essa dai foi a ultima que tentei…

Já tentei apenas FacesContext facesContext = FacesContext.getCurrentInstance();

entre outros, e todos me retornam null logo na primeira linha.

E por fim, meu método de inicialização…

public void contextInitialized(ServletContextEvent event) {
		ServletContext context = event.getServletContext();
		System.out.println("Iniciando aplicativo " + context.getServletContextName());
		
		try {
			conexao();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
	}

Gostaria de saber como posso resolver este problema de null, para poder pegar este arquivo da minha aplicação.

Muito obrigado

7 Respostas

R

qual linha está retornando null?

T

No caso, essa…

ServletContext servletContext = (ServletContext)FacesContext.getCurrentInstance().getExternalContext().getContext();

Se eu troco meu código para…

FacesContext facesContext = FacesContext.getCurrentInstance();

		HttpServletRequest request = (HttpServletRequest) facesContext.getCurrentInstance().getExternalContext().getRequest();

		HttpSession session = request.getSession();

também dá null na primeira linha

R

O problema deve ser que vc ainda não tem uma instância no FacesContext no momento que o método contextInitialized é executado.
Se vc precisa simplesmente carregar o arquivo de propriedades, então vc não precisa do FacesContext. Vc pode usar:

this.getClass().getResource("config.properties");

http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Class.html#getResource(java.lang.String)

T

Fala rissato, eu tentei fazer assim cara...

URL url = this.getClass().getResource("config.properties");
		
		ConfigDataBase config = 
			new ConfigDataBase(String.valueOf(url));

Só que ele não consegue me retornar o caminho do arquivo... continua me passando null

Esse meu método ConfigDataBase, tem que receber um File entende...

Esse é o construtor do config...

public ConfigDataBase(String path){
				
		File file = new File( path );
		
		try {
			configuration = new PropertiesConfiguration(file);
		} catch (ConfigurationException e) {
			log.error("Erro ao pegar o arquivo .properties");
		}
	}
R

esse exemplo não vai funcionar exatamente dessa forma.

Tenta dar um sysout na url que o getResource retorna pra vc entender melhor…

T

blz, vou dar uma fuçada aqui…

por enquanto, vlw cara!!!

T

Galera, o problema de pegar o arquivo consegui resolver…

Ao invés de usar todas aquelas coisa que eu estava usando, apenas utilizei o proprio realPath do ServletContext, ficou assim…

public class ContextListener implements ServletContextListener{
	
	private ServletContext context = null;

public void contextInitialized(ServletContextEvent event) {
		
		context = event.getServletContext();
		System.out.println("Iniciando aplicativo " + context.getServletContextName());
		
		ConfigDataBase config = 
			new ConfigDataBase(StringUtils.removeEnd(context.getRealPath("/webauto"), "\\webauto") + "\\config\\config.properties");

Isso deu certo, e conseguiu pegar o caminho do meu arquivo…

Muito obrigado pela ajuda de todos…

abraços

Criado 25 de fevereiro de 2009
Ultima resposta 25 de fev. de 2009
Respostas 7
Participantes 2