Index: BeanEndpoint.java =================================================================== --- BeanEndpoint.java (revision 669798) +++ BeanEndpoint.java (working copy) @@ -561,11 +561,30 @@ } public void send(MessageExchange messageExchange) throws MessagingException { - if (messageExchange.getRole() == MessageExchange.Role.CONSUMER - && messageExchange.getStatus() == ExchangeStatus.ACTIVE) { - requests.put(messageExchange.getExchangeId(), currentRequest.get()); + try { + if (messageExchange.getRole() == MessageExchange.Role.CONSUMER + && messageExchange.getStatus() == ExchangeStatus.ACTIVE) { + // fix for SM-1134 + Object corId = getCorrelation(messageExchange); + Request req = requests.get(corId); + if (req == null) { + Object pojo = getBean(); + if (pojo == null) { + pojo = createBean(); + injectBean(pojo); + ReflectionUtils.callLifecycleMethod(pojo, PostConstruct.class); + } + req = new Request(pojo, messageExchange); + requests.put(corId, req); + } + requests.put(messageExchange.getExchangeId(), req); + // end of fix + // requests.put(messageExchange.getExchangeId(), currentRequest.get()); + } + BeanEndpoint.this.channel.send(messageExchange); + } catch (Exception e) { + throw new MessagingException(e); } - BeanEndpoint.this.channel.send(messageExchange); } public boolean sendSync(MessageExchange messageExchange) throws MessagingException {