Sorry, I was suggesting that you modify the BeanEndpoint, recompile
the component and install it instead of the old one.
You can compile 3.2.x branch by checking it out from;
   http://svn.apache.org/repos/asf/servicemix/smx3/branches/servicemix-3.2
Then run:
   mvn install -Pstep1 -Dmaven.test.skip=true
   mvn install -Pstep2 -Dmaven.test.skip=true
You may be able to simply hack the component and recompile it without
compiling the whole tree:
   cd deployables/serviceengines/servicemix-bean
   mvn install

On Mon, Jun 23, 2008 at 4:52 PM, Ryan Moquin <[EMAIL PROTECTED]> wrote:
> I feel dumb asking this, but I've been looking at the source code and I'm
> not sure how to test out your suggestion?  How am I able to retrieve the
> current request?  It looks like it's contained in a parent object that isn't
> accessible to my bean?
>
> On Mon, Jun 23, 2008 at 6:01 AM, Guillaume Nodet <[EMAIL PROTECTED]> wrote:
>
>> Could you please test something ?
>> In the BeanEndpoint, save the old value for the currentRequest.get()
>> in a local variable before setting it to the new value, and instead of
>> setting it to null after processing, set it back to the old value.  It
>> may fix the problem ...
>>
>> On Mon, Jun 23, 2008 at 11:58 AM, Guillaume Nodet <[EMAIL PROTECTED]>
>> wrote:
>> > I'm wondering if for some reason your endpoint sends a request to itself
>> ?
>> > If this request is handled synchronously, it may happen that the
>> > currentRequest is set to null while handling this request, but in the
>> > same thread as the first request ?
>> > Under high load, this behavior could happen if the thread pool is
>> > exhausted, because under such conditions, the work will be executed in
>> > the same thread...
>> >
>> > On Mon, Jun 23, 2008 at 9:52 AM, Ryan Moquin <[EMAIL PROTECTED]>
>> wrote:
>> >> 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/
>> >>>
>> >>
>> >
>> >
>> >
>> > --
>> > 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