estou em uma situação na qual, preciso copiar arquivos de um servidor para dentro da aplicação do tomcat(webcontent), e estou fazendo isto passando o caminho completo(c:\dir1\dir2\ar1.ext), porém preciso fazer isto de forma automática pois esta aplicação mudará para de servidor 2 vezes.
precisaria que minha classe java reconhecesse todo o caminho onde esta a aplicação.
Cara, dá uma estudada na interface ServletContext, lá tem um método chamado getRealPath(). Se não me engano esse método te retorna o path completo até a raiz da tua aplicação…
Se eu estiver falando besteira, por favor, alguém se pronuncie…
Cara, uma coisa que você poderia fazer era criar um listener para ser disparado quando a sua aplicação “subir”, nesse listener você buscava o caminho como te expliquei no post anterior e instanciava essa sua classe que contém os caminhos dos diretórios. Depois, para buscar o caminho em qualquer parte do sistema, você precisaria somente do acesso a essa sua classe com os paths, sacou?
Cara, não é complexo.
Tipo, você tem uma classe chamada PathUtil, nela você tem somente atributos String que serão os paths, por exemplo path1, path2, path3…
Você teria que criar um listener para ser chamado no momento da inicialização do seu contexto, mais precisamente uma classe que implementaria ServletContextListener, e lá você usaria o método getRealPath() de ServletContext para pegar o path real até a raiz da sua aplicação. Agora você pode criar os paths até as pastas que deseja, que estão dentro da sua aplicação, e salva o caminho dentro da classe PathUtil.
Quando você precisar desses paths na execução da aplicação, basta você consultar as variáveis de dentro da classe PathUtil que o seu problema estará resolvido.
Deu pra entender como se faz? É bem simples…
Tamo caminhando,
consegui implementar o listener, e exibir o getRealPath da aplicação, mas agora não sei como disponibilizar isto para as outras classes.
Pronto, agora você precisa criar uma classe que possa guardar os paths necessários na sua aplicação.
Por exemplo, caso a sua aplicação você precise saber onde estão suas figuras, onde estão seus relatórios e onde estão os uploads que são feitos para o sistema. Você poderia criar uma classe assim:
public class PathUtil {
public final String path1;
public final String path2;
public final String path3;
public PathUtil(String path1, String path2, String path3) {
this.path1 = path1;
this.path2 = path2;
this.path3 = path3;
}
}
Agora, no local onde você consegue recuperar o path, você cria os que necessita. Por exemplo, digamos que suas pastas estão organizadas assim: