Opening db: 'sisvistoria.db': Acesso negado

Olá Pessoal!

Estou desenvolvendo uma aplicação que utiliza o SQLite, pois será utilizado smartphones com android para acesso ao sistema. O log do netbeans mostra o seguinte erro:

16-Nov-2018 19:23:33.063 SEVERE [http-nio-8084-exec-13] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [Logar] in context with path [/sisvistoria] threw exception
java.lang.RuntimeException: java.sql.SQLException: opening db: ‘sisvistoria.db’: Acesso negado
at br.com.jairovirgilio.fabrica.FabricaConexao.getConnection(FabricaConexao.java:29)
at br.com.jairovirgilio.dao.UsuarioDAO.(UsuarioDAO.java:25)
at br.com.jairovirgilio.controle.Logar.processRequest(Logar.java:48)
at br.com.jairovirgilio.controle.Logar.doGet(Logar.java:74)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:217)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:673)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.sql.SQLException: opening db: ‘sisvistoria.db’: Acesso negado
at org.sqlite.core.CoreConnection.open(CoreConnection.java:203)
at org.sqlite.core.CoreConnection.(CoreConnection.java:76)
at org.sqlite.jdbc3.JDBC3Connection.(JDBC3Connection.java:25)
at org.sqlite.jdbc4.JDBC4Connection.(JDBC4Connection.java:24)
at org.sqlite.SQLiteConnection.(SQLiteConnection.java:45)
at org.sqlite.JDBC.createConnection(JDBC.java:114)
at org.sqlite.JDBC.connect(JDBC.java:88)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
at br.com.jairovirgilio.fabrica.FabricaConexao.getConnection(FabricaConexao.java:27)

Criei uma classe de conexão, está descrita abaixo:

public class FabricaConexao {

String driver = "org.sqlite.JDBC";
private String url = "jdbc:sqlite:sisvistoria.db";
private String usuario = "";
private String senha = "";

public Connection getConnection() {
    try {
        Class.forName(driver);
        System.out.println("logou");//isto aparece no log do netbeans
        return DriverManager.getConnection(url, usuario, senha);
    } catch (SQLException er) {
        throw new RuntimeException(er);
    } catch (ClassNotFoundException er) {
        throw new RuntimeException(er);
    }
}

}

Alguem pode me ajudar a corrigir ou encontrar este erro!

Se é pra Android, pq está usando Java Oracle e não o Android SDK?

olá javaflex!

Estou desenvolvendo a aplicação para funcionar em uma maquina servidora “um computador com windows” para a aplicação java. E está sendo desenvolvida outra aplicação em um smartphone, e o quero fazer é quando o usuario com o smartphone conectar na rede da empresa o sistema faça a atualização do BD no computador!!!

Entendi, mas cuidado que Sqlite nao foi feito pra ser servidor multiusuário.

O erro ai é bem claro, acesso negado onde está tentando acessar o banco.

Estou tentado acessar o BD criado no meu notebook e do meu próprio notebook, ou seja, localhost!!!

Mesmo o servidor sendo o seu notebook não quer dizer que o Windows ou servidor web tomcat dê acesso a todas as pastas por default.

Devo dar permissão no windows ou no tomcat, mas como faço isso?

Fiz alteração na minha conta de usuario e coloquei como proprietario, mas não funcionou, então deixei minha conta novamente com as permissões anteriores. Agora como faço isso no TomCat?

Um detalhe javaflex!

No console do netbeans Apache Tomcat ele mostra o seguinte trecho de codigo que coloquei dentro do try:
System.out.println(“logou”);//isto aparece no log do netbeans
Agora tambem no console do netbeans mas na aba Log Apache Tomcat é que ele mostra o erro que citei no começo!

Qual caminho está acessando esse arquivo do sqlite?

String driver = “org.sqlite.JDBC”;
private String url = “jdbc:sqlite:C:\Users\Jairo\Documents\NetBeansProjects\sisvistoria\sisvistoria.db”;
//private String usuario = “”;
//private String senha = “”;

Pode ser que o tomcat nao tenha acesso a essa pasta.

Cara, tu sabe mesmo o que está projetando? Back-end com sqlite?

se você der uma olhada no no que informei acima vai perceber que o sistema conecta no banco e depois dá o erro. "No console do netbeans Apache Tomcat ele mostra o seguinte trecho de codigo que coloquei dentro do try:
System.out.println(“logou”);//isto aparece no log do netbeans"
Quero descobrir como corrigir este erro, para que o sistema funcione com o SQLite. Ele funciona normalmente com Postgresql, Mysql, SQLServer. Em todos esses bancos já testei e o sistema funciona, mas infelizmente não consigo exexutar no SQLite!!!

Nao tem o que comparar. Postgresql, Mysql, SQLServer sao SGDBs. SqLite é uma lib que acessa diretamente um arquivo, nao é um serviço de rede, por isso sua aplicação java/tomcat precisa de permissão de acesso direto a pasta.

return DriverManager.getConnection(url, usuario, senha);

Nesta linha que ele vai tentar acessar o arquivo, o que acontece antes nao imoporta.

Enquanto nao der acesso ao tomcat, faz um teste tentando usar a pasta Public que é menos restrita.

“jdbc:sqlite:C:/Users/Public/sisvistoria/sisvistoria.db”

O ideal é usar o caminho relativo, mas é só um teste.

Rapaz passei o dia de domingo tentando achar uma solução. Fiz o seguinte desinstalei o sqlite + adm de BD, fui no site do sqlite e baixei o bd + adm, instalei novamente.
Os erros sumiram, mas não consigo acesso ao sistema, no log continua informando que consgui logar no banco.
Pelo menos aquela lista de erro desapareceu, agora ficou menor o problema para solucionar ou o erro a corrigir!!!

Ainda não havia feito isto, mas tarde irei fazer este teste e retorno!!!

Não funcionou!!!

Estava fazendo pesquisas com relação a conexão java sqlite e em alguns locais inclusive no próprio guj encontrei alguns exemplos, mas esses exemplos é para desktop, não web. Pelo que percebi em todos eles eram criadas uma classe que fazia a conexão com o banco e nela tinha um método para conectar e outro parta desconectar. Vou fazer isso dentro da classe DAO em cada metodo de acordo com os exemplos.

Olá javaflex!

Consegui fazer o sistema funcionar. O que aconteceu foi que eu estava tentando acessar o sistema com o BD já aberto, o que fiz hoje foi o seguinte fechei o BD ou seja o Adm do sqlite e abri o NETBEANS executei o projeto e consegui acessar o sistema, antes eu estava com o NETBEANS e o Adm.do sqlite aberto, e o sqlite só permite um acesso ou um usuario acessando o BD.
Você havia me informado isso anteriorme ; "Entendi, mas cuidado que Sqlite nao foi feito pra ser servidor multiusuário.O erro ai é bem claro, acesso negado onde está tentando acessar o banco.

Muito Obrigado, você me ajudou muito e me Desculpe por qualquer mal entendido!!!

Tranquilo, importante que você chegou na solução. Não sei qual escopo dessa sua aplicação web, mas por isso achei estranho usar sqlite. Por outro lado, por mais estranho que seja, se o escopo se limita a um usuário por vez, não tem problema.

1 curtida