Out of curiousity, we have a servicemix-bean component that instantiates 4 total beans. 2 of which are used by external services (they are considered a "live" and "test" version of the bean type), but both of those bean instances provide the same functionality. So my question is that if both of those bean classes, which live in the save service unit, both execute at the same time and use an injected DeliveryChannel, should there be a threading problem? I would assume not, provided that request invoking each bean are separate threads and the thread pool isn't exhausted. For some reason though, if I use a quartz timer to send an invocation to each of those two deployed beans (which of course are on different endpoints), I get the NPE in the deliverychannel bean pojo send method that I had a ton of problems with before. This test is under low load and there aren't any resource issues, such as a thread pool running out like I had before. If I disable one of the beans, then I never see this error occur, it happens consistently any time the two beans in the same SU execute at the same time and try to use the deliverychannel. I thought the servicemix code was synchronized to prevent this, but I wanted to pick brains to see if what I'm seeing is in ANY WAY possible, or if it seems more like it would be be an error in my application code? The NPE definitely happens down in servicemix in a spot that should be synchronized on the current thread. The bean invocations should be on different threads and therefore this shouldn't happen, but want to make sure.
I can post more details if necessary, but it's pretty straightforward (I think). If not, I'll go ahead and post more details. Thanks!! I can go back to synchronizing the code where the DeliveryChannel is used, I'm just not sure the best way to be sure that I don't end up causing a race condition of some kind, so I hate to do it unless I know it's safe. Ryan
