anonymous Log in
Search
Recents:
v3.0
gx-l
Sin conexion a internet
20/11/19 08:22

Sergio Guichón

Replies: 8

Xavier, supongo que estás intentando consumir un webservice.
Si ese es el caso, podrías controlar todo utilizando location sin que la
aplicación se caiga:

Antes de llamar al ws:

&Location=getlocation('WSExterno')
&Location.CancelOnError = 2
&Location.Timeout = 60
&Location.Port = &GFEPort // 8080
&Location.Host = &GFEHost // '192.168.1.111'
&Location.BaseUrl = &GFEBaseURL // '/gfeclient/servlet/'

Luego haces la llamada al ws

Al volver del ws:
If GetSOAPErr() <> 0
&ErrDsc = 'ERROR EN COMUNICACION
(WSExterno)'+NewLine()+str(GetSOAPErr()) + ' - ' + GetSOAPErrMsg()
&ErrId = 3
Return
EndIf

Con esto, se guarda en algún lado o se muestra en pantalla (en mi caso lo
guardo porque es un procedimiento que se ejecuta programado) el contenido de
&ErrDsc
Cabe destacar que &Location es una variable del tipo Location

Espero que te sirva

Sergio A.Guichón



<mailto:sguichon@montevideo.com.uy> sguichon@montevideo.com.uy
Ancel 099 184.045
Tel. 2203.68.79
Av.Agraciada 2541 Apto.803
Montevideo - Uruguay



De: Xavier Argudo [mailto:xargudo66@hotmail.com]
Enviado el: martes, 19 de noviembre de 2019 13:47
Para: Foro Genexus; Foro 1 Genexus
Asunto: [gx-l] Sin conexion a internet

Estimados;

Seguro de que esto es algo que ya mas de uno lo ha de tener controlado,
solicito de la manera mas encarecidamente posible, me puedan ayudar con
algún procedimiento, UC, propiedad etc. para controlar o determinar cuando
no existe conexión a Internet.

De antemano, quedo muy agradecido por vuestro apoyo.

Saludos cordiales
Xavier Argudo
Replies

demetole

20/11/19 13:12
Estimado Sergio. Gracias por respuesta. Para el caso de que servicio web este caido entiendo que retorna un StatusCode >= 400 o 500 Para el caso de que la CONEXION a la BASE DE DATOS ESTE CAIDA y el servicio web no puede responder, como se realizarla en ese caso. Por cierto trabajo con gx15U12 y java con Db2Iseries Atento en conocer tu respuesta.

alonso.gx

20/11/19 13:32
Obteniendo el HTML resultante de la pagina y buscar, en la cadena alguna(s) palabra(s) clave que puedas identificar como caído la pagina. Es una idea. Saludos

hugao118

20/11/19 13:56
Hola En primera instancia, sería bueno saber donde precisas validar la conexión al internet, *recuerda* que en una aplicación web hay dos partes, uno es el servidor donde esta como tal la aplicación, y el otro es el cliente donde está el GUI que ve el usuario final. *Si es en el servidor*, Podrías rapidamente hacer una petición HTTP utilizando HTTPClient a una página web que sepas que está alojada en internet (ejemplo Google) si esta petición termina con un *StatusCode > 0* la petición se hizo correctamente al servidor (*hay internet*) de lo contrario no fue posible llegar al servidor (*no hay internet*), ahora si quieres analizar más a fondo las respuestas, te recomiendo buscar los códigos de respuesta HTTP son varios, pero básicamente se agrupan en: 1. 1xx: Informativos 2. 2xx: Correctos 3. 3xx: Redirecciones 4. 4xx: Errores del cliente 5. 5xx: Errores de servidor En todo caso, sea cual sea la respuesta que recibas sin importar de que grupo sea, quiere decir que el servidor se pudo acceder para que te contestara por lo que se puede suponer que la conexión a internet existe. *Si es el cliente* Basicamente debes aplicar la misma lógica que te describo anteriormente pero desde algo que se ejecute en el cliente osea desde JavaScript, puedes hacer un UC o un EO (GX15 o superior) con Javascript para hacer esta petición vía AJAX y analizas el resultado de igualmanera. Puedes consumir una URL de tu misma aplicación si aparte de internet quieres saber si tu aplicación está disponible. Saludos. Cordialmente. _______________________________ *Hugo Armando Cadena MantillaIngeniero de Sistemas* Colombia On Wed, Nov 20, 2019 at 11:32 AM

demetole

20/11/19 14:33
Gracias Hugo. De hecho tengo el monitoreo del Servicio web, si esta en linea me responde 200, pero que pasa cuando la consulta no fue realizada, lo que se complica es que cuando intento monitorear EL ESTADO DEL SERVIDOR DE LA BASE DE DATOS toma mucho tiempo en responder, esta respuesta deberia enviar en al servicio web indicando que no existe el servicio de la BASE DE DATOS. Ademas cuando el servicio web esta fuera de linea siempre retorna 0. Mi intereses es conocer cuando la BASE DE DATOS esta fuera de linea, alguna idea, ejemplso referencias de como hacerlo, mediante UC EO o GX. Atento en conocer tu respuesta.

hugao118

20/11/19 14:59
Hola Para probar la conexión a la BD alguna vez con Java hice un procedimiento que retorna true o false, /*** * * Testear conexión a la Base de Datos * ***/ &IsCanConnect = False &DBConnection = GetDataStore("Default") &UserName = &DBConnection.UserName.Trim() &UserPass = &DBConnection.UserPassword.Trim() &ClassConnect = &DBConnection.JDBCDriverName.Trim() &StrConnect = &DBConnection.JDBCDriverURL java String STR_CLASS_CONNECTION = [!&ClassConnect!]; java String STR_CONNECTION = [!&StrConnect!]; java String USER = [!&UserName!]; java String PASSWORD = [!&UserPass!]; java try{ java Class.forName(STR_CLASS_CONNECTION); java java.sql.Connection connectionId = java.sql.DriverManager.getConnection(STR_CONNECTION, USER, PASSWORD); java if (connectionId != null) { java [!&IsCanConnect!] = true; java connectionId.close(); java } java }catch(Exception e){} Puede que te sirva Cordialmente. _______________________________ *Hugo Armando Cadena MantillaIngeniero de Sistemas* Colombia On Wed, Nov 20, 2019 at 12:34 PM

demetole

20/11/19 15:24
Estimado Hugo. Gracias, es posible asignar un tiempo de respuesta.

hugao118

20/11/19 15:29
Hola Si, pero depende del motor, tendrías que buscarlo para tu motor, podrías intentar agregando esta linea después de la que dice *Class.forName* java java.sql.DriverManager.setLoginTimeout(##); Donde en ## colocas los segundos que deseas. Esa sería como la generica, pero como te decia busca en particular para tu motor, por ejemplo en mysql no funciona esa linea sino se debe agregar en el string de conexión Saludos. _______________________________ *Hugo Armando Cadena MantillaIngeniero de Sistemas* Colombia On Wed, Nov 20, 2019 at 1:25 PM

demetole

20/11/19 18:23
Estimados. La reglas NoRead y NoCheck, fueron deshabilitadas en las versiones Gx15. Alguna idea de como implementar la no revisión de la intregidad referencial en una transacción, en virtud de que cuando se tiene varias tablas referenciadas su especificación toma tiempo, justamente el aplicar dichas reglas evitaban aquello y se tornaba mas agil su especificación y generación. Atento en conocer sus aportes.


Back to gx-l