【问题标题】:How to return other datatypes while writing Custom class mediator in wso2 esb在 wso2 esb 中编写自定义类调解器时如何返回其他数据类型
【发布时间】:2013-04-01 22:24:31
【问题描述】:

现在写我有一个情况。我正在编写一个自定义调解器,它实现返回布尔值的调解函数。但相反,我也想返回其他数据类型。我试图通过编写自定义代码来添加两个数字并返回结果来实现 thsi。但我不知道如何返回整数而不是布尔值。请给我一个与这种情况相关的例子。 我在自定义类调解器中编写了代码:

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”的这个属性值。这个怎么做。 提前致谢。

【问题讨论】:

    标签: wso2 wso2esb


    【解决方案1】:

    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;
        }
    

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

    【讨论】:

    • 所以假设我已将 property1 设置为“someString”。我可以在我的序列中调用类调解器时检索此 property1 并假设我想使用有效负载工厂从序列中设置 property2 那么如何做到这一点?提前致谢
    • 是的。假设您在序列中添加了一个值为“someString”的属性“property1”。在类中介器中,您可以使用方法 messageContext.getProperty("property1") 检索该属性,并将其分配给 String(在将其类型转换为 String 之后)。要按顺序设置属性,您可以使用 标记。例如, 可用于设置名为“property2”的属性。
    • PayloadFactory 用于转换/替换整个消息上下文(即响应)。有关示例,请参阅docs.wso2.org/wiki/pages/viewpage.action?pageId=16846452。出于您的目的,我认为属性调解器(上面使用)会更适合。
    • 不,你没有得到我的问题。我想使用有效负载工厂设置类调解器的setter属性的值,我想从wso2 esb的属性调解器中类调解器的getter方法获取值?
    • 我已经设置了 messageContext.setProperty("SessionID", UUID.randomUUID().toString());像这样,现在我想在我的序列中使用 log mediator as 怎么做?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-15
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 2022-08-19
    相关资源
    最近更新 更多