[Gvsig_desarrolladores] Error de driver postgresql

Alex Irmel Oviedo Solis alleinerwolf en gmail.com
Mie Mar 8 20:35:15 CET 2017


Gracias Joaquin, probe la opción 2 y funciona bien, muchas gracias :-)

El mié., 8 de mar. de 2017 a la(s) 14:11, Joaquin Jose del Cerro Murciano <
jjdelcerro en gvsig.org> escribió:

> El 8 de marzo de 2017, 17:01, Alex Irmel Oviedo Solis <
> alleinerwolf en gmail.com> escribió:
>
> Buenos dias a todos, estoy modificando el ejemplo de Control de acceso y
> estoy intentando modificarlo para autenticar con postgresql, el codigo que
> estoy usando es el siguiente:
> ------
> String url = "jdbc:postgresql://" + prop.getProperty("db.host") + ":5432/"
> + prop.getProperty("db.name");
>             Class.forName("org.postgresql.Driver");
>
>             Connection connection = DriverManager.getConnection(url,
> conprops);
>             String query = "SELECT * FROM public.\"Usuario\" WHERE
> usuario='" + id + "'";
>             PreparedStatement ps = connection.prepareStatement(query);
>             ResultSet rs = ps.executeQuery();
>             rs.next();
>
>             this.properties = new HashMap<>();
>             this.properties.put("username", rs.getString("usuario"));
>             this.properties.put("password", rs.getString("clave"));
>             this.properties.put("fullname", rs.getString("nombres"));
>
>             connection.close();
> ------
>
> Y tengo este mensaje de error:
> --------
> INFO main org.gvsig.tools.locator.AbstractLocator - Created and stored the
> instance of org.gvsig.tools.identity.manager in the singleton table
> (org.guamanpoma.identitymanagement.impl.DefaultDatabaseIdentityManager/org.guamanpoma.identitymanagement.impl.DefaultDatabaseIdentityManager en 7a344b65
> ).
> ERROR AWT-EventQueue-0
> org.guamanpoma.identitymanagement.impl.DefaultDatabaseIdentity - connect-db
> java.lang.ClassNotFoundException: Class org.postgresql.Driver not found
> through the plugin
> D:\gvSIG-desktop-2.3.1-2501-final-win-x86_64\gvSIG\extensiones\org.guamanpoma.identitymanagement.app.mainplugin
> --------
>
> Obviamente este problema se debe a que no se encuentra el jar de
> postgresql. Trate de resolver el problema agregando la dependencia en el
> pom.xml para que cargue el driver con el scope compile y tambien con el
> scope runtime y no se soluciono. Estoy copiando manualmente el driver en la
> carpeta lib de la extensión a cada momento y quisiera saber si hay alguna
> manera de que esta depedencia se incluya sin hacer ninguna copia manual.
>
>
>
>
> Cada plugin de gvSIG se ejecuta con su propio classloader. Esto es asi
> para evitar, en la medida de lo posible, conflicto entre los jars que
> aporte cada uno de los plugins. Tu plugin, si no has configurado nada
> especial, tendra acceso a lo que haya en la carpeta lib de la instalacion
> de gvSIG y a los jars que hayan dentro de la carpeta del propio plugin;
> pero no a los jars de otros plugins.
>
> Si necesitas acceder a los jars que hayan en otros plugins tendras que
> indicarlo de forma explicita. Ten en cuenta que si dependes de los jars que
> aporta otro plugin, no tendras ninguna garantia que estaran ahi en la
> siguiente version del plugin, o que no se habran actualizado a una version
> con la que ya no son compatibles con tu codigo. Dicho esto, concretamente
> el jar de postgreql no creo que desaparezca o cambie mucho en las proximas
> versiones, asi que en lugar de incluirlo en tu plugin no parece una mala
> idea que dependas del plugin "org.gvsig.postgresql.app.mainplugin".
>
> Respecto a lo que comentas que has añadido al pom la dependencia con el
> artefecto de postgresql, la cuestion es que una cosa son las dependencias
> que fijes en el pom, y otra que esten disponibles esas dependencias en
> tiempo de ejecucion en tu classpath.
>
> ¿ Como se haria para poder usar el jar de postgresql ?
>
> - Opcion 1, usar el que lleva gvSIG.
>   Es la que te recomiendo.
>   Por un lado deberas añadir en tu pom, la depdencia con
>   el artefeacto maven como comentas que has hecho. Eso
>   solventa el problema de compilacion, pero no el de
>   ejecucion. La recomendacion ademas, es que no indiques
>   la version, y que esta la coja de la declarada ya en
>   el pom de "org.gvsig.desktop" del que seguramente heredaras.
>   Con esto te aseguras que compilas contra la misma version
>   del jar de postgresql que luego tendras en tiempo de ejecucion.
>
>   El otro problema, ¿ que he de hacer para tener acceso al jar
>   que hay en el plugin "org.gvsig.postgresql.app.mainplugin" ?
>
>   Tendras que editar el "config.xml" de tu plugin y tocar alli
>   alguna cosilla. Alli veras unas lineas algo como:
>
>         ...
>         <depends plugin-name="org.gvsig.app.mainplugin" />
>         <resourceBundle name="text"/>
>         <libraries library-dir="lib"/>
>         <extensions>
>         ...
>
>   El tag depends indica que añada al classpath de tu plugin,
>   el del plugin que indiques. Por defecto esta puesto el del
>   plugin "org.gvsig.app.mainplugin" que es el plugin principal
>   de gvSIG y del que normalmente dependen todos. Para lo que
>   te interesa simplemente añadiremos otra linea con el tag
>   depends pero pondremos el nombre del plugin de postgresql.
>
>         ...
>         <depends plugin-name="org.gvsig.app.mainplugin" />
>         <depends plugin-name="org.gvsig.postgresql.app.mainplugin" />
>         <resourceBundle name="text"/>
>         <libraries library-dir="lib"/>
>         <extensions>
>         ...
>
>   Simplemente con esto ya tendremos acceso en tiempo de ejecucion
>   al jar de postgresql que esta en ese plugin.
>
> - Opcion 2, incluir el jar que necesites en tu propio plugin.
>
>   En este caso yo no lo haria, pero por si acaso lo cuento.
>   En maven, tenemos por un lado el pom, donde habla de dependencias,
>   donde localizarlas y que versiones, pero no dice nada de como
>   empaquetar tu proyecto, en este caso un plugin de gvSIG. Y por
>   otro lado el "assembly" que indica como se ha de empaquetar el
>   proyecto. En el caso de un plugin de gvSIG, tendras un fichero:
>
>     src/main/assembly/gvsig-plugin-package.xml
>
>   Ahi, entre otras cosas tendras algo como:
>
>   ...
>     <dependencySets>
>     <dependencySet>
>       <useProjectArtifact>false</useProjectArtifact>
>       <useTransitiveDependencies>false</useTransitiveDependencies>
>       <outputDirectory>lib</outputDirectory>
>       <includes>
>
> <include>org.gvsig:org.gvsig.trivialidentitymanagement.lib.api</include>
>
> <include>org.gvsig:org.gvsig.trivialidentitymanagement.lib.impl</include>
>       </includes>
>     </dependencySet>
>   </dependencySets>
>   ...
>
>   Deberas añadir una linea con el tag include. En ella se especifica que
> artefacto
>   te quieres llevar en la distribucion de tu plugin, indicando el groupid,
> dos
>   puntos ":" y el artifactid. Si quieres llevarte detras el jar de
> postgresql seria
>   algo como:
>
>       <includes>
>
> <include>org.gvsig:org.gvsig.trivialidentitymanagement.lib.api</include>
>
> <include>org.gvsig:org.gvsig.trivialidentitymanagement.lib.impl</include>
>         <include>postgresql:postgresql</include>
>       </includes>
>
>   (para el jar de postgresql el groupid y el artifactid son iguales)
>   Esto hara que en la carpeta de tu plugin se despliegue el jar de
> postgresql y
>   no dependeras de que este instalado el plugin de gvSIG
>   "org.gvsig.postgresql.app.mainplugin" para acceder a postgresql.
>
>   Es importante que sigas incluyendo las dependencias en el pom (como
> minimo
>   de runtime, ya que aunque lo añadas en el assembly, si no esta en el pom
> el
>   assemble no la incluira).
>
> Espero que se entienda y resuelba tus dudas, y si no te queda claro,
> puedes preguntar
> de nuevo.
>
> Un saludo
> Joaquin
>
>
>
>
>
>
> _______________________________________________
> gvSIG_desarrolladores mailing list
> gvSIG_desarrolladores en listserv.gva.es
> Para ver histórico de mensajes, editar sus preferencias de usuario o darse
> de baja en esta lista, acuda a la siguiente dirección:
> https://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores
>
>
>
>
> --
> --------------------------------------
> Joaquin Jose del Cerro Murciano
> Development and software arquitecture manager at gvSIG Team
> jjdelcerro en gvsig.com
> jjdelcerro en gvsig.org
> gvSIG Association
> www.gvsig.com
> www.gvsig.org
> _______________________________________________
> gvSIG_desarrolladores mailing list
> gvSIG_desarrolladores en listserv.gva.es
> Para ver histórico de mensajes, editar sus preferencias de usuario o darse
> de baja en esta lista, acuda a la siguiente dirección:
> https://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listserv.gva.es/pipermail/gvsig_desarrolladores/attachments/20170308/ba51cbca/attachment.html>


Más información sobre la lista de distribución gvSIG_desarrolladores