Chaps,

A call to "Kernel.ReleaseComponent" did the trick with Transient clients and
having the system under load. I don't see any bugs with regards to releasing
connections.

I haven't tested having a Singleton lifestyle without a call to
"Kernel.ReleaseComponent" but I assume that would work fine.

Thanks for all your help.

Regards,

Callum



On Wed, Nov 5, 2008 at 6:20 PM, Craig Neuwirt <[EMAIL PROTECTED]> wrote:

> Sure.  Let me know how it turns out.  If it doesn't release connections,
> its possibly a bug somewhere.
>
>
> On Wed, Nov 5, 2008 at 12:14 PM, Callum Hibbert <[EMAIL PROTECTED]>wrote:
>
>> I'll give this a try.
>>
>> Many thanks,
>>
>> Callum
>>
>>
>>
>> On Wed, Nov 5, 2008 at 6:05 PM, Craig Neuwirt <[EMAIL PROTECTED]> wrote:
>>
>>> Yes, doing Kernel.ReleaseComponent should work
>>>
>>>
>>> On Wed, Nov 5, 2008 at 12:02 PM, Ayende Rahien <[EMAIL PROTECTED]>wrote:
>>>
>>>> Craig, I think we should be able to dispose of the client proxies no?
>>>>
>>>>
>>>> On Wed, Nov 5, 2008 at 7:59 PM, Callum Hibbert <
>>>> [EMAIL PROTECTED]> wrote:
>>>>
>>>>> Oren - I already trieid that and I cannot cast to IDisposable. I get an
>>>>> InvalidCastException.
>>>>>
>>>>> Craig - I think I can work with that in my situation but if I had the
>>>>> scenario where I have more than 10 clients I would experience the same
>>>>> problem. If the clients are transient then I am always going to have one
>>>>> open connection per client. I am not very comfortable with upping the 
>>>>> number
>>>>> of allowed connections, as per above, it would be hiding the underlying
>>>>> issue.
>>>>>
>>>>> Thanks,
>>>>>
>>>>> Callum
>>>>>
>>>>>   On Wed, Nov 5, 2008 at 5:54 PM, Craig Neuwirt <[EMAIL PROTECTED]>wrote:
>>>>>
>>>>>> I usually make my clients singleton.  They can be called from many
>>>>>> threads.
>>>>>>
>>>>>>
>>>>>> On Wed, Nov 5, 2008 at 11:38 AM, Callum Hibbert <
>>>>>> [EMAIL PROTECTED]> wrote:
>>>>>>
>>>>>>> Craig - I think it was you who did some (most? all?) of the work on
>>>>>>> the WCF integration, are you saying the client shouldn't be transient 
>>>>>>> (in
>>>>>>> most cases)?
>>>>>>>
>>>>>>> Oren - I only have a reference to "IMyWcfService" which does not
>>>>>>> implement IDisposable. This is the same interface as the server-side 
>>>>>>> service
>>>>>>> and it is my understanding that this should not implement IDisposable. 
>>>>>>> So
>>>>>>> how can I close the service? I thought Castle would clean this up for 
>>>>>>> me.
>>>>>>> Please advise if otherwise. I can't dispose the COM component myself, I 
>>>>>>> have
>>>>>>> to trust the 3rd party application does this as it is that which
>>>>>>> instantiates my plugin (no source code for that).
>>>>>>>
>>>>>>> Germán - I am working from the trunk but I have not encountered this
>>>>>>> issue before and I use this Facility alot.
>>>>>>>
>>>>>>> Thanks,
>>>>>>>
>>>>>>> Callum
>>>>>>>
>>>>>>>
>>>>>>> On Wed, Nov 5, 2008 at 5:28 PM, Germán Schuager <[EMAIL PROTECTED]
>>>>>>> > wrote:
>>>>>>>
>>>>>>>> Are you running from the trunk?
>>>>>>>> Apparently a bug was introduced that makes the container hold
>>>>>>>> references to transient components, thus preventing correct disposal.
>>>>>>>>
>>>>>>>>
>>>>>>>> http://support.castleproject.org/projects/IOC/issues/view/IOC-ISSUE-132
>>>>>>>>
>>>>>>>>  On Wed, Nov 5, 2008 at 2:10 PM, Callum Hibbert <
>>>>>>>> [EMAIL PROTECTED]> wrote:
>>>>>>>>
>>>>>>>>> Hello,
>>>>>>>>>
>>>>>>>>> I am using a third party product for which I have written a plugin.
>>>>>>>>> My plugin is executed using COM, so I have something like this (very 
>>>>>>>>> simple
>>>>>>>>> example):
>>>>>>>>>
>>>>>>>>>     [Guid("my-guid")]
>>>>>>>>>     [ClassInterface(ClassInterfaceType.None)]
>>>>>>>>>     [ProgId("myProgId")]
>>>>>>>>>     [ComVisible(true)]
>>>>>>>>>     public class MyPlugin : ICustomActivity
>>>>>>>>>     {
>>>>>>>>>         private readonly IMyWcfService service;
>>>>>>>>>
>>>>>>>>>         public MyPlugin()
>>>>>>>>>         {
>>>>>>>>>                 service = Container.Resolve<IMyWcfService>();
>>>>>>>>>         }
>>>>>>>>>
>>>>>>>>>         public string Execute(string xml) // This is the
>>>>>>>>> ICustomActivity implementation
>>>>>>>>>         {
>>>>>>>>>                 string response = service.DoSomething();
>>>>>>>>>                 return message;
>>>>>>>>>         }
>>>>>>>>>     }
>>>>>>>>>
>>>>>>>>> "Container" is a very simple wrapper around WindsorContainer. I am
>>>>>>>>> using the WCF Integration facility so the "service" object is a WCF 
>>>>>>>>> service
>>>>>>>>> proxy/client. I have marked the object as transient, for example:
>>>>>>>>>
>>>>>>>>> <castle>
>>>>>>>>>     <components>
>>>>>>>>>         <component
>>>>>>>>>             id="IMyWcfService"
>>>>>>>>>             type="Company.Product.IMyWcfService, Company.Product"
>>>>>>>>>
>>>>>>>>> wcfEndpointConfiguration="MyWcfServiceClientEndpointConfig"
>>>>>>>>>             lifestyle="transient" />
>>>>>>>>>     </components>
>>>>>>>>> </castle>
>>>>>>>>>
>>>>>>>>> My problem is that the "service" client is not being closed. If I
>>>>>>>>> run my application under load, I hit the maximum 10 open connections 
>>>>>>>>> and
>>>>>>>>> then start to get errors for subsequent connections. I am unwilling to
>>>>>>>>> configure an increase in the number of allowed connections because 
>>>>>>>>> this
>>>>>>>>> would be hiding the underlying problem.
>>>>>>>>>
>>>>>>>>> I have used Castle's WCF Integration on a lot of projects before
>>>>>>>>> and I have not experienced this problem, though this is the first 
>>>>>>>>> time COM
>>>>>>>>> has ben thrown into the mix.
>>>>>>>>>
>>>>>>>>> Obviously, I have no hook to IDisposable. IMyWcfService does not
>>>>>>>>> implement IDisposable (and imy understanding is that you should never 
>>>>>>>>> do
>>>>>>>>> that). Also, I cannot cast the proxy to IDisposable as a work around.
>>>>>>>>>
>>>>>>>>> Can anyone shed any light on what the problem might be? Is this
>>>>>>>>> something to do with the fact that the plugin is called via COM and 
>>>>>>>>> is not
>>>>>>>>> disposed of correctly? How can I ensure the client is closed and 
>>>>>>>>> disposed
>>>>>>>>> properly (and in a timely manner)?
>>>>>>>>>
>>>>>>>>> Any help or pointers greatly appreciated.
>>>>>>>>>
>>>>>>>>> Thanks,
>>>>>>>>>
>>>>>>>>> Callum
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>>
>>
>>
>>
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Castle Project Users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/castle-project-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to