Cool! Thanks for the confirmation. On Thu, Nov 6, 2008 at 9:00 AM, Callum Hibbert <[EMAIL PROTECTED]>wrote:
> 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 -~----------~----~----~----~------~----~------~--~---
