COM con System.EnterpriseServices.ServicedComponent

12/10/2004 - 17:19 por Jaimito | Informe spam
Hola compañeros...

Tengo una clase que hereda de System.EnterpriseServices.ServicedComponent,
esta clase se llama Manager y tiene algunas propiedades y un método (entre
otros) que utilizo para escribir hacer actualización e inserciones en una
base de datos. La clase Manager la idea es crearla transaccional con MTS y de
ahí el motivo de la herencia de ServicedComponent.

El método que se invoca para las actualizaciones e inserciones se llama Save.

Coloco un pequeño fragmento de código donde implemento la clase.

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Dim om As Manager

om = New Manager()

'configuro algunas propiedades
om.Propiedad1 = "Algo1"
om.Propiedad2 = "Algo2"
om.Propiedad3 = "Algo3"

'llamo al método para insertar información
'el método Save llama internamente a ContextUtil.SetComplete(), tras haber
'realizado cualquier actualización o inserción en la base de datos; esto no
tiene
'problema alguno, no hay inconvenientes
om.Save()

'AQUÍ!!!!!! tengo el problema
MsgBox( om.Propiedad1 )

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
En la línea del MsgBox se presenta algo que nunca había presenciado, y es
que la instancia om de la clase Manager se pierde, es decir, se vuelve a
crear un nuevo objeto o instancia de la clase Manager. Para el ejemplo
anterior, el MsgBox muestra que Propiedad1 está vacía o en blanco, cuando no
debería ser así puesto que anteriormente le había asignado "Algo1".

La clase Manager cumple con la finalidad de procesar las transacciones con
MTS, es decir, si actualizo o inserto algo en la base de datos y luego llamo
a ContextUtil.SetAbort() se hace el Rollback esperado; y si se llama
ContextUtil.SetComplete() se hace el Commit esperado. El problema radica en
que se pierde la instancia que tengo y se crea otra.

¿Este es siempre el comportamiento cuando se trabaja en .NET con COM?
¿Es posible cambiar el comportamiento?

Les agradezco su oportuna respuesta.

Preguntas similare

Leer las respuestas

#1 SqlRanger
12/10/2004 - 20:52 | Informe spam
No hace falta que vuelvas a repetir la pregunta. Ya te contesté la primera
vez

Saludos

Jesús López
MVP
Respuesta Responder a este mensaje
#2 Jaimito
13/10/2004 - 02:55 | Informe spam
Eso no es lo que te pregunte , tu no sabes asi que
callate y no jodas .
Y pregunto todo lo que me de la gana.


Gracias..


No hace falta que vuelvas a repetir la pregunta. Ya te


contesté la primera
vez

Saludos

Jesús López
MVP


.

Respuesta Responder a este mensaje
#3 Jorge Serrano [MVP VB]
13/10/2004 - 08:00 | Informe spam
Hola Jaimito,

con contestaciones de este tipo, no se llega a ningún sitio.

Supongo que Jesús ha hecho un comentario constructivo y lógico, ya que tu
mensaje ha aparecido 3 veces seguidas. No te lo tomes a mal.
Por supuesto que cada uno pregunta lo que quiere, pero su comentario era por
la reiteración del mensaje, algo que igual tampoco ha sido culpa tuya y sí
del servidor.

Dejemos el tema ahí y no entremos en una batalla personal por favor.

Un saludo,

Jorge Serrano Pérez
Microsoft MVP VB.NET
PortalVB.com
http://www.portalvb.com/
Weblog de Jorge Serrano
http://weblogs.golemproject.com/jorge/
No te olvides de:
http://www.microsoft.com/spanish/ms...des/vbnet/

Frase: "Si le das pescado a un hombre hambriento, le nutres durante una
jornada. Si le enseñas a pescar, le nutrirás toda su vida." Lao-Tsé - 600 AC
[aprox]


"Jaimito" escribió en el mensaje
news:01ef01c4b0bf$45d86c30$
Eso no es lo que te pregunte , tu no sabes asi que
callate y no jodas .
Y pregunto todo lo que me de la gana.


Gracias..


No hace falta que vuelvas a repetir la pregunta. Ya te


contesté la primera
vez

Saludos

Jesús López
MVP


.

Respuesta Responder a este mensaje
#4 SqlRanger
13/10/2004 - 08:10 | Informe spam
Es verdad que puedes preguntar todo lo que te dé la gana, pero es la misma
pregunta y ya la he contestado. Si no te sirvió la respuesta, deberías
responder a mi respuesta y decirlo.

También puedes ser todo lo mal educado que quieras, sin embargo eso sólo te
llevará a que nadie quiera responder a tus preguntas.

Saludos:

Jesús López
MVP
Respuesta Responder a este mensaje
#5 SqlRanger
13/10/2004 - 10:22 | Informe spam
Jorge,

Jaimito ha hecho la pregunta cuatro hilos más abajo y se la he respondido.
El problema que tiene es que su objeto COM+ pierde el estado en cada
llamada. Eso es debido a que está configurado para JustInTimeActivation, eso
significa que en cada llamada a un método el objeto se crea y se destruye,
con lo que el estado se pierde. El objeto de desactiva en varias
circustancias, una de ellas, la más común es si los métodos tienen el
atributo <AutoComplete()>, pero puede haber otras, como por ejemplo si en el
método se llama a SetComplete() a SetAbort() y
ContextUtil.DeactivateOnReturn = true.

Parece ser que el señor Jaimito ha leído mi respuesta y ha pensado que no
tenía nada que ver con lo que le está pasando, pero eso es exáctamente lo
que le está pasando y en vez de decir que le parece que mi respuesta no
tiene sentido, la vuelve a poner para ver si alguien le responde, y cuando
le digo que ya está respondida, reacciona como un mal educado.

Saludos

Jesús López
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida