Мне нужно получить сообщение SOAP от объекта обмена, который я получаю в своем весеннем компоненте.
У меня есть верблюжий маршрут, который маршрутизирует от конечной точки службы до моего Java-бина. Маршрут Java Bean и Camel, объявленный весной, выглядит следующим образом:
<bean id="processor" class="com.groupgti.esb.camel.wrapper.gradireland.userregistration.UserRegistrationProcessor">
<camel:route id="route">
<camel:from uri="cxf:bean:myListenerEndpoint?dataFormat=PAYLOAD&synchronous=true" />
<camel:bean ref="processor" />
<camel:to uri="cxf:bean:myTargetEndpoint"/>
</camel:route>
В моем java bean я получаю объект обмена:
@Override
public SOAPMessage processMessage(Exchange exchange) {
Object object = exchange.getIn().getHeaders().get("CamelCxfMessage");
LOGGER.debug("Object: " + object);
SOAPMessage message = null;
if (object instanceof SOAPMessage) {
message = (SOAPMessage) object;
LOGGER.debug("Got message: " + message);
}
LOGGER.debug("Sending message...");
return message;
}
Проблема в том, что я не могу получить сообщение SOAP из обмена. Я веб-сайт верблюда, здесь я обнаружил, что должен использовать это, чтобы получить сообщение SOAP :
SOAPMessage soapMessage = (SOAPMessage) exchange.getIn().getBody(List.class).get(0);
Но он дает мне NullPointerException
где-то глубоко в обмен.
Я попытался отладить и увидеть дерево объектов. Я обнаружил, что могу получить такое сообщение:
SOAPMessage soapMessage = (SOAPMessage) exchange.getIn().getHeaders().get("CamelCxfMessage");
Но это дает мне это исключение:
org.apache.camel.ExpectedBodyTypeException: Could not extract IN message body as type: interface javax.xml.transform.Source body is: null
Я застрял здесь. Может кто знает где может быть проблема?