In JmsServiceExporter, following code means that JMSServiceExporter.onMessage can be called in another thread before super.afterProperties initializes the marshaller, leading to "MQJMS1034E MessageListener threw: java.lang.NullPointerException" error
...
// do we have a destination specified, if so consume
if (destination != null) {
Session session = producer.getSession();
consumer = session.createConsumer(destination);
consumer.setMessageListener(this);
}
super.afterPropertiesSet();
}
Possible solution may be to call super.afterPropertiesSet() before calling consumer.setMessageListener(this), this seems to be where the thread is being created by Websphere MQ implementation