Forgot to respond to this message, doh! Here is the stack trace I'm
getting. I seem to be getting this a lot lately and while the system is
under no load. It just starts doing this when I try to send out from my
bean using the delivery channel. I remember you reviewing this same code
for the same stack trace a couple weeks back, which was a result of too
small a thread pool. Now I'm getting this error lately when there is no
load on the server. I have a quartz service that invokes this bean every 15
seconds.
ERROR - JbiNotificationHandlerImpl - Error sending notification to
service: urn://service.notification.com notification-jms-service
at
com.notification.impl.JbiNotificationHandlerImpl.sendNotification(JbiNotificati
onHandlerImpl.java:83)
at
com.notification.impl.DataCollectorImpl.onMessageExchange(DataCollectorImpl.java:228)
at
org.apache.servicemix.bean.BeanEndpoint.onProviderExchange(BeanEndpoint.java:235)
at
org.apache.servicemix.bean.BeanEndpoint.process(BeanEndpoint.java:211)
at
org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:538)
at
org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:490)
at
org.apache.servicemix.common.BaseLifeCycle.onMessageExchange(BaseLifeCycle.java:46)
at
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:610)
at
org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:172)
at
org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:167)
at
org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.NullPointerException
at
java.util.concurrent.ConcurrentHashMap.put(ConcurrentHashMap.java:881)
at
org.apache.servicemix.bean.BeanEndpoint$PojoChannel.send(BeanEndpoint.java:569)
at
com.notification.impl.JbiNotificationHandlerImpl.sendNotification(JbiNotificati
onHandlerImpl.java:81)
... 16 more
On Mon, Jul 28, 2008 at 3:27 AM, Guillaume Nodet <[EMAIL PROTECTED]> wrote:
> The DeliveryChannel provided by the container is thread safe.
> However, this delivery channel is wrapped by the component when used
> for a particular endpoint, so there may be a threading problem there.
> However, this wrapper is used by all components and I doubts there is
> a threading problem there. But the servicemix-bean component does
> some very specific stuff when a request arrive to a bean endpoint to
> map this request to a known bean instance (in case the bean is created
> by the endpoint for each request), so the problem could be there.
> Could you paste the full exception stack trace please ?
>
> On Mon, Jul 28, 2008 at 3:00 AM, Ryan Moquin <[EMAIL PROTECTED]>
> wrote:
> > 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
> >
>
>
>
> --
> Cheers,
> Guillaume Nodet
> ------------------------
> Blog: http://gnodet.blogspot.com/
>