You don't need to configure the container like that.
Simply add an error-channel to the inbound adapter; when an exception occurs on the main flow (incomingUpdateChannel->) an ErrorMessage will be sent to the error-channel. The payload of that message will be a MessagingException and you can extract the failed message to attempt to send to your failures queue. Just add a transformer (expresssion="payload.failedMessage") followed by a jms outbound adapter. If the send is successful the original transaction will commit. If the error-channel flow throws an exception, the original message will be rolled back.
In either case, you don't need to specify an external JmsTransactionManager - local transactions are sufficient.
Gary P. Russell
Spring Integration Team
SpringSource, a division of VMware