Aplicacion distribuida (n capas)

23/05/2006 - 20:35 por AOG | Informe spam
Hola,
Tengo un proyecto en VB 2005 con arquitectura distribuida expongo la capa de
negocio atravez de COM+ (libreria EnterpriseServices). El problema es que
cuando el cliente hace petición a la capa de negocio me da un error:
No pudo realizarse la activación de COM+ ya que ésta no pudo completarse en
el espacio de tiempo especificado. (Excepción de HRESULT: 0x8004E024)

Esto sucede cuando lleno una Grid y hago consecutivamente una petición por
cada fila para obtener el valor de un campo de una tabla (SQL server), es
decir, accedo 133 veces, bueno no llega porque me da el error a los 80 veces
a la capa de negoacio.
El ciclo es: la capa de Interfaz de Usuario llama a la capa de negocio
(Com+) esta a su vez a la de datos, devolviendo el resultado.

He provado a aumentar los valores:
<EnterpriseServices.ObjectPooling(minPoolSize:= 20, maxPoolSize: 00,
CreationTimeout: 000)> _

tambien e quitado de la cabecera de mi clase (capa de negocio)
<EnterpriseServices.ObjectPooling...> y
<EnterpriseServices.JustInTimeActivation()
y nada sigue igual

¿Como puedo evitar este error? , ¿que está sucediendo?

Gracias, un saludo

Preguntas similare

Leer las respuestas

#1 Harvey Triana
23/05/2006 - 20:40 | Informe spam
En el msdn hay una discusión al respecto:
http://forums.microsoft.com/MSDN/Sh...spx?PostID2372&SiteID=1

PS. ¿Debe ser COM+?

<ht />

"AOG" escribió en el mensaje
news:
Hola,
Tengo un proyecto en VB 2005 con arquitectura distribuida expongo la capa
de
negocio atravez de COM+ (libreria EnterpriseServices). El problema es que
cuando el cliente hace petición a la capa de negocio me da un error:
No pudo realizarse la activación de COM+ ya que ésta no pudo completarse
en
el espacio de tiempo especificado. (Excepción de HRESULT: 0x8004E024)

Esto sucede cuando lleno una Grid y hago consecutivamente una petición por
cada fila para obtener el valor de un campo de una tabla (SQL server), es
decir, accedo 133 veces, bueno no llega porque me da el error a los 80
veces
a la capa de negoacio.
El ciclo es: la capa de Interfaz de Usuario llama a la capa de negocio
(Com+) esta a su vez a la de datos, devolviendo el resultado.

He provado a aumentar los valores:
<EnterpriseServices.ObjectPooling(minPoolSize:= 20, maxPoolSize: 00,
CreationTimeout: 000)> _

tambien e quitado de la cabecera de mi clase (capa de negocio)
<EnterpriseServices.ObjectPooling...> y
<EnterpriseServices.JustInTimeActivation()
y nada sigue igual

¿Como puedo evitar este error? , ¿que está sucediendo?

Gracias, un saludo


Respuesta Responder a este mensaje
#2 Carlos Gómez
23/05/2006 - 23:18 | Informe spam
Mira a ver si estas cerrando las conexiones o creando una nueva conexion
cada vez y es por eso que el programa falle
Desde Aguadulce - España
Carlos Gomez
Respuesta Responder a este mensaje
#3 AOG
24/05/2006 - 00:43 | Informe spam
hola carlos, si que cierro la conexion cuando termino de la consulta y vuelvo
a crear una nueva cuando vuelvo a acceder a la capa de datos. No es mejor asi
para descargar recursos?

Un saludo.

"Carlos Gómez" escribió:

Mira a ver si estas cerrando las conexiones o creando una nueva conexion
cada vez y es por eso que el programa falle
Desde Aguadulce - España
Carlos Gomez

Respuesta Responder a este mensaje
#4 Developers - Dany Acosta
24/05/2006 - 03:38 | Informe spam
Tu Componente lo destruyes correctamente???...



AOG escribió:
Hola,
Tengo un proyecto en VB 2005 con arquitectura distribuida expongo la capa de
negocio atravez de COM+ (libreria EnterpriseServices). El problema es que
cuando el cliente hace petición a la capa de negocio me da un error:
No pudo realizarse la activación de COM+ ya que ésta no pudo completarse en
el espacio de tiempo especificado. (Excepción de HRESULT: 0x8004E024)

Esto sucede cuando lleno una Grid y hago consecutivamente una petición por
cada fila para obtener el valor de un campo de una tabla (SQL server), es
decir, accedo 133 veces, bueno no llega porque me da el error a los 80 veces
a la capa de negoacio.
El ciclo es: la capa de Interfaz de Usuario llama a la capa de negocio
(Com+) esta a su vez a la de datos, devolviendo el resultado.

He provado a aumentar los valores:
<EnterpriseServices.ObjectPooling(minPoolSize:= 20, maxPoolSize: 00,
CreationTimeout: 000)> _

tambien e quitado de la cabecera de mi clase (capa de negocio)
<EnterpriseServices.ObjectPooling...> y
<EnterpriseServices.JustInTimeActivation()
y nada sigue igual

¿Como puedo evitar este error? , ¿que está sucediendo?

Gracias, un saludo


Respuesta Responder a este mensaje
#5 AOG
24/05/2006 - 09:45 | Informe spam
Hola Dany,
yo lo que hago es que en el metodo Protected Overrides Sub Finalize() de la
clase (capa de negocio) he implenentado:

Protected Overrides Sub Finalize()
_MantemimientoAD = Nothing
MyBase.Finalize()
End Sub

donde _MantemimientoAD es la instancio de la cla acceso a datos que destruye
a este que es donde hace la conexión y demas operaciones de acceso a datos. Y

En la clase que llama a la capa de negocio:

Public Function Buscar(ByVal BaseDatos As String, ByVal NombreTabla As
String, ByVal Condicion As String) As Data.DataSet
GestionCabeceraSOAP.Autenticacion(Me.HeaderUsuarioValue)
Dim oMatemiCN As MantemimientoCN = GetOMantemiCN()
Dim dt As DataSet = oMatemiCN.Buscar(BaseDatos, NombreTabla,
Condicion)
oMatemiCN.Dispose() 'Destruyo la instancia capa negocio
Return dt
End Function

Esto es lo que hago

Un saludo


"Developers - Dany Acosta" escribió:

Tu Componente lo destruyes correctamente???...



AOG escribió:
> Hola,
> Tengo un proyecto en VB 2005 con arquitectura distribuida expongo la capa de
> negocio atravez de COM+ (libreria EnterpriseServices). El problema es que
> cuando el cliente hace petición a la capa de negocio me da un error:
> No pudo realizarse la activación de COM+ ya que ésta no pudo completarse en
> el espacio de tiempo especificado. (Excepción de HRESULT: 0x8004E024)
>
> Esto sucede cuando lleno una Grid y hago consecutivamente una petición por
> cada fila para obtener el valor de un campo de una tabla (SQL server), es
> decir, accedo 133 veces, bueno no llega porque me da el error a los 80 veces
> a la capa de negoacio.
> El ciclo es: la capa de Interfaz de Usuario llama a la capa de negocio
> (Com+) esta a su vez a la de datos, devolviendo el resultado.
>
> He provado a aumentar los valores:
> <EnterpriseServices.ObjectPooling(minPoolSize:= 20, maxPoolSize: 00,
> CreationTimeout: 000)> _
>
> tambien e quitado de la cabecera de mi clase (capa de negocio)
> <EnterpriseServices.ObjectPooling...> y
> <EnterpriseServices.JustInTimeActivation()
> y nada sigue igual
>
> ¿Como puedo evitar este error? , ¿que está sucediendo?
>
> Gracias, un saludo
>
>

Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida