如何在wso2 esb中编写Custom class mediator时返回其他数据类型

时间:2013-04-01 10:11:09

标签: wso2 wso2esb

现在写我有一个情况。我正在编写一个自定义中介,它实现了返回布尔值的中间函数。但我想要返回其他数据类型。我试图通过编写自定义代码来添加两个数字并返回结果来实现这个目标。但我无法弄清楚,我怎么能返回整数而不是布尔值。请给我一个与这种情况有关的例子。 我已将自定义类介体中的代码编写为:

public boolean mediate(MessageContext messageContext) {
        System.out.println("Checkpoint1: OpenPublication.mediate()");
        if (getChanneluri() != null && !getChanneluri().isEmpty()) {
            messageContext.setProperty("SessionID", UUID.randomUUID().toString());
            System.out.println("Checkpoint2: SessionID Property set");
            synapseConfig = messageContext.getConfiguration();
            System.out.println("Checkpoint3: messageContextSessionID = " + messageContext.getProperty("SessionID"));
            System.out.println("Checkpoint3: messageID = " + messageContext.getMessageID());
                    }
        return false;
    }

现在我想在我的序列中检索“SessionID”的这个属性值。这该怎么做。     提前谢谢。

1 个答案:

答案 0 :(得分:4)

AFAIK你不能让类中介返回除布尔值以外的任何东西。扩展AbstractMediator类时,类中介必须实现布尔中介方法;正如你所指出的那样。

您可以尝试将属性设置为Synapse消息上下文,以便在不同的介体之间传递值。

例如:

public class myMediator extends AbstractMediator {

    private String property1 = "aProperty";
    private String property2;

    public boolean mediate(MessageContext messageContext) {

        messageContext.setProperty("MyProperty", property1);
        property2 = (String) messageContext.getProperty("MyProperty");


        return true;
    }

在上面的例子中,两个String变量最终将具有相同的值“aProperty”。通过这种方式,您可以将任何类型的对象公开给Synapse消息上下文并在其他地方检索它。