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

2 respostas
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.

[b]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;[/b]

ATT. Dirceu

2 Respostas

D

Sua aplicação Web inicia pela raiz assim “/”:

/modulos/sistema_core/menus/menu.xml

Isso quer dizer que há um diretório modulos dentro da raiz principal da sua aplicação.

/MinhaAplicacao /modulos /sistema_core /...

Espero que entenda essa minha explicação.

Bons códigos

eduardo.carvalho

String realPath = ServletContext.getRealPath();

http://tomcat.apache.org/tomcat-4.1-doc/servletapi/javax/servlet/ServletContext.html

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