Problema com aplicação em tomcat no Suse

Bom dia!

Na minha aplicação eu preciso acessar o arquivo context.xml que está na pasta META-INF, através do Windows funcionou corretamente, entretanto, através do Linux Suse, não consegui acessar o arquivo!

meu código para acessar está assim:

Este é o erro que foi apresentado no Linux no log do tomcat

java.io.FileNotFoundException: webapps/MinhaAplicacao/META-INF/context.xml (No such file or directory)
	at java.io.FileInputStream.open(Native Method)
	at java.io.FileInputStream.<init>(FileInputStream.java:106)
	at br.com.consist.databridge.broker.InfoDBBroker.getInfoDBBean(InfoDBBroker.java:97)
	at br.com.consist.databridge.service.InfoDBService.getInfoDBBean(InfoDBService.java:29)
	at br.com.consist.databridge.ws.InfoDBWebService.getXML(InfoDBWebService.java:59)
	at br.com.consist.databridge.servlet.InfoDBServlet.doPost(InfoDBServlet.java:53)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
	at java.lang.Thread.run(Thread.java:619)

olha este erro é porque vc precisa do path completo. Assim ele não está achando o arquivo. porque já começou no web container.

o path completo você quer dizer que eu preciso colocar /usr/tomcat6/webapp/…?

Sim se não for isso. Vai ser o lance de permissão. Mas vamor primeiro o path.

só que eu não posso colocar o path completo, não tem como eu acessar através da pasta do tomcat?

Bom num sei pq vc falou que num pode colocar o path completo. Se for pq o web container é flexivel, eu uso o seguinte código para identificar o path do arquivo:

URL u = Config.class.getResource(""); String s = u.getPath().toString(); if (s.startsWith ("jar:file:/")) { int pos = s.indexOf (".jar!/"); if (pos != -1) { if (File.separator.equals ("\\")) s = s.substring ("jar:file:/".length(), pos + ".jar".length()); else s = s.substring ("jar:file:".length(), pos + ".jar".length()); } } s = s.substring(6, s.length()-20); s = s.replaceAll ("%20", " ").trim();
Só a primeira linha já ajuda. O resto … vamos dizer que facilitei p/ vc …rsrs debuga o que vem no “s” pra vc ver.
Daí vc passa o path completo

Olá
Então AguiaMan, isso serve somente se for um arquivo… por exemplo jar… mas com relação a
web temos outro jeito de fazer… dá uma olhadinha

HttpServletRequest httpRequest = (HttpServletRequest) request;
String requestPath = httpRequest.getServletPath();
requestPath = requestPath.substring((requestPath.lastIndexOf('/') + 1), requestPath.length());

//URL do servidor até a aplicação, ex: "http://192.168.0.1:8080/HotelSystem/"
System.setProperty("urlAplicacao", httpRequest.getRequestURL().substring(0, httpRequest.getRequestURL().lastIndexOf("/")));
		
//Path físico até o "classes"
System.setProperty("pathClasses", httpRequest.getSession().getServletContext().getRealPath("WEB-INF\\classes"));

Isso eu apliquei no filter mas pode ser feito em uma action sem problemas… também
setei em uma variável… dai fica a critério…

Blz…

Espero ter ajudado
Flws

:smiley: Muito bom Thiago meus cumprimentos. Acredito que neste caso de projeto web é mais conveniente

galera resolvi o problema!

O negócio é que o start do tomcat estava sendo feito em uma pasta diferente da pasta bin, ou seja, no meu caso eu tenho que obrigar o start do tomcat ser feito à partir da pasta bin!

teria como eu pegar o caminho de onde o start foi feito?!! Aí eu criaria um conformo maior pra quem for fazer o start, pois ele não vai precisar acessar a pasta bin do tomcat!