As
vezes precisamos do RealPath da nossa aplicação para lermos e/ou escrevermos
arquivos através do Java, e em aplicações JavaEE uma boa forma de fazermos isso
é através de um ServletContextListener, uma vez que este listener escuta quando
sua aplicação inicializa ou finaliza no container web ou servidor de aplicação.
Usando
o ServletContextListener ao invés do FacesContext para pegar o RealPath não
ficamos presos ao JSF por exemplo, ou outra tecnologia, e podemos usar o RealPath
em processos e situações diversas.
Geralmente
tenho uma classe em um pacore br.com.meudominio.utils chamada Constants onde
guardo algumas constantes e variáveis estáticas com algumas configurações do
sistema (embora prefira usar um cadastro de Parâmetros Gerais do Sistema para a
maioria das configurações), e ao pegar o RealPath é nessa classe que seto essa
configuração. Veja o código do listener abaixo:
import javax.servlet.ServletContextEvent;
import
javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebFilter;
import br.com.meudominio.Constants;
@WebListener
public class RealPath implements ServletContextListener{
@Override
public void contextDestroyed( ServletContextEvent sce ) {
}
@Override
public void contextInitialized( ServletContextEvent sce ) {
Constants.REAL_PATH = sce.getServletContext().getRealPath( "/" );
}
}
Na
classe Constants tenho algo como:
public final class Constants
{
...
public static String REAL_PATH = "";
...
}
Pronto,
em qualquer lugar do sistema basta usar Constants.REAL_PATH
para pegar o RealPath da minha aplicação.
Nenhum comentário:
Postar um comentário