Endreco fisico tomcat

Boa tarde,

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.

obrigado

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…

[]'s.

É isso mesmo, funcionou direitinho.

Agora não sei como disponibilizar isso para toda minha aplicação!?

teria de passar como parâmetro para todas as classes?
ou tem ou tem outra forma de fazer isto?

Não entendi o que você quis dizer com disponibilizar isso para toda a aplicação…
Você poderia explicar melhor?

[]'s.

Sim,

tenho uma classe com as constantes (DIR_ROOT, DIR_FILES …) e nelas seto o caminho dos diretórios,

ex.

DIR_ROOT = “c:\apache\weapps\xpto”;
DIR_FILES = “\files”;
DIR_TXT = DIR_ROOT + DIR_FILES + “\txt”;

dai quando preciso de um diretorio em qualquer classe, chamo esta classe e o atributo que preciso de usar

nomeDaClasse.DIR_TXT;

ai tenho acesso aos arquivos deste diretorio

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?

Qualquer coisa, tamos aí…
[]'s.

Um pouco complexo…

no caso de usar aquele exemplo que você passou, eu teria de passar o path para todas as classes que precisasse de usá-lo?

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…

Qualquer coisa posta novamente…
[]'s.

Não faço idéia de como implementar isto não

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:

APPLICATION
|
|
|
----Reports
----Uploads
----Images

Agora, no seu listener você faz assim:

/* Recuperar o ServletContext da aplicação */
String basePath = ...
		
String imagePath = basePath + File.pathSeparator + "Images";
String reportPath = basePath + File.pathSeparator + "Reports";
String uploadPath = basePath + File.pathSeparator + "Uploads";
		
PathUtil util = new PathUtil(imagePath, reportPath, uploadPath);

Deu pra entender agora?
Etreguei de bandeija a solução…num se acostume mal naum…heheheh

[]'s.