【发布时间】:2012-07-27 10:37:28
【问题描述】:
我需要从我在 spring bean 中收到的交换对象获取 SOAP 消息。
我有一个骆驼路由,它从服务端点路由到我的 java bean。 Spring 中声明的 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 消息。我骆驼的网址,here发现必须用这个来获取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
我被困在这里了。也许有人知道问题出在哪里?
【问题讨论】:
标签: java soap cxf apache-camel apache-karaf