Olá pessoal,
não estou conseguindo acessar via DataSource do apache-tomcat-5.5.26 pois estou migrando uma aplicação que rodava no tomcat 4 e estava rodando …
Por que está dando o erro abaixo…
Se alguém puder me ajudar …agradeceria…
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create PoolableConnection
Factory (Access denied for user 'root'@'localhost' (using password: YES))
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDat
aSource.java:1225)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSo
urce.java:880)
at br.com.paulo.prova.locator.ServiceLocator.getConnectionByPool(Service
Locator.java:76)
at br.com.paulo.prova.locator.ServiceLocator.getConnection(ServiceLocato
r.java:43)
at br.com.paulo.prova.dao.ClienteDAO.listaCliente(ClienteDAO.java:23)
at br.com.paulo.prova.action.ListaAction.execute(ListaAction.java:18)
at br.com.paulo.prova.servlet.ServletAction.service(ServletAction.java:2
6)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
alve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
alve.java:174)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
ava:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
ava:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
ve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav
a:151)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java
:874)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.p
rocessConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpo
int.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFol
lowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP
ool.java:689)
at java.lang.Thread.run(Unknown Source)
Caused by: java.sql.SQLException: Access denied for user 'root'@'localhost' (usi
ng password: YES)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1056)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:957)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3376)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3308)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:894)
at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:3808)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1256)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2032)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:729)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:298)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java
:283)
at org.apache.tomcat.dbcp.dbcp.DriverConnectionFactory.createConnection(
DriverConnectionFactory.java:38)
at org.apache.tomcat.dbcp.dbcp.PoolableConnectionFactory.makeObject(Pool
ableConnectionFactory.java:294)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.validateConnectionFactory
(BasicDataSource.java:1247)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDat
aSource.java:1221)
... 21 more
Erro=java.lang.NullPointerException
---context.xml
<Resource
name="jdbc/local"
type="javax.sql.DataSource"
auth="Container"
maxActive="4"
maxIdle="2"
username="root"
password="paribe"
maxWait="5000"
driverClassName="com.mysql.jdbc.Driver"
password="root"
url="jdbc:mysql://localhost:3306/prova" />
</Context>
---server.xml
<?xml version="1.0" encoding="UTF-8"?>
<Server>
<Listener className="org.apache.catalina.core.AprLifecycleListener"/>
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
<Listener className="org.apache.catalina.storeconfig.StoreConfigLifecycleListener"/>
<Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"/>
<GlobalNamingResources>
<Environment
name="simpleValue"
type="java.lang.Integer"
value="30"/>
<Resource
auth="Container"
description="User database that can be updated and saved"
name="UserDatabase"
type="org.apache.catalina.UserDatabase"
pathname="conf/tomcat-users.xml"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"/>
<Resource
name="jdbc/local"
auth="Container"
type="javax.sql.DataSource"
password="paribe"
driverClassName="com.mysql.jdbc.Driver"
maxIdle="2"
maxWait="5000"
username="root"
url="jdbc:mysql://localhost:3306/prova"
maxActive="4"/>
</GlobalNamingResources>
<Service
name="Catalina">
<Connector
port="8080"
redirectPort="8443"
minSpareThreads="25"
connectionTimeout="20000"
maxSpareThreads="75"
maxThreads="150">
</Connector>
<Connector
port="8009"
redirectPort="8443"
protocol="AJP/1.3">
</Connector>
<Engine
defaultHost="localhost"
name="Catalina">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"/>
<Host
appBase="webapps"
name="localhost">
<Context
path="/prova">
</Context>
</Host>
</Engine>
</Service>
</Server>
--service locate
public class ServiceLocator {
private static String POOLING_NAME = "java:comp/env/jdbc/local";
//private static String POOLING_NAME = "jdbc/local";
private final static String DRIVER_NAME = "com.mysql.jdbc.Driver";
private final static String DB_URL = "jdbc:mysql://localhost:3306/prova";
private final static String DB_USER_NAME = "root";
private final static String DB_PASSWORD = "paribe";
private boolean usePool = true;
protected DataSource ds;
static { //Busca o datasource configurado no arquivo resources.application existente em WEB-INF\classes\resources
ResourceBundle prop = ResourceBundle.getBundle("resources.application");
try {
POOLING_NAME = prop.getString("geral.datasource");
} catch (Exception e) {
}
}
private static InitialContext initCtx = null;
private static ServiceLocator instance = new ServiceLocator();
public static ServiceLocator getInstance() {
return instance;
}
public Connection getConnection() throws Exception {
if (usePool) {
System.out.println("pool");
return getConnectionByPool();
} else {
System.out.println("manual");
return getConnectionManual();
}
}
public Connection getConnectionManual() throws Exception {
Connection conn = null;
try {
Class.forName(DRIVER_NAME);
conn=DriverManager.getConnection(DB_URL,DB_USER_NAME,DB_PASSWORD);
System.out.println("Conexão Aberta !!!");
} catch (Exception e) {
System.out.println("Conexão Não Aberta !!!");
e.printStackTrace();
throw new Exception("Erro ao obter conexao via JNDI: " ,e);
}
return conn;
}
public Connection getConnectionByPool() throws Exception {
Connection conn = null;
DataSource ds = null;
try {
if (initCtx == null) {
initCtx = new InitialContext();
}
System.out.println("PooLING="+POOLING_NAME);
ds = (DataSource) initCtx.lookup(POOLING_NAME);
conn = ds.getConnection();
System.out.println("Conexao Aberta");
} catch (Exception e) {
e.printStackTrace();
//throw new Exception("Erro ao obter conexao via JNDI: "
// + POOLING_NAME, e);
}
return conn;
}
public void setUsePool(boolean usePool) {
this.usePool = usePool;
}
---