Duvida em Trabalhar com Caminhos Relativos em aplicações WEB

1 resposta
DirceuSobrinho

Olá…

Desenvolvi uma aplicacao web que lê e escreve muitos arquivos xml.

desenvolvi a aplicacao no eclipse e utilizei o caminho absoluto:
EX.:

public class MenuEditCommand implements ModuloCommand {

	private Modulo modulo;
	private final String urlMenu = "C://workspace//sistema//WebContent//modulos//sistema_core//menus//menu.xml";

	public void executar() throws Exception {

		Document doc = null;
		SAXBuilder builder = new SAXBuilder();
		try {
			doc = builder.build(this.modulo.getPath() + "//conf//modulo.xml");
		} catch (Exception e) {
			e.printStackTrace();
		}

		Element menu = doc.getRootElement();
		List<Element> lista = menu.getChildren();

		for (Element e : lista) {
			if (e.getName().equals("menu")) {
				Document docMenuXML = null;
				SAXBuilder builderMenuXML = new SAXBuilder();
				try {
					docMenuXML = builderMenuXML.build(urlMenu);
				} catch (Exception exception) {
					exception.printStackTrace();
				}
				Element novo = docMenuXML.getRootElement();
                        	List<Element> elements = e.getChildren();
				for (Element x : elements) {
					novo.addContent((Element) x.clone());
				}

				XMLOutputter xout = new XMLOutputter();
				org.jdom.output.Format formatXML = org.jdom.output.Format
						.getPrettyFormat();
				formatXML.setEncoding("UTF-8");
				xout.setFormat(formatXML);
				try {
					// Criando o arquivo de saida
					FileWriter arquivo = new FileWriter(new File(urlMenu));
					// Imprimindo o XML no arquivo
					xout.output(docMenuXML, arquivo);
				} catch (IOException ex) {
					ex.printStackTrace();
				}

			}
		}
	}

Eu achava que so alterando:
private final String urlMenu = “C://workspace//sistema//WebContent//modulos//sistema_core//menus//menu.xml”;

para
private final String urlMenu = “//modulos//sistema_core//menus//menu.xml”;

eu poderia jogar o arquivo.WAR no tomcat e funcionaria, mas não funcionou não é tão simples assim.

Ai gostaria de saber se existe algum método que eu posso obter o tomcat_home (CATALINA_HOME)?

PARA MIM FAZER O SEGUINTE:

String tomcat_home = getTomcatHome();
String caminhoRelativo = "//modulos//sistema_core//menus//menu.xml";
String nome_aplicacao = "//sistema";
String path = tomcat_home + nome_aplicação + caminhoRelativo;

ATT. Dirceu

1 Resposta

G

Dirceu, há uma forma melhor de trabalhar com esses paths. A interface ServletContext possui um método que recupera o caminho absoluto a partir de um path específico.

Em um simples método init():

public void init(ServletConfig config,ServletContext servlet) throws ServletException { super.init(config); String path=servlet.getRealPath("index.jsp"); }

O conteúdo da variável path será po exemplo: C:/tomcat/webapps/aplicacao/index.jsp

A partir da utilização desse interface, já fica mais fácil fazer o que você precisa. Qualquer problema é só postar.

Abraços.

Criado 24 de março de 2008
Ultima resposta 24 de mar. de 2008
Respostas 1
Participantes 2