Ela funciona muito bem, mas apenas nas máquinas de desenvolvimento. Como vcs podem ver, o caminho foi declarado de forma bem específica.
Agora colocamos o sistema em um servidor Linux, mas está dando pau pois ele não encontra o arquivo no local indicado. Tentei o caminho completo "/usr/local/tomcat/jakarta-tomcat-5.0.28/webapps/pcp/WEB-INF/validation-lookup.xml e também "/WEB-INF/validation-lookup.xml, mas nada… alguém sabe como posso colocar para que ele leia no Linux? Ta me travando isso
java.net.MalformedURLException: unknown protocol: c
at java.net.URL.<init>(URL.java:574)
at java.net.URL.<init>(URL.java:464)
at java.net.URL.<init>(URL.java:413)
at org.apache.xerces.impl.XMLEntityManager.setupCurrentEntity(Unknown Source)
at org.apache.xerces.impl.XMLVersionDetector.determineDocVersion(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source)
at javax.xml.parsers.DocumentBuilder.parse(Unknown Source)
at br.com.nomus.controle.negocio.ValidationLookup.<init>(ValidationLookup.java:29)
at br.com.nomus.controle.negocio.Validacao.validate(Validacao.java:65)
at br.com.nomus.visao.action.ClienteAction.inserir(ClienteAction.java:64)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:276)
at org.apache.struts.actions.LookupDispatchAction.execute(LookupDispatchAction.java:162)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:415)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
at java.lang.Thread.run(Thread.java:595)
Sep 4, 2006 11:47:33 AM org.apache.struts.action.RequestProcessor processException
WARNING: Unhandled Exception thrown: class java.lang.NullPointerException
java.net.MalformedURLException: unknown protocol: c
Acho que você, por algum motivo, deixou escapar o nome do arquivo como “c:/alguma coisa”. É por isso que ele reclamou do protocolo (que é aquilo que vem antes do “:” em uma url, por exemplo: “http://www.guj.com.br” ou “file:/usr/bin/teste.xml”
Faz todo sentido, parece q ele não está atualizando o arquivo, pois tirei o “c:” faz tempo… vou ver se ao inves de mudar na mao faco o deploy do .war novamente, muito obrigado!!
Dica: para esse tipo de solução (onde se quer ler um arquivo fixo em um diretório que está no CLASSPATH da aplicação), é melhor usar a InputStream retornada por getClass().getClassLoader().getResourceAsStream(), em vez de usar um nome para o arquivo.
Oi pessoal, estou com o mesmo problema que o bonfarj, tentei o que o thingol disse, mas não funcionou, estou tentando outras forma,s mas ate agora nada.
Não sei porque não funciona, pois no meu struts-config.xml tem alguns lugares que existe o “/WEB-INF/…” e funciona normalmente. Será que alguem tem uma ideia do porque isso ocorre?
obrigado
Pessoal consegui resolver o problema, só que tiver que colocar o caminho absoluto do arquivo, não consegui fazer com que o “/WEB-INF/…” funcionasse.
Se alguem tiver uma outra forma, eu agradeço
abraços