Opening db: 'sisvistoria.db': Acesso negado

19 respostas Resolvido
java
J

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!

19 Respostas

J

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

J

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!!!

J

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.

J

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

J

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.

J

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?

J

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!

J

Qual caminho está acessando esse arquivo do sqlite?

J
String driver = org.sqlite.JDBC;

private String url = jdbc:sqlite:C:\Users\Jairo\Documents\NetBeansProjects\sisvistoria\sisvistoria.db;

//private String usuario = “”;

//private String senha = “”;
J

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

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

J

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!!!

J

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.

J

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.

J

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!!!

J

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

J

Não funcionou!!!

J

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.

J
Solucao aceita

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!!!

J

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.

Criado 16 de novembro de 2018
Ultima resposta 19 de nov. de 2018
Respostas 19
Participantes 2