Oh right, because the thread obviously would be the one that would go
through onMessageExchange method and then it would be set to null after...
(bear with me, long weekend dealing with this problem and it's 4am on a
workday.. haha).

It's a rather large bean, composed of several classes (it does a lot of
complicated stuff inside the bean)... but I could probably send you some
pieces of it... do you mind if I email them privately to you?

On Mon, Jun 23, 2008 at 3:44 AM, Guillaume Nodet <[EMAIL PROTECTED]> wrote:

> But the current request is only set to null *after* calling the pojo.
>  Do you have the full code of you bean ?
>
> On Mon, Jun 23, 2008 at 9:31 AM, Ryan Moquin <[EMAIL PROTECTED]>
> wrote:
> > Sure, I backed out the changes in my editor.. basically my bean is
> standard
> > compared to the servicemix docs (for how to handle the exchange coming
> in),
> > then my bean takes the injected deliverychannel and hands it to a class
> that
> > creates a message to send out with results of some analysis performed..
> here
> > is the code to send out (it's using the DeliveryChannel injected into the
> > bean by Servicemix):
> >
> > Marshaller notificationMarshaller = jaxbContext.createMarshaller();
> >      notificationMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,
> > Boolean.TRUE);
> >      notificationMarshaller.marshal(notification, writer);
> >      if (destinationQname == null) {
> >        destinationQname = new QName(getDestinationNamespace(),
> > getDestinationService());
> >      }
> >      MessageExchangeFactory exchangeFactory =
> > deliveryChannel.createExchangeFactory();
> >      InOnly exchange = exchangeFactory.createInOnlyExchange();
> >      NormalizedMessage message = exchange.createMessage();
> >      message.setContent(new StringSource(writer.toString()));
> >      exchange.setInMessage(message);
> >      exchange.setService(destinationQname);
> >      deliveryChannel.send(exchange);
> >
> > The send is where the ConcurrentHashmap complains about an NPE .. I think
> > because the BeanComponent sets the CurrentRequest to null around the time
> my
> > code is trying to send a request that must get clobbered?  There's no
> other
> > explanation for it.. it looks like the NPE is caused by
> > currentRequest.get(), which is set back to null by the BeanComponent and
> > since they are in the same thread.... they interfere.
> >
> > Ryan
> >
> > On Mon, Jun 23, 2008 at 3:24 AM, Guillaume Nodet <[EMAIL PROTECTED]>
> wrote:
> >
> >> Is there any way you could paste the code of the bean you're using so
> >> that i can have a quick look. You can skip any non-jbi related
> >> processing...
> >>
> >> On Mon, Jun 23, 2008 at 9:18 AM, Ryan Moquin <[EMAIL PROTECTED]>
> >> wrote:
> >> > No, I'm just simply using the deliverychannel to send out, which is
> >> > mentioned in the servicemix docs as something that you can do.  I
> assume
> >> > that means it's recommended :)  I did see that I can inject a
> >> > ComponentContext and so I'm currently changing my outbound messages to
> >> that
> >> > to see if I can get around this problem.  I think I just can't use the
> >> > DeliveryContext in the same Pojo (same thread).
> >> >
> >> > On Mon, Jun 23, 2008 at 3:11 AM, Guillaume Nodet <[EMAIL PROTECTED]>
> >> wrote:
> >> >
> >> >> The NPE in the PojoChannel.send() method means that the
> >> >> currentRequest.get() is null.
> >> >> Do you perform any threading operation in the pojo ? If yes, you
> >> >> should try to remove that, as the component is already able to handle
> >> >> concurrent requests.
> >> >>
> >> >> On Sat, Jun 21, 2008 at 6:48 AM, Ryan Moquin <[EMAIL PROTECTED]
> >
> >> >> wrote:
> >> >> > I hate to say this Bruce, but unfortunately 3.2.2 is working pretty
> >> bad
> >> >> for
> >> >> > me and has the same problem :(  It only seems to affect our
> production
> >> >> > server and in a few minutes after start up, I start getting the
> >> >> > NullPointerException.. slowly all my services start doing it and
> they
> >> all
> >> >> > stop working.  If I stop and restart servicemix, then
> servicemix-jms
> >> >> > components are no longer routable.  I'm guessing this error causes
> >> >> > Servicemix to shut them down and not deploy them anymore
> (Servicemix
> >> does
> >> >> > the same thing if a service unit starts up, tries to make a Joram
> >> >> connection
> >> >> > to a server that isn't up, servicemix will shutdown that SU and
> will
> >> >> always
> >> >> > shut it down immediately after it starts on any subsequent run).
> >> >> >
> >> >> > It seems like this problem must be related to a race condition.
>  When
> >> >> doing
> >> >> > development testing, I never see this problem on my laptop even
> under
> >> >> high
> >> >> > load.  One our fast test server, I see this error popup once on
> >> startup
> >> >> and
> >> >> > then it doesn't seem to happen again.  On our even faster
> production
> >> >> server,
> >> >> > the whole thing looses it's wheels and falls apart after a few
> >> minutes.
> >> >> >
> >> >> > I'm supposed to be deploying this system in a few days and of
> course
> >> >> that's
> >> >> > the only spot where I can't temporarily limp by.  Is it possible
> you
> >> >> could
> >> >> > give me some hints on what the problem is and I'll debug it this
> >> weekend
> >> >> to
> >> >> > see if I can fix it, or at least patch it temporarily?  I really
> need
> >> to
> >> >> > figure out way to get around this problem.  Other than that, 3.2.2
> >> seems
> >> >> to
> >> >> > work perfectly fine.
> >> >> >
> >> >> > Here is the caused by error again in case it's any bit different
> than
> >> the
> >> >> > 3.2.1 one was:
> >> >> >
> >> >> > 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(JbiNotificat
> >> >> > ionHandlerImpl.java:80)
> >> >> >
> >> >> > Also, is the delivery channel component threadsafe?  I'm curious if
> >> >> multiple
> >> >> > threads accessing it is a problem or if I should keep access to it
> >> >> > synchronized?  I'm currently synchronizing, but don't want to if I
> >> don't
> >> >> > need to.
> >> >> >
> >> >> > Thanks!
> >> >> > Ryan
> >> >> >
> >> >> > On Thu, Jun 19, 2008 at 2:19 AM, Bruce Snyder <
> [EMAIL PROTECTED]
> >> >
> >> >> > wrote:
> >> >> >
> >> >> >> On Wed, Jun 18, 2008 at 7:56 PM, Ryan Moquin <
> [EMAIL PROTECTED]
> >> >
> >> >> >> wrote:
> >> >> >> > I'm using Servicemix 3.2.1, so I'll give 3.2.2 a try.  I was
> kind
> >> of
> >> >> >> waiting
> >> >> >> > until it was released, but this problem is now cropping up on a
> >> >> regular
> >> >> >> > basis on a server so I'll definitely give it a shot.  Hopefully
> >> this
> >> >> will
> >> >> >> > allow me to get this project done so I can then get that Joram
> >> write
> >> >> up
> >> >> >> done
> >> >> >> > since I should have ran across hopefully most of the gotchas for
> it
> >> at
> >> >> >> that
> >> >> >> > point.
> >> >> >>
> >> >> >> 3.2.2 will be released very soon and I know it's pretty stable.
> Maybe
> >> >> >> we can release it this weekend.
> >> >> >>
> >> >> >> Bruce
> >> >> >> --
> >> >> >> perl -e 'print
> >> >> >>
> unpack("u30","D0G)[EMAIL PROTECTED]&5R\"F)R=6-E+G-N>61E<D\!G;6%I;\"YC;VT*"
> >> >> >> );'
> >> >> >>
> >> >> >> Apache ActiveMQ - http://activemq.org/
> >> >> >> Apache Camel - http://activemq.org/camel/
> >> >> >> Apache ServiceMix - http://servicemix.org/
> >> >> >>
> >> >> >> Blog: http://bruceblog.org/
> >> >> >>
> >> >> >
> >> >>
> >> >>
> >> >>
> >> >> --
> >> >> Cheers,
> >> >> Guillaume Nodet
> >> >> ------------------------
> >> >> Blog: http://gnodet.blogspot.com/
> >> >>
> >> >
> >>
> >>
> >>
> >> --
> >> Cheers,
> >> Guillaume Nodet
> >> ------------------------
> >> Blog: http://gnodet.blogspot.com/
> >>
> >
>
>
>
> --
> Cheers,
> Guillaume Nodet
> ------------------------
> Blog: http://gnodet.blogspot.com/
>

Reply via email to