我有以下课程调解员。
public class TestCustomMediator extends AbstractMediator {
@Override
public boolean mediate(MessageContext mc) {
String processedMobile = mc
.getEnvelope()
.getBody()
.getFirstElement()
.getFirstChildWithName(
new QName("http://ws.wso2.org/dataservice", "mobile_no"))
.getText();
processedMobile = "000" + processedMobile;
System.out.println("processedMobile===" + processedMobile);
mc.getEnvelope()
.getBody()
.getFirstElement()
.getFirstChildWithName(
new QName("http://ws.wso2.org/dataservice", "mobile_no"))
.setText(processedMobile);
return true;
}
}
如果SOAP消息符合预期,则调解发生时没有任何问题。
如果出现异常,请说明是否没有名称为" mobile_no"然后调解没有发生。它在那时停止。不会继续下一个调解员。
请告诉我应该做什么,即使节点遍历失败,中介也要继续。
答案 0 :(得分:0)
如果没有名为mobile_no
的子节点,则会得到NullPointerException
并且自定义中介失败。所以我添加了空指针检查。
public class TestCustomMediator extends AbstractMediator {
@Override
public boolean mediate(MessageContext mc) {
OMElement mobileElement = mc
.getEnvelope()
.getBody()
.getFirstElement()
.getFirstChildWithName(
new QName("http://ws.wso2.org/dataservice", "mobile_no"))
if (mobileElement != null) {
String mobileNumber = mobileElement.getText();
mobileNumber = "000" + mobileNumber;
System.out.println("mobileNumber===" + mobileNumber);
mc.getEnvelope()
.getBody()
.getFirstElement()
.getFirstChildWithName(
new QName("http://ws.wso2.org/dataservice", "mobile_no"))
.setText(mobileNumber);
return true;
}
return false;
}
}