Я пытаюсь сделать преобразования сообщений на основе похожих примеров отсюда, и у меня есть что-то на 3.0.4 вроде
public MessageXMLDecodeOutInterceptor() {
super(Phase.PRE_STREAM);
}
public void handleMessage(Message message) {
try (OutputStream outStream = message.getContent(OutputStream.class); CachedOutputStream cachedStream = new CachedOutputStream();) {
message.setContent(OutputStream.class, cachedStream);
message.put(Message.ENCODING, charset.name());
message.getInterceptorChain().doIntercept(message);
cachedStream.flush();
String origMessage = IOUtils.toString(cachedStream.getInputStream(), charset);
String newMessage = // modify the message
IOUtils.write(header, outStream, charset);
IOUtils.write(newMessage, outStream, charset);
} catch (IOException e) {
logger.errorf("Could not transform message", e);
}
}
, и оно работает, пока сообщение не станет большим (~ 200k?), А затем внезапноorigMessage является "".Большие сообщения как-то кэшируются / обрабатываются по-разному?
Заранее спасибо, Ник