[Gvsig_desarrolladores] Error de driver postgresql

Joaquin Jose del Cerro Murciano jjdelcerro en gvsig.org
Jue Mar 9 09:01:03 CET 2017


El 8 de marzo de 2017, 20:35, Alex Irmel Oviedo Solis <
alleinerwolf en gmail.com> escribió:

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

De nada.


>
> 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
>> @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
>>
>
> _______________________________________________
> 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
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listserv.gva.es/pipermail/gvsig_desarrolladores/attachments/20170309/806ce902/attachment.html>


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