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