WSO2 ESB定制连接器

时间:2017-01-30 16:22:18

标签: java wso2 wso2esb

我在为WSO2 ESB 5.0.0创建自定义连接器时感到困惑。我需要一个用于传统设备(温度计)的自定义连接器。此连接器将通过ESB REST API调用。连接器唯一应该做的是创建到给定IP地址(连接器输入参数)的套接字连接,然后解析响应数据。该计划完美独立。但是,我不知道如何将它集成到自定义连接器。特别是如何从连接器发送数据作为对API调用的响应。

我的连接器代码:

@Override
public void connect(MessageContext messageContext) throws ConnectException {
    Object templateParam = getParameter(messageContext, "generated_param");
    try {
        log.info("sample connector received message :" + templateParam);
        /**Add your connector code here 
        **/
        Socket socket = new Socket("172.16.xxx.xxx", 2000);

        BufferedWriter out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(), "UTF8"));
        BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

        out.write("*SRTC\r");
        out.flush();

        System.out.println(in.readLine());

        out.close();
        in.close();
        socket.close();

    } catch (Exception e) {
    throw new ConnectException(e);  
    }
}

应该发送in.readLine()中的消息???

4 个答案:

答案 0 :(得分:2)

已解决:我将响应存储在messageContext:

messageContext.setProperty("temperature", Double.parseDouble(in.readLine()));

然后处理下一个调解员。感谢

答案 1 :(得分:1)

我猜你的连接器与类中介器混淆了。基本上,连接器是模板的集合,用于定义用户可以从其ESB配置调用的操作,以轻松访问用于处理消息的特定逻辑。通常,连接器用于包装外部服务的API。例如,ESB提供了几个默认连接器,用于调用Twitter和JIRA等服务的API。您还可以创建自己的连接器以提供对其他服务的访问。

我们无法在连接器模板中创建java函数。因此,我们创建一个java类,并使用类中介如

在连接器模板中调用该自定义类
<class name="class-name"/>

参见,

https://docs.wso2.com/display/ESBCONNECTORS/Writing+a+Connector

https://docs.wso2.com/display/ESB500/Class+Mediator

答案 2 :(得分:0)

您应该能够使用介体调用自定义介体。以下是如何操作的示例。

<class name="org.wso2.esb.tutorial.mediators.SurchargeStockQuoteMediator">
<property name="defaultPercentage" value="10"/>

您可以在以下网址下找到有用的信息。

http://wso2.com/library/2898/ http://wso2.com/library/2936/

希望有所帮助。

答案 3 :(得分:0)

您可以在连接器代码中的messageContext中添加响应,稍后您可以使用您提供的名称在代理中调用值,同时在属性[1]中添加值。现在您可以将值传递给任何API。

[1] https://github.com/wso2-extensions/esb-connector-ejb2.0/blob/master/src/main/java/org/wso2/carbon/custom/connector/CallEJBStatelessBean.java#L41