Not supported by BasicDataSource

Hola estoy tratando de conectarme a una base de datos en MySQL:

Context ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/ear123");
Connection con = ds.getConnection("ear","ear123");

Al invocar al getConnection("user","passw");

El servidor (Tomcat) me manda:

Not supported by BasicDataSource

Mi web.xml

<?xml version="1.0" encoding="UTF-8" ?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee <a href="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">" title="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">">http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"></a>  
 <resource-ref>
    <description>DB Connection</description>
    <res-ref-name>jdbc/ear123</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Application</res-auth>
  </resource-ref>
 
  <servlet>
                <servlet-name>servlets.Login</servlet-name>
                <servlet-class>servlets.Login</servlet-class>
        </servlet>
        <servlet-mapping>
                <servlet-name>servlets.Login</servlet-name>
                <url-pattern>/login</url-pattern>
        </servlet-mapping>
 
 <welcome-file-list>
  <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
 <session-config>
  <session-timeout>10</session-timeout>
  </session-config>
</web-app>

Que podré verificar para resolver esto?
Espero me puedan ayudar.
Saludos.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

getConnection(user,pass)

Tomcat usa DBCP para sus datasources (y tener asi pools de conexiones). La documentación de BasicDataSource dice claramente que no soporta el método.

La razón es que el pool usa el mismo usuario y password para todas sus conexiones, y cuando pides una conexión con getConnection(), puede que obtengas una que ya fue creada previamente (para eso es el pool), por lo que no tiene sentido que le indiques usuario y password.

Usa getConnection() sin parámetros para obtener una conexión de un pool.

getConnection(user,pass)

Gracias!!!

Una cosa mas, entonces será que debo de tener configurado el Context.xml????....

<?xml version="1.0" encoding="UTF-8"?>
<Context>
    <!-- Specify a JDBC datasource -->
    <Resource name="jdbc/ear123"
              auth="Container"
              type="javax.sql.DataSource"
              username="ear"
              password="ear123"
              driverClassName="com.mysql.jdbc.Driver"
              url="java:comp/env/jdbc/ear123?autoReconnect=true"
              validationQuery="select 1"
              maxActive="10"
              maxIdle="4"/>

    <!-- Specify the security realm and location of the users file
    <Realm className="org.apache.catalina.realm.MemoryRealm"
           pathname="/tomcat/webapps/ROOT/WEB-INF/users.xml" />
    -->
</Context>

Lo pregunto por que ya estuve utilizando el getConnection() (sin param.) ahora el tomcat envía:

java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)

*Me aseguré ya de poder accesar con el user y pass desde la consola de MySQL.

Gracias de nuevo.

Imagen de ezamudio

tal vez

El error definitivamente es porque el datasource no puede conectarse. No sé cuál sea la solución porque no sé cómo lo tengas actualmente definido ese datasource, pero lo primero que deberías intentar es que a la definición actual del datasource le pongas el usuario y password correctos. Eso no sé si es en tu app o en una config global de tomcat.