finalizei a app de teste q estava fazendo desktop…porem essa classe será usada em aplicações web.
A duvida é: como pegar o caminho correto do arquivo no servidor, sem ter q transformar essa minha classe em servlet?..alguem ai manja?
Uma Servlet é uma classe comum que é filha de HttpServlet entao acredito que se vc instanciar um objeto da sua classe Servlet
deve funcionar.
nos dois links abaixo tem exemplos de como usar a api sugerida , mas tudo depende de que se vc nao fizer uma classe Servelet como vai se conectar ao servidor para pegar o caminho dos arquivos.
Da uma lida tambem no javadoc que tem no link da api
public String getPath(){
return getServletContext().getRealPath("/securityResources");
}
}[/code]
[code]package br.com.cienci.nfe.util;
import br.com.cienci.nfe.servlets.PathServlet;
public class TesteUrl {
public static void main(String[] args){
PathServlet pp = new PathServlet();
System.out.println("Path: " + pp.getPath());
}
}[/code]
Exception in thread "main" java.lang.NullPointerException
at javax.servlet.GenericServlet.getServletContext(GenericServlet.java:160)
at br.com.cienci.nfe.servlets.PathServlet.getPath(PathServlet.java:21)
at br.com.cienci.nfe.util.TesteUrl.main(TesteUrl.java:17)
Java Result: 1
pq será?..é pq ele não ta indo no server ou algo assim?..tem alguma maneira de eu chamar pela url-pattern dela?
sim, isso eu percebi…mas pq isso acontece?..tem algum jeito disso não ficar nulo?..pq se eu conseguisse retornar o path, acho q resolveria meu problema…
cara,
esse codigo não vai funcionar simplesmente pq o metodo getServletContext() retorna o contexto dentro do server.
vc nao poder invocar esse metodo dessa maneira.
mas eu na netendi o que vc ta querendo fazer. vc quer ler o arquivo?
[quote=jgbt]cara,
esse codigo não vai funcionar simplesmente pq o metodo getServletContext() retorna o contexto dentro do server.
vc nao poder invocar esse metodo dessa maneira.
mas eu na netendi o que vc ta querendo fazer. vc quer ler o arquivo?
[]´s
[/quote]
eu suspeitei desde o principio…kkk…
mas brincadeiras a parte, meu problema é bem chato pra dizer a verdade.
Eu tenho alguns arquivos (xsd, certificados digitais, keystore,…) que eu preciso carregar na aplicação. Em desktop eu usava normal:
mas na web eu não to conseguindo pegar esse arquivo…fiz alguns testes e me da um erro como:
java.io.FileNotFoundException: file:\C:\Arquivos de programas\Apache Software Foundation\Apache Tomcat 6.0.14\bin\src\java\securityResources\certificado_rns.p12 (A sintaxe do nome do arquivo, pasta ou nome do volume está incorreta)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:106)
at java.io.FileInputStream.<init>(FileInputStream.java:66)
at br.com.cienci.nfe.signature.DigitalSignature.sign(DigitalSignature.java:74)
at br.com.cienci.nfe.rfc.ConsultaCnpjWs.getIncricaoMunicipal(ConsultaCnpjWs.java:41)
at br.com.cienci.nfe.rfc.RFCServer$Server.handleRequest(RFCServer.java:152)
at com.sap.mw.jco.JCO$Server.dispatchRequest(JCO.java:5409)
at com.sap.mw.jco.rfc.MiddlewareRFC$Server.nativeListen(Native Method)
at com.sap.mw.jco.rfc.MiddlewareRFC$Server.listen(MiddlewareRFC.java:1010)
at com.sap.mw.jco.JCO$Server.listen(JCO.java:5205)
at com.sap.mw.jco.JCO$Server.run(JCO.java:5139)
at java.lang.Thread.run(Thread.java:619)
eu não entendo pq ele vai no diretorio bin do tomcat…o esperado era pegar o arquivo no diretorio onde esta a aplicação…
[quote=jgbt]ele so vai achar arquivos que estejam no CLASSPATH.
o mais simples p/ ele ler um arquivo seria colocar ele no mesmo diretorio da classe e :
InputStream in = this.getClass().getResourceAsStream("nome do arquivo");
[]´s
[/quote]
iai cara, blz?
aparentemente resolveu meu problema dessa forma, porem os arquivos devem ficar no msm package…tem como eu somente pegar esse caminho, e assim depois trabalhar com essa String para pegar um outro package?
alem disso, em outra situação eu preciso fazer o seguinte:
onde esse this.privateKey é o arquivo a ser setado, ou seja, o caminho inteiro do arquivo…então nesse caso eu preciso de uma String msm, tem alguma forma?..pois não posso passar um InputStream nesse caso