FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Corrección clara!
__________________
El malabarista. |
#2
|
||||
|
||||
Sin embargo y aunque estoy de acuerdo con lo que plantea mamcx incluida la aclaración de Agustín, hay algo aquí que no me suena y es el hecho que Andres diga que se "mezclen" las transacciones. Pues si estás usando DataSnap para crear dicho servidor, ese no debería ser un problema ya que él crea un Hilo por cada petición que se le hace, lo cual crearía una instancia de dicha conexión para cada una de tus peticiones.
Claro, asumiendo que estás usando DataSnap... la única cosa que se me ocurre... generaría tal comportamiento, sea que el LifeCycle de la clase publicada en tu modulo Container sea de tipo Server y no Invocation o Session... lo cual parece ser el caso que requieres. Ahora bien, la solución puede que sea cambiar dicha propiedad, sin embargo debes plantear el cambio de esquema en tus WS de "state-full" a "state-less" como plantea mamcx.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!" http://www.purodelphi.com/ http://www.nosolodelphi.com/ |
#3
|
||||
|
||||
No se como tendra configurado el server. Yo solo se que lo que controla esa propiedad es el tiempo de vida de las DSServerClass, osea de lo que el IDE te genera como TServerMethods1
Si no me falla la memoria el DataModule va aparte del TServerMethods Las DSServerClass basicamente reciben una referencia a una clase descendiente de TPersistent, osea una TPersistentClass, y lo que hacen es crear una instancia de dicha clase para exponer al cliente |
#4
|
|||
|
|||
Por el momento lo resolví de la siguiente forma:
En el WebModule declaro una variable en threadvar del tipo TwsDataModule. Luego en el evento BeforeDispatch instancio esta variable con mi dataModule (TwsDataModule) que tiene las conexiones. Posteriormente en el evento AfterDispatch realizo un freeAndNil de esta variable. De esta forma logro que por cada invocación a mi W.S., se cree un dataModule con las conexiones que utilizarán en esa petición, y cada conexión puede tener una transacción distinta. |
#5
|
||||
|
||||
No hombre, esa no es la forma correcta.
No intentes de hackear las cosas. USa la forma correcta de programar de acuerdo al caso, no el torcer la que usas para que se le parezca. La mejor optimizacion es a nivel de arquitectura.
__________________
El malabarista. |
#6
|
|||
|
|||
MAMCX, no estoy intentando hackear nada!!
No existe una única solución para resolver un problemas, si lo resolví de esta forma fue porque no supe como hacerlo de otra, y si estoy escribiendo en este foro es para que alguien pueda enseñarme como se debe hacer. Revise el link que me compartiste, y no entiendo como funcionaría seteando la propiedad Connection Pooling de mi SQLCOnnection, ¿cuantas conexiones se crean y en que momento? ¿Cada invocación a mi W.S. crea automáticamente una conexión? ¿Como luego creo una transacción en una de las conexiones existentes? De la forma que describí funciona según lo que esperado, si existe una mejor forma desconozco (de lo contrario no estaría escribiendo este hilo), si me la puedes explicar claramente estaré agradecido. |
#7
|
||||
|
||||
El término hack hace referencia a que estás aplicando una solución que no es la mejor; te estás disparando en el pie. Que veas que aparentemente funciona no quiere decir que este bien
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Manejo de transacciones | StartKill | MS SQL Server | 7 | 23-09-2008 21:46:53 |
Manejo de transacciones en SQL server | look | SQL | 6 | 21-08-2008 17:27:17 |
error en manejo de transacciones | JODELSA | Varios | 1 | 11-07-2005 16:50:56 |
Manejo de Transacciones | takeo | Conexión con bases de datos | 0 | 01-12-2004 05:29:53 |
Manejo de Transacciones | senpiterno | Conexión con bases de datos | 1 | 08-10-2004 15:05:34 |
|