remotas postgres pg_hba para instalar establish configurar conf conexiones conexion conectar con cannot postgresql tomcat jdbc geoserver

postgresql - postgres - La infame java.sql.SQLException: no se encontrĂ³ un controlador adecuado



instalar jdbc postgresql en eclipse (9)

Intento agregar una JSP habilitada para bases de datos a una aplicación Tomcat 5.5 existente (GeoServer 2.0.0, si eso ayuda).

La aplicación en sí misma habla bien con Postgres, así que sé que la base de datos está activa, el usuario puede acceder a ella, todas esas cosas buenas. Lo que intento hacer es una consulta de base de datos en un JSP que he agregado. He usado el ejemplo de configuración en el ejemplo de fuente de datos de Tomcat bastante fuera de la caja. Los taglibs necesarios están en el lugar correcto, no se producen errores si solo tengo los taglib refs, entonces es encontrar esos JAR. El controlador jdbc de postgres, postgresql-8.4.701.jdbc3.jar está en $ CATALINA_HOME / common / lib.

Aquí está la parte superior de JSP:

<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <sql:query var="rs" dataSource="jdbc/mmas"> select current_validstart as ValidTime from runoff_forecast_valid_time </sql:query>

La sección correspondiente de $ CATALINA_HOME / conf / server.xml, dentro de <Host> que a su vez está dentro de <Engine> :

<Context path="/gs2" allowLinking="true"> <Resource name="jdbc/mmas" type="javax.sql.Datasource" auth="Container" driverClassName="org.postgresql.Driver" maxActive="100" maxIdle="30" maxWait="10000" username="mmas" password="very_secure_yess_precious!" url="jdbc:postgresql//localhost:5432/mmas" /> </Context>

Estas líneas son las últimas en la etiqueta en webapps / gs2 / WEB-INF / web.xml:

<resource-ref> <description> The database resource for the MMAS PostGIS database </description> <res-ref-name> jdbc/mmas </res-ref-name> <res-type> javax.sql.DataSource </res-type> <res-auth> Container </res-auth> </resource-ref>

Finalmente, la excepción:

exception org.apache.jasper.JasperException: Unable to get connection, DataSource invalid: "java.sql.SQLException: No suitable driver" [...wads of ensuing goo elided]


La infame java.sql.SQLException: no se encontró un controlador adecuado

Esta excepción puede tener básicamente dos causas:

1. El controlador JDBC no está cargado

Debe asegurarse de que el controlador JDBC esté ubicado en la carpeta /lib propia del servidor.

O bien, cuando en realidad no está utilizando un origen de datos del grupo de conexiones administrado por el servidor, sino que está manipulando manualmente con DriverManager#getConnection() en WAR, debe colocar el controlador JDBC en WAR /WEB-INF/lib y realizar ..

Class.forName("com.example.jdbc.Driver");

.. en su código antes de la primera llamada DriverManager#getConnection() por la que se asegura de que no se traga / ignora cualquier ClassNotFoundException que puede ser lanzada por él y continuar el flujo de código como si nada excepcional sucedió. Consulte también ¿Dónde debo colocar el controlador JDBC para el conjunto de conexiones de Tomcat?

2. O bien, el URL de JDBC tiene una sintaxis incorrecta

Debe asegurarse de que la URL JDBC cumple con la documentación del controlador JDBC y tenga en cuenta que generalmente distingue entre mayúsculas y minúsculas. Cuando la URL JDBC no devuelve true para Driver#acceptsURL() para cualquiera de los controladores cargados, también obtendrá exactamente esta excepción.

En el caso de PostgreSQL está documentado here .

Con JDBC, una base de datos está representada por una URL (Localizador Uniforme de Recursos). Con PostgreSQL ™, esto toma una de las siguientes formas:

  • jdbc:postgresql:database
  • jdbc:postgresql://host/database
  • jdbc:postgresql://host:port/database

En el caso de MySQL está documentado here .

El formato general para una URL JDBC para conectarse a un servidor MySQL es el siguiente, con elementos entre corchetes ( [ ] ) que son opcionales:

jdbc:mysql://[host1][:port1][,[host2][:port2]]...[/[database]] » [?propertyName1=propertyValue1[&propertyName2=propertyValue2]...]

En el caso de Oracle , está documentado here .

Hay 2 sintaxis de URL, sintaxis antigua que solo funcionará con SID y la nueva con el nombre de servicio de Oracle.

Sintaxis antigua jdbc:oracle:thin:@[HOST][:PORT]:SID

Nueva sintaxis jdbc:oracle:thin:@//[HOST][:PORT]/SERVICE

Ver también:


Además de agregar el conector JDBC de MySQL, asegúrese de que context.xml (si no está desempaquetado en la carpeta de webapps de Tomcat) con sus definiciones de conexión de base de datos se incluyen en el directorio conf de Tomcats.


Encontré la sugerencia followig útil, para eliminar este problema en Tomcat -

asegúrese de cargar el controlador primero haciendo un Class.forName ("org.postgresql.Driver"); en tu código

Esto es del post - https://www.postgresql.org/message-id/[email protected]

El código jdbc funcionó bien como un programa independiente, pero en TOMCAT dio el error ''No se encontró ningún controlador adecuado''


Enfrenté el problema similar. Mi proyecto en contexto es Dynamic Web Project (Java 8 + Tomcat 8) y el error es para la excepción del controlador PostgreSQL: no se encontró un controlador adecuado

Se resolvió agregando Class.forName("org.postgresql.Driver") antes de llamar al método getConnection()

Aquí está mi código de muestra:

try { Connection conn = null; Class.forName("org.postgresql.Driver"); conn = DriverManager.getConnection("jdbc:postgresql://" + host + ":" + port + "/?preferQueryMode=" + sql_auth,sql_user , sql_password); } catch (Exception e) { System.out.println("Failed to create JDBC db connection " + e.toString() + e.getMessage()); }


Estaba usando jruby, en mi caso creé en config / initializers

postgres_driver.rb

$CLASSPATH << ''~/.rbenv/versions/jruby-1.7.17/lib/ruby/gems/shared/gems/jdbc-postgres-9.4.1200/lib/postgresql-9.4-1200.jdbc4.jar''

o donde sea que esté tu controlador, ¡y eso es todo!


Me olvidé de agregar el controlador PostgreSQL JDBC al proyecto Mvnrepository .

Gradle :

// http://mvnrepository.com/artifact/postgresql/postgresql compile group: ''postgresql'', name: ''postgresql'', version: ''9.0-801.jdbc4''

Maven :

<dependency> <groupId>postgresql</groupId> <artifactId>postgresql</artifactId> <version>9.0-801.jdbc4</version> </dependency>

También puede download el JAR e importar a su proyecto manualmente.


Tuve este problema exacto al desarrollar una aplicación Spring Boot en STS, pero finalmente implementé la guerra empaquetada en WebSphere (v.9). Basado en respuestas anteriores, mi situación fue única. ojdbc8.jar estaba en mi carpeta WEB-INF / lib con Parent Last class set de carga, pero siempre dice que no pudo encontrar el controlador adecuado.

Mi problema principal era que estaba usando la clase de DataSource incorrecta porque solo estaba siguiendo junto con los tutoriales / ejemplos en línea. Encontré la pista gracias a David Dai. Comente aquí su propia pregunta: Spring JDBC No se pudo cargar la clase de controlador JDBC [oracle.jdbc.driver.OracleDriver]

También más tarde se encontró un ejemplo de Spring Guru con un controlador específico de Oracle: https://springframework.guru/configuring-spring-boot-for-oracle/

Ejemplo que arroja un error utilizando org.springframework.jdbc.datasource.DriverManagerDataSource basado en ejemplos genéricos.

@Config @EnableTransactionManagement public class appDataConfig { /* Other Bean Defs */ @Bean public DataSource dataSource() { // configure and return the necessary JDBC DataSource DriverManagerDataSource dataSource = new DriverManagerDataSource("jdbc:oracle:thin:@//HOST:PORT/SID", "user", "password"); dataSource.setSchema("MY_SCHEMA"); return dataSource; } }

Y el resultado correcto corregido con oracle.jdbc.pool.OracleDataSource :

@Config @EnableTransactionManagement public class appDataConfig { /* Other Bean Defs */ @Bean public DataSource dataSource() { // configure and return the necessary JDBC DataSource OracleDataSource datasource = null; try { datasource = new OracleDataSource(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } datasource.setURL("jdbc:oracle:thin:@//HOST:PORT/SID"); datasource.setUser("user"); datasource.setPassword("password"); return datasource; } }


Vale la pena señalar que esto también puede ocurrir cuando Windows bloquea las descargas que considera inseguras. Esto se puede solucionar haciendo clic con el botón derecho en el archivo jar (como ojdbc7.jar) y marcando el cuadro "Desbloquear" en la parte inferior.

Cuadro de diálogo de propiedades del archivo JAR de Windows :


url="jdbc:postgresql//localhost:5432/mmas"

Esa URL parece incorrecta, ¿necesita lo siguiente?

url="jdbc:postgresql://localhost:5432/mmas"