Conexão com Banco de Dados

Olá pessoal,

Estou desenvolvendo uma aplicação que tenta fazer conexão com um banco SQLServer 2000 que está em uma máquina PC001, trabalho em outra máquina PC002, estou montando uma conexão JNDI (pool de conexões) até ai tudo bem, após ajuda deste forum consegui implementar o código, contudo ainda não consegui estabelecer a conexão com o banco de dados o qual apresenta o erro abaixo:

obs. 1: Quando testo a conexão via ODBC funciona usando “autenticação do windows NT”, assim como “autenticação do SQLServer”;
obs. 2: Sou desenvolvedor DELPHI e fiz um teste também usando ADO e foi tudo bem;

Logo não é a princípio um probema com a autenticação do usuário.

uso Eclipse, Tomcat 5.5.20 e struts.

Erro:

javax.servlet.ServletException: access denied (java.lang.RuntimePermission accessClassInPackage.org.apache.tomcat.dbcp.collections)
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:535)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:433)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:243)
java.security.AccessController.doPrivileged(Native Method)
javax.security.auth.Subject.doAsPrivileged(Unknown Source)
org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:275)
org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:161)

root cause

java.security.AccessControlException: access denied (java.lang.RuntimePermission accessClassInPackage.org.apache.tomcat.dbcp.collections)
java.security.AccessControlContext.checkPermission(Unknown Source)
java.security.AccessController.checkPermission(Unknown Source)
java.lang.SecurityManager.checkPermission(Unknown Source)
java.lang.SecurityManager.checkPackageAccess(Unknown Source)
sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
java.lang.ClassLoader.loadClass(Unknown Source)
java.lang.ClassLoader.loadClass(Unknown Source)
java.lang.ClassLoader.loadClassInternal(Unknown Source)
org.apache.tomcat.dbcp.pool.impl.GenericObjectPool.(GenericObjectPool.java:392)
org.apache.tomcat.dbcp.pool.impl.GenericObjectPool.(GenericObjectPool.java:258)
org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:795)
org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:540)
br.sisped.conexao.Conexao.getConexao(Conexao.java:41)
br.sisped.conexao.ScriptUsuario.getUsuaroBco(ScriptUsuario.java:36)
br.usuarioActions.LoginAction.execute(LoginAction.java:30)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:243)
java.security.AccessController.doPrivileged(Native Method)
javax.security.auth.Subject.doAsPrivileged(Unknown Source)
org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:275)
org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:161)

note The full stack trace of the root cause is available in the Apache Tomcat/5.5.20 logs.

desde já agradeço quem puder ajudar.

André Luiz

cara vc ta usando o commons-dbcp? Ao que me parece seu usuário não tem permissão para acessar o JAR.

Bom dia Felagund,

Como sou novato em java não conheco o arquivo commons-dbcp. Gostaria de saber onde baixar este jar, pois em minhas pesquisa já havia lido sobre este arquivo, então onde devo baixa-lo e qual local ele deve ficar na pasta common/lib ?

desde já agradeço.

André Luiz

Olá pessoal,

Estou pesquisando sobre pool de conexões. Existe um histórico de erros que já utrapassei com ajuda do fórum, contudo esbarrei em um novo erro. O erro anterior era:

access denied (java.lang.RuntimePermission accessClassInPackage.org.apache.tomcat.dbcp.collections)  um dos participantes aconselhou-me a colocar um jar dentro do common/lib de nome commons-dbcp, contudo descobri que o jar naming-factory-dbcp ja contém as bibliotecas necessárias (commons-dbcp, commons-pool e commons-collections)

Em minha pesquisa descobri que eu deveria incluir no meu arquivo catalina.policy a permissão para utilizar o pool de conexões da seguinte forma:

grant {
    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.tomcat.dbcp.*";

};

a partir da incluão desta linha no referido arquivo a mensagem de erro passou a ser a seguinte:

Cannot create PoolableConnectionFactory ([Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.)

no texto que estou lendo há uma referencia sobre socket da seguinte forma

Security Manager settings
If you’re running tomcat with the Security Manager, you will need to add to your catalina.policy:

grant {
permission java.lang.RuntimePermission “accessClassInPackage.org.apache.tomcat.dbcp.*”;
};

(This is in addition to any java.net.SocketPermission and java.sql.SQLPermission needed by the database itself)

Continuo pesquisando contudo alguém tem alguma dica sobre esta nova mensagem de erro?

" Cannot create PoolableConnectionFactory ([Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.) "

desde já agradeço

André Luiz