gpt4 book ai didi

java - WSO2 ESB 类中介在异常情况下继续

转载 作者:太空宇宙 更新时间:2023-11-04 12:37:37 24 4
gpt4 key购买 nike

我有以下类(class)调解员。

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”的子节点,则不会发生中介。它就在那一刻停止了。不会继续到下一个调解员。

请让我知道应该做什么,即使节点遍历失败,调解仍能继续。

最佳答案

如果没有名为 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;
}
}

关于java - WSO2 ESB 类中介在异常情况下继续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37154818/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com