![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Mantener Id Session DataSnap
Buen día.
Estoy manejando una aplicación cliente/servidor con la tecnología DataSnap, requiero que cuando se conecte el cliente el ID de la session se mantenga hasta que cierra completamente la aplicación, leyendo los ciclos de vida del server http://docwiki.embarcadero.com/RADSt...lass_LifeCycle establecí mi server en session y en cada invocación se me modifica el id de la session del cliente, y requiero que no se modifique el id de la session hasta que el cliente se salga. Gracias. |
#2
|
||||
|
||||
DataSnap varios clientes conectados a distintas db por un mismo servicio
Buen dia
Tengo una duda, es posible conectar de forma dinamica varios clientes que acceden a distintas bases de datos por un mismo servicio en datasnap. De antemano muchas gracias. https://www.clubdelphi.com/foros/showthread.php?t=93037 Última edición por Casimiro Notevi fecha: 07-05-2018 a las 19:46:30. Razón: ¡! |
#3
|
||||
|
||||
Buen día Soa,
Bien ha hecho Casimiro en hacerte seguimiento con los hilos que has creado respecto al mismo tema, ya en uno de esos hilos te habia mostrado un enlace muy bueno que hablaba de los LifeCycles de DataSnap y creo que allí está muy claro lo que necesitas. Pero como no hemos visto código tuyo o algo que nos ayude a indicar donde está el error pues nos toca a nosotros suponer y hacer la tarea... (Lo digo de la forma mas amistosa) Creo que tu problema es el lugar donde este ubicando tus componentes de base de datos y la clave está en el componente TServerMethods, asi: Del lado del server: =============== *) Create tu servidor normal. *) Tienes un ServerMethodsUnit y Un ServerContainerUnit, el primero tiene la clase y la funcionalidad que vas a exportar y el segundo tiene los componentes de conexión y transporte (normal) *) Verifica que en el SeverContainer tu componente DSServerClass1 tenga la propiedad LifeCycle = 'Session' (ese es el valor por defecto). *) En algún lugar de tu programa debes tener tus componentes de BD. Para este caso, yo creo un TDataModule, y ahi ubico mi componente Connection y mi componente Query. Configuras y pruebas la conexión (Normal) *) Volvemos al serverMehds y allí creamos una variable de tipo TDatamule que acabas de crear. *) Defines el constructor y el destructor heredados del TServerMethods y creas dos funciones, una es para Conectar a la BD, y le vas a pasar como parámetro el ID de la BD que quieras.. tu defines como identifias tus BDs, la otra función es para probar la conexión trayendo una consulta: (Y utilizo los componentes UniDac)
En el cliente: ========== *) Tengo un memo para escribir mensajes *) un grid, un clientdataset (que recibe la consulta del server enviada como XML), el datasource por supuesto *) tres botones: "getId", para traer el Id de la sesion (no es relevante), "Conectar", en donde enviamos el parametro para configurar y conectar la DB y "consultar" para traer la consulta del server (No Utilizo el DSProviderConnection paar simplificar el tema)
y ya.. despues de eso obtines lo que quieres... el punto es que el ServerMethods es el componente que se aisla y todo loq ue se defina ahi se va a comportar dependiendo de LifeCycle que definas (Servr, Session o invocación) y cuando recuerde como subir una imagen al foro, te adjunto el resultado de mi prueba... editado: aqui la imagen Saludo, Última edición por gatosoft fecha: 09-05-2018 a las 05:45:30. Razón: se agrega el link de la imagen |
#4
|
||||
|
||||
Como te habìa comentado en otro hilo, al no tener parte de tu codigo no podemos mas que suponer...
En el hilo que te comento, te presenté un ejemplo que hice para el problema que tenias con la conexión a BD, que es exactamente el mismo problema que debes estar teniendo con tu ID de session. No veo como te puede fallar si haces lo mismo que se hace en el artítulo de embarcadero que mencionas.... El quid, está dejar las variables en el TServerMethods... y configurar el DSServerClass como indicas LifeCycle = Session... si no te funciona, déjanos ver tu código para poderte ayudar mejor saludo, |
#5
|
||||
|
||||
Gracias [gatosoft] si con el ejemplo que me habías compartido https://community.embarcadero.com/ar...hods-lifecycle logre realizar lo que necesitaba, solo quería saber si lo que estaba intentando hacer era lo viable o había otra manera, igual ese ejemplo que colocas esta bueno para alguien mas que lo necesite.
Muchas gracias. |
#6
|
||||
|
||||
Cita:
|
#7
|
||||
|
||||
Cita:
Habría que ver un ejemplo de lo que hablas... ¿dices que ingresas a dos bases distintas, pero al hacer una transacción ambos programas retornan la misma información? (¿te refieres a ejecutar un ExceSQL, o a un startTransacction?, o a qué?). Necesitamos código ejemplo |
#8
|
||||
|
||||
Cita:
dos pierde el registro e igual no retorna el número.
|
#9
|
||||
|
||||
Cita:
|
#10
|
||||
|
||||
Pareciera que no has solucionado tu error original. Me queda una duda:
1) A y B apuntan a bases de datos separadas (de acuerdo a un post anterior) 2) Cuando guardas A y B al mismo tiempo se pierde uno de los registros, y se mezclan los datos. ¿cuando ejecutas A y B por separado puedes verificar que los datos se guarden en BDs diferentes? Sigo creyendo que el problema está en el lugar donde defines tus variables (Fuera del ClassMethods tal vez) por lo que puedes estar compartiendo recursos entre servidores. ¿donde defines la conexión?, en un dtm externo... está bien, pero recuerda que tu classMethods debe trabajar su propia instancia.... |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Conexion a distintas db desde un mismo servicio | Soa Pelaez | Varios | 0 | 24-04-2018 16:56:08 |
Usuarios conectados a DataSnap | mjjj | Providers | 0 | 12-11-2013 19:59:24 |
Actualizacion de Clientes en app. multicapa con DataSnap | David Jiménez | Conexión con bases de datos | 3 | 27-12-2012 18:41:52 |
Como Obtener un Listado de Clientes conectados a FIREBIRD???? | AGAG4 | Firebird e Interbase | 2 | 24-04-2006 20:58:43 |
Es Posible que 2 ó más Clientes Bloqueen 1 Registro al mismo tiempo???? | AGAG4 | Conexión con bases de datos | 0 | 06-01-2006 00:28:13 |
![]() |
|