Usabilizando GeneXus: Locations


Para todo aquel que alguna vez programó una aplicación que utilice Web Services con GeneXus, debe haberse topado con el problema de las Locations.

También se usa el término location para ver donde se va a ejecutar el proceso en una aplicación tres capas.

El concepto en si no está muy bien definido en ningún lado, pero el uso del mismo aun es mas engorroso. La documentación esta dispersa y es difcil saber cual es la forma de configurarlos.
No hay (o no encontré) algún ejemplo que tenga ejemplos del archivo

Location Data Type en GeneXus 9.0

Despues hay que agregarle:
Grupo de Locations.
ProxyServer Host y Port con tipo de datos Location.

En ningún lado encontré un ejemplo completo con todos los tags necesarios del archivo XML y/o con ejemplos de codigo GeneXus para el manejo de todas las opciones del tipo de datos.

Creo que es un area que se podría mejorar, publicando un XML Schema del archivo location.xml y tambien documentandolo mejor.

Algunos links utiles para este tema

Locations
SOAP
GetLocation FunctionGetSOAPErr
Function
GetSOAPErrMsg Function

Versiones anteriores:
Location Data Type en GeneXus 7.5

Location Data Type en GeneXus 8.0

Comentarios

  1. En mi laburo anterior trabajé con GX 8.0 e hice una aplicación que me permitía cambiar los locations rápidamente. Hace poco la subí a GXOpen, tal vez te pueda ayudar.
    http://www.gxopen.com/gxopenrocha/servlet/hproject?525

    ResponderBorrar
  2. Sebastian:
    No lo conocia y esta bueno.

    Le faltaria agregarle algunas cosas que le pusieron ultimamente al archivo location, como son la autenticacion, el usuario de proxy y tambien los grupos de location.

    Creo que este es parte del problema, cada uno de nosotros esta programando un editor de location.xml , lo cual no creo que tenga mucho sentido.

    ResponderBorrar
  3. Hace un tiempo Fabricio publicó un tutorial de WS con GX en general que en su momento me pareció muy piola y lo guardé en los favoritos. No se que tan actualizado esté ...

    http://fabriciodls.wordpress.com/2006/11/29/tips-tutorial-como-hacer-un-webservice-con-genexus/

    ResponderBorrar
  4. Enrique, si bien creo que en términos de documentación respecto de lo que son Locations no estamos tan mal, es verdad que hay muchos cabos sueltos en el tema. Por el momento subí al wiki un ejemplo del formato del archivo locations.xml.

    http://wiki.gxtechnical.com/commwiki/servlet/hwiki?Location.xml+file+format,

    Cualquier cosa avisanos nomás.

    ResponderBorrar
  5. Gonzalo:
    Muy bueno tener todo el formato del archivo location.xml en un mismo lugar.

    Creo que seria muy bueno poner ejemplos completos de archivos, pues siempre surgen dudas a los que lo usan.
    Algunas de las dudas que he contestado son:
    * Host, va con http:// o va solo el nombre?
    * La contraseña del proxy va encriptada?.
    * Timeout es es segundos?
    * Secure es 1 o 0, o True/False
    * Cuando se usa "LOC:" en el nombre de la location?

    Creo que son demasiadas dudas, para un archivo tan chiquito e importante.

    ResponderBorrar
  6. Buenas Enrique,
    Tengo una duda que tal vez puedas solventarme. (X Evo1, .NET) Si estoy consumiendo un WS sin utilizar la variable Location. Con una variable del tipo del WS ya esta consumiendo correctamente al WS. Existe una forma de establecer el TimeOut? Intente con la variable Location solo con: &Location.Timeout = 0 antes de la llamada al WS pero no afecto al resultado.
    Concretamente el error es: Se excedió el tiempo de espera de la operación
    Desde ya muchas Gracias!

    ResponderBorrar
  7. Gianfranco:

    Debes hacer

    &Location.GetLocation('Nombre_del_ExternalObject_WS')
    &Location.Timeout=0
    &WS.Metodo(...parms...)

    Es imporntate que pongas exactamente el nombre del external object del WS en el GetLocation, pues es la forma de conectar la location con el Web services que estas invocando.

    ResponderBorrar
  8. Que maestro Enrique! Funciono correctamente, me estaba faltando el GetLocation, jeje
    Muchas gracias, saludos

    ResponderBorrar
  9. Hola, estoy tratando de user el GetLocation con GX15 pero no logro hacer que funcione.
    Me tira error -20007.
    El WS que consumo lo tengo con el nombre wsFab por lo tanto hago &location = GetLocation('wsFab') pero me da error.
    Alguna idea?
    Saludos, Gracias

    ResponderBorrar
    Respuestas
    1. Ese error -20007 es que estas errando al nombre del web services para hacer el getlocation().

      Revisa en el codigo que te genera genexus para eses programa (el java o cs) y busca location o wsFab para encontrar el nombre correcto de la location del web service.

      Por ejemplo, si el web service esta en un modulo la location va a tener otro nombre compuesto.

      Borrar
  10. Hola, tengo un error al consumir varias veces seguidas un mismo web service. Se que en algun lugar, no se si en el web.config o el iis se pone un parametro para que esto no ocurra.
    Son 2 KB que tengo y una consume web service de la otra.

    ResponderBorrar

Publicar un comentario

1) Lee el post
2) Poné tu opinión sobre el mismo.
Todos los comentarios serán leidos y la mayoría son publicados.

Entradas más populares de este blog

La nefasta influencia del golero de Cacho Bochinche en el fútbol uruguayo

Aplicación monolítica o distribuida?

Funcionalidades de GeneXus que vale la pena conocer: DATE Constants.