El 8 de marzo de 2017, 20:35, Alex Irmel Oviedo Solis < [email protected]> 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 < > [email protected]> escribió: > >> El 8 de marzo de 2017, 17:01, Alex Irmel Oviedo Solis < >> [email protected]> 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 >> [email protected] >> 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 >> [email protected] >> [email protected] >> gvSIG Association >> www.gvsig.com >> www.gvsig.org >> _______________________________________________ >> gvSIG_desarrolladores mailing list >> [email protected] >> 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 > [email protected] > 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 [email protected] [email protected] gvSIG Association www.gvsig.com www.gvsig.org
_______________________________________________ gvSIG_desarrolladores mailing list [email protected] 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
