Limit number of COM+ sessions

  • Thread starter Thread starter Remote_User
  • Start date Start date
R

Remote_User

Hi All,
I have my ASP.NET application hosted in COM+ and I have my
client app. Is there any way I can limit the number os sessions? Say,
I have 5 client requests and they instantiate 5 COM+ sessions on the
server and on the 6th one I want that to get blocked and tell the user
that the server is busy pls try later or something like that.
Can this be done? I am on .NET FW1.1.

Thanks !
 
You can't do this on the app level, but you can do it on the component
level. You would configure your component to use object pooling, setting
the maximum size of the pool to 5. Then, when the 6th request comes in, it
will block until an object is ready to be used from the pool.

Of course, you have to be careful, depending on what other services that
you are applying to your components, object pooling might not make sense.
 
Hi Nicholas,
Thank you for the post. I am not able to find the
Object Pooling property for my component. There will be difference
when compared to Win2000 and XP I believe?

Thanks.

    You can't do this on the app level, but you can do it on the component
level.  You would configure your component to use object pooling, setting
the maximum size of the pool to 5.  Then, when the 6th request comes in,it
will block until an object is ready to be used from the pool.

    Of course, you have to be careful, depending on what other services that
you are applying to your components, object pooling might not make sense.

--
          - Nicholas Paldino [.NET/C# MVP]
          - (e-mail address removed)




Hi All,
        I have my ASP.NET application hosted in COM+ and I have my
client app. Is there any way I can limit the number os sessions? Say,
I have 5 client requests and they instantiate 5 COM+ sessions on the
server and on the 6th one I want that to get blocked and tell the user
that the server is busy pls try later or something like that.
        Can this be done? I am on .NET FW1.1.
Thanks !- Hide quoted text -

- Show quoted text -
 
What kind of component is this? Only "Server" type COM+ components can be
pooled.

Willy.


Hi Nicholas,
Thank you for the post. I am not able to find the
Object Pooling property for my component. There will be difference
when compared to Win2000 and XP I believe?

Thanks.

You can't do this on the app level, but you can do it on the component
level. You would configure your component to use object pooling, setting
the maximum size of the pool to 5. Then, when the 6th request comes in, it
will block until an object is ready to be used from the pool.

Of course, you have to be careful, depending on what other services that
you are applying to your components, object pooling might not make sense.

--
- Nicholas Paldino [.NET/C# MVP]
- (e-mail address removed)




Hi All,
I have my ASP.NET application hosted in COM+ and I have my
client app. Is there any way I can limit the number os sessions? Say,
I have 5 client requests and they instantiate 5 COM+ sessions on the
server and on the 6th one I want that to get blocked and tell the user
that the server is busy pls try later or something like that.
Can this be done? I am on .NET FW1.1.
Thanks !- Hide quoted text -

- Show quoted text -
 
Are you looking in the Component Services Manager, or are you trying to
do this through code?


--
- Nicholas Paldino [.NET/C# MVP]
- (e-mail address removed)


Hi Nicholas,
Thank you for the post. I am not able to find the
Object Pooling property for my component. There will be difference
when compared to Win2000 and XP I believe?

Thanks.

You can't do this on the app level, but you can do it on the component
level. You would configure your component to use object pooling, setting
the maximum size of the pool to 5. Then, when the 6th request comes in, it
will block until an object is ready to be used from the pool.

Of course, you have to be careful, depending on what other services that
you are applying to your components, object pooling might not make sense.

--
- Nicholas Paldino [.NET/C# MVP]
- (e-mail address removed)




Hi All,
I have my ASP.NET application hosted in COM+ and I have my
client app. Is there any way I can limit the number os sessions? Say,
I have 5 client requests and they instantiate 5 COM+ sessions on the
server and on the 6th one I want that to get blocked and tell the user
that the server is busy pls try later or something like that.
Can this be done? I am on .NET FW1.1.
Thanks !- Hide quoted text -

- Show quoted text -
 
Hi Willy,
Yes, this will be on the server side component.

Nicholas,
I am trying to see if there are any configuration
settings available through the Component Services Manager.

Thanks.
 
Hi Willy,
Yes, this will be on the server side component.

Server side? I 'm talking about the activation option, COM+ know two kind of
activation types "Server" and "Library". Server means that the component is
hosted in a separate process, Library means that it is instantiated in your
own (the client) process.
You configure your component to run as Server or as Library by applying the
ApplicationActivation attribute at the assembly level [1].
Only Server types can be pooled, object pooling can be configured by
applying the ObjectPooling attribute to your type[2].

[1]
[assembly: ApplicationActivation(ActivationOption.Server)]

[2]
[JustInTimeActivation]
[ObjectPooling(Enabled=true, MinPoolSize=1, MaxPoolSize=5,
CreationTimeout=10000)]
public class ....

.....

Attributes of the COM+ component that can be viewed (and configured) by
means of dcomcnfg.msc.

Willy.
 
Willy,
Yes, the activation type is "Server application".

Thanks a lot for the suggestions ! Will try them out.


Thanks.


Hi Willy,
            Yes, this will be on the server side component.

Server side? I 'm talking about the activation option, COM+ know two kind of
activation types "Server" and "Library". Server means that the component is
hosted in a separate process, Library means that it is instantiated in your
own (the client) process.
You configure your component to run as Server or as Library by applying the
ApplicationActivation attribute at the assembly level [1].
Only Server types can be pooled, object pooling can be configured by
applying the ObjectPooling attribute to your type[2].

[1]
[assembly: ApplicationActivation(ActivationOption.Server)]

[2]
[JustInTimeActivation]
    [ObjectPooling(Enabled=true, MinPoolSize=1, MaxPoolSize=5,
CreationTimeout=10000)]
public class ....

....

Attributes of the COM+ component that can be viewed (and configured) by
means of dcomcnfg.msc.

Willy.

What kind of component is this? Only "Server" type COM+ components can be
pooled.

news:efb7f267-278b-4bf3-84a3-14aa69622c5d@s13g2000prd.googlegroups.com...

Hi Nicholas,
Thank you for the post. I am not able to find the
Object Pooling property for my component. There will be difference
when compared to Win2000 and XP I believe?
You can't do this on the app level, but you can do it on the component
level. You would configure your component to use object pooling, setting
the maximum size of the pool to 5. Then, when the 6th request comes in,
it
will block until an object is ready to be used from the pool.
Of course, you have to be careful, depending on what other services that
you are applying to your components, object pooling might not make
sense.
--
- Nicholas Paldino [.NET/C# MVP]
- (e-mail address removed)

Hi All,
I have my ASP.NET application hosted in COM+ and I have my
client app. Is there any way I can limit the number os sessions? Say,
I have 5 client requests and they instantiate 5 COM+ sessions on the
server and on the 6th one I want that to get blocked and tell the user
that the server is busy pls try later or something like that.
Can this be done? I am on .NET FW1.1.
Thanks !- Hide quoted text -
- Show quoted text -- Hide quoted text -
- Show quoted text -- Hide quoted text -

- Show quoted text -
 
Hi,
I changed the Max Pool size to 1 through the Component Services
panel just to check and tried initiating the component from 2
different clients but it gave me this error - "COM+ activation failed
because the component could not be activated in the specified amount
of time".
Also I had one more question if I set the Max Pool Size to 5 and a
6th call comes in what will the end user see or what is expected to
happen?


Thanks for your suggestions.


Willy,
         Yes, the activation type is "Server application".

         Thanks a lot for the suggestions ! Will try them out.

Thanks.

"Remote_User" <[email protected]> wrote in message
Hi Willy,
            Yes, this will be on the server side component.
Server side? I 'm talking about the activation option,COM+know two kind of
activation types "Server" and "Library". Server means that the componentis
hosted in a separate process, Library means that it is instantiated in your
own (the client) process.
You configure your component to run as Server or as Library by applying the
ApplicationActivation attribute at the assembly level [1].
Only Server types can be pooled, object pooling can be configured by
applying the ObjectPooling attribute to your type[2].
[1]
[assembly: ApplicationActivation(ActivationOption.Server)]
[2]
[JustInTimeActivation]
    [ObjectPooling(Enabled=true, MinPoolSize=1, MaxPoolSize=5,
CreationTimeout=10000)]
public class ....

Attributes of theCOM+component that can be viewed (and configured) by
means of dcomcnfg.msc.
What kind of component is this? Only "Server" typeCOM+components can be
pooled.
Willy.

Hi Nicholas,
Thank you for the post. I am not able to find the
Object Pooling property for my component. There will be difference
when compared to Win2000 and XP I believe?
Thanks.
On Feb 20, 9:54 pm, "Nicholas Paldino [.NET/C# MVP]"
You can't do this on the app level, but you can do it on the component
level. You would configure your component to use object pooling, setting
the maximum size of the pool to 5. Then, when the 6th request comes in,
it
will block until an object is ready to be used from the pool.
Of course, you have to be careful, depending on what other services that
you are applying to your components, object pooling might not make
sense.
--
- Nicholas Paldino [.NET/C# MVP]
- (e-mail address removed)

Hi All,
I have my ASP.NET application hosted inCOM+and I have my
client app. Is there any way I canlimitthe number os sessions? Say,
I have 5 client requests and they instantiate 5COM+sessions on the
server and on the 6th one I want that to get blocked and tell the user
that the server is busy pls try later or something like that.
Can this be done? I am on .NET FW1.1.
Thanks !- Hide quoted text -
- Show quoted text -- Hide quoted text -
- Show quoted text -- Hide quoted text -
- Show quoted text -- Hide quoted text -

- Show quoted text -
 
Hi,
I changed the Max Pool size to 1 through the Component Services
panel just to check and tried initiating the component from 2
different clients but it gave me this error - "COM+ activation failed
because the component could not be activated in the specified amount
of time".
Also I had one more question if I set the Max Pool Size to 5 and a
6th call comes in what will the end user see or what is expected to
happen?

This client will get:
"COM+ activation failed because the component could not be activated in the
specified amount of time".

If you already have 5 activated objects running, then you can't create a
6th, unless one of the active objects was released to the pool while waiting
for the time-out period, specified by the "CreationTimeout" attribute.

Willy.
 
Hi,
So I can try this then?

- Catch this exception and display a user-friendly message
- Have an optimum timeout value so that the (n+1) th call can be
serviced if any of the earlier object is released back to the pool.

Thanks.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Back
Top