[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