[Gvsig_desarrolladores] Fwd: JNDI + GvSIG + EJB
Cristian Rinaldi
csrinaldi en gmail.com
Lun Sep 24 19:09:25 CEST 2007
Francisco:
He solucionado el problema, les cuento a todos lo que hice.
En primera instancia, coloqué los siguiente jars en la carpeta lib de
gvSIG:
appserv-rt.jar
javaee.jar
appserv-ext.jar
appserv-deployment-client.jar
Y en mi plugin myPlugin.jar tenía la interfaz remota a la cual quería
acceder, pero en tiempo de ejecución no podía acceder a la interfaz remota,
me tiraba una excepción de ClassNotFound.
Lo que hice fue agarrar la interfaz remota junta con otras clases
aledañas que cumplian con su funcionamiento y hacer una librería a la cual
empaqueté en un jar, remoteService.jar. A este también lo copie en la
carpeta lib de gvSig.
Luego cargué todos estos jars en el CLASSPATH cuando gvSIG inicia y desde
mi plugin, pude acceder vía JNDI al servidor GlassFish y traerme un
SessionBean remoto.
Muchas gracias, por las respuestas espero que esto le sirva a alguién. Pero
desde mi punto de vista el sistema de Plugins de gvSIG es poco flexible y no
se terminan de comprender donde se cargan las cosas en tiempo de ejecución.
Saludos Cristian
El día 21/09/07, Francisco José Peñarrubia <fpenarru en gmail.com> escribió:
>
> Hola Cristian.
>
> Sí, Andami lleva un control de las clases duplicadas. Lo hace para
> gestionar las dependencias de unos plugin con otros. En esa parte está
> el código donde deberías poner un punto de ruptura, para ver porqué el
> classLoader no está encontrando tu clase.
>
> Mira la clase com.iver.andami.plugin.PluginClassLoader, a ver si puedes
> averigüar algo:
>
> /**
> * <p>Class loader which loads the classes requested by the
> * plugins. It first tries to search in the classpath, then it requests
> * the class to the parent classloader, then it searches in the owns
> * plugins' library dir, and if all these methods fail, it tries to load
> * the class from any of the depended plugins. Finally, if this also
> * fails, the other classloaders provided in the <code>addLoaders</code>
> method
> * are requested to load the class.</p>
> *
> * <p>The class loader can also be used to load resources from the
> * plugin's directory by using the <code>getResource()</code> method.</p>
> *
> * @author Fernando González Cortés
> */
> public class PluginClassLoader extends URLClassLoader {
>
> Suerte, porque este tema no es sencillo.
>
> Fran.
>
>
> Cristian Rinaldi escribió:
> > Hola:
> > ya coloqué los jars en la carpeta lib de gvSIg y cuando levanta
> > gvSIG hice que los cargue en el CLASSPTH y tampoco anda.
> > Una consulta el control de clases duplicadas en los jars lo hacen
> > ustedes en gvSIG, porque por lo que tengo entendido uno puede adherir
> > en el CLASPTAH cosas repetidas si problemas. Esto es porque tengo 2
> > jars que son necesarios para hacer lo que estoy haciendo y tienen una
> > clase que es la misma y no me deja cargarlos a los dos.
> >
> > El día 21/09/07, *Francisco José Peñarrubia* <fpenarru en gmail.com
> > <mailto:fpenarru en gmail.com>> escribió:
> >
> > Hola Cristian.
> >
> > No lo sé con seguridad, tendría que depurar paso a paso. Pero da la
> > sensación de que sí es un problema de encontrar esas clases. Yo
> > pensaba
> > que eso ya estaba solucionado, pero por si acaso, puedes probar a
> > poner
> > los .jar que necesites dentro del lib de gvSIG además de dentro
> > del lib
> > de tu extensión.
> >
> > Si así no funciona, tendrás que debuggear paso a paso a ver dónde
> > falla.
> >
> > Saludos
> >
> > Cristian Rinaldi escribió:
> > >
> > >
> > > ---------- Forwarded message ----------
> > > From: *Cristian Rinaldi* <csrinaldi en gmail.com
> > <mailto:csrinaldi en gmail.com>
> > > <mailto:csrinaldi en gmail.com <mailto:csrinaldi en gmail.com>>>
> > > Date: 21-sep-2007 11:05
> > > Subject: JNDI + GvSIG + EJB
> > > To: Cristian Rinaldi <csrinaldi en gmail.com
> > <mailto:csrinaldi en gmail.com> <mailto: csrinaldi en gmail.com
> > <mailto:csrinaldi en gmail.com>>>
> > >
> > > Gente:
> > > Bueno hoy vengo con algo raro, tenemos en el grupo de
> desarrollo
> > > el siguiente gran inconveniente.
> > > Tenemos un servidor corriendo sobre un GlassFish V2, y
> > trabajamos
> > > con EJB3. En el servidor existen unos SessionBean que me brindan
> un
> > > servicio de loggin.
> > > Desde GvSIG utilizamos JNDI para conectarnos al servidor y
> > obtener
> > > el SessionBean.
> > > Aqui les dejo el codigo del Cliente gvSIG que realiza la
> > coneccion:
> > >
> > > Context contetx = new InitialContext();
> > > LoginService login =
> > > (LoginService)contetx.lookup(LoginService.class.getName());
> > > List<Service> servicesUser = login.login(user, passwd);
> > > Iterator<Service> it = servicesUser.iterator ();
> > > while( it.hasNext() ){
> > > Service s = it.next();
> > > System.out.println ( s.getName() );
> > > System.out.println( s.getServiceType() );
> > > }
> > >
> > > Bueno eso segun la "teoría" anda en código. Ahora hay que
> > agregar
> > > los jars correspondientes en el CLASSPATH, es decir en lugar donde
> > > definamos las librerías de nuestro plugin. Los jars son javaee.jary
> > > appserv-rt.jar. En este último jar se encuentra un archivo que se
> > > llama jndi.properties que inicializa una de las propiedades que
> > es el
> > > InitialContex.
> > > Luego si estas en una maquina remota, es decir una diferente
> a
> > > donde corre el servidor, es necesario arrancar la aplicación con
> los
> > > siguientes parámetros:
> > > - Dorg.omg.CORBA.ORBInitialPort=32840
> > > -Dorg.omg.CORBA.ORBInitialHost=10.1.30.2
> > > Bueno lo probamos en una aplicacion Demo que hicimos y anda
> de
> > > maravillas, el problema es que con gvSIG no anda, la excepcion que
> > > tira es la siguiente:
> > >
> > > javax.naming.NameNotFoundException [Root exception is
> > > org.omg.CosNaming.NamingContextPackage.NotFound: IDL:
> > > omg.org/CosNaming/NamingContext/NotFound:1.0
> > <http://omg.org/CosNaming/NamingContext/NotFound:1.0>
> > > <http://omg.org/CosNaming/NamingContext/NotFound:1.0>]
> > > at
> > > com.sun.jndi.cosnaming.ExceptionMapper.mapException
> > (ExceptionMapper.java:44)
> > > at com.sun.jndi.cosnaming.CNCtx.callResolve(CNCtx.java
> :453)
> > > at com.sun.jndi.cosnaming.CNCtx.lookup(CNCtx.java :492)
> > > at com.sun.jndi.cosnaming.CNCtx.lookup (CNCtx.java:470)
> > .....
> > > .....
> > > Caused by: org.omg.CosNaming.NamingContextPackage.NotFound: IDL:
> > > omg.org/CosNaming/NamingContext/NotFound:1.0
> > <http://omg.org/CosNaming/NamingContext/NotFound:1.0>
> > > <http://omg.org/CosNaming/NamingContext/NotFound:1.0>
> > > at
> > > org.omg.CosNaming.NamingContextPackage.NotFoundHelper.read
> > (NotFoundHelper.java:72)
> > > at
> > >
> > org.omg.CosNaming._NamingContextExtStub.resolve
> (_NamingContextExtStub.java:406)
> > >
> > > at com.sun.jndi.cosnaming.CNCtx.callResolve(CNCtx.java
> :440)
> > > ... 73 more
> > >
> > > No sabemos si esto se debe a que no encuentra los jars o
> > que. En
> > > realidad desconocemos completamente el error porque en nuestra
> > > aplicación demo funciona a la perfección como dice el tutorial de
> > > GlassFish. Así que el problema es algo en la carga de gvSIG.
> > >
> > > Por favor si alguien puede asesorarnos es necesario que hagamos
> > andar
> > > esto. Muchas gracias.
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > > --
> > > www.juglar.org <http://www.juglar.org> <http://www.juglar.org>
> > > "El Java User Group del Litoral Argentino"
> > >
> > > @Saludos( mappedBy="GNR" )
> > > public String saludo(){
> > > return new String( "Chinese Democracy" );
> > > }
> > >
> > > --
> > > www.juglar.org <http://www.juglar.org> <http://www.juglar.org>
> > > "El Java User Group del Litoral Argentino"
> > >
> > > @Saludos( mappedBy="GNR" )
> > > public String saludo(){
> > > return new String( "Chinese Democracy" );
> > > }
> > >
> >
> ------------------------------------------------------------------------
> > >
> > > _______________________________________________
> > > gvSIG_desarrolladores mailing list
> > > gvSIG_desarrolladores en runas.cap.gva.es
> > <mailto:gvSIG_desarrolladores en runas.cap.gva.es>
> > > http://runas.cap.gva.es/mailman/listinfo/gvsig_desarrolladores
> > >
> > _______________________________________________
> > gvSIG_desarrolladores mailing list
> > gvSIG_desarrolladores en runas.cap.gva.es
> > <mailto:gvSIG_desarrolladores en runas.cap.gva.es>
> > http://runas.cap.gva.es/mailman/listinfo/gvsig_desarrolladores
> > <http://runas.cap.gva.es/mailman/listinfo/gvsig_desarrolladores>
> >
> >
> >
> >
> > --
> > www.juglar.org <http://www.juglar.org>
> > "El Java User Group del Litoral Argentino"
> >
> > @Saludos( mappedBy="GNR" )
> > public String saludo(){
> > return new String( "Chinese Democracy" );
> > }
> > ------------------------------------------------------------------------
> >
> > _______________________________________________
> > gvSIG_desarrolladores mailing list
> > gvSIG_desarrolladores en runas.cap.gva.es
> > http://runas.cap.gva.es/mailman/listinfo/gvsig_desarrolladores
> >
> _______________________________________________
> gvSIG_desarrolladores mailing list
> gvSIG_desarrolladores en runas.cap.gva.es
> http://runas.cap.gva.es/mailman/listinfo/gvsig_desarrolladores
>
--
www.juglar.org
"El Java User Group del Litoral Argentino"
@Saludos( mappedBy="GNR" )
public String saludo(){
return new String( "Chinese Democracy" );
}
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://runas.cap.gva.es/pipermail/gvsig_desarrolladores/attachments/20070924/d7fbaf57/attachment-0001.htm
Más información sobre la lista de distribución gvSIG_desarrolladores