如何在wso2 esb代理服务

时间:2017-06-20 13:06:06

标签: tcp wso2 wso2esb

我是Wso2 esb的新人。现在我正在使用tcp协议和代理服务。我有一些问题。我通过tcp协议向代理服务发送一些消息。我需要将此消息发送到代理服务中的属性介体。但我的方式并没有在物业调解员身上发现这个价值 这是我的代理服务



<?xml version="1.0" encoding="UTF-8"?>
<proxy name="TCPProxyService" startOnLoad="true" transports="tcp" xmlns="http://ws.apache.org/ns/synapse">
    <target>
        <inSequence>
            <property description="" expression="get-property('message')" name="MessageValue" scope="default" type="STRING"/>
            <log description="" level="custom">
                <property name="property_name" value="============================="/>
                <property expression="get-property('MessageValue')" name="inputValue"/>
            </log>
            <sequence key="in-sequence"/>
            <log/>
            <respond/>
        </inSequence>
        <outSequence/>
        <faultSequence/>
    </target>
    <parameter name="transport.tcp.responseClient">true</parameter>
    <parameter name="transport.tcp.inputType">string</parameter>
    <parameter name="transport.tcp.recordDelimiter">|</parameter>
    <parameter name="transport.tcp.contentType">text/plain</parameter>
    <parameter name="transport.tcp.port">6789</parameter>
    <parameter name="transport.tcp.recordDelimiterType">character</parameter>
</proxy>
&#13;
&#13;
&#13;

这是我的发送tcp请求的Java客户端

import java.io.*;
import java.net.*;

class TCPClient {
    public static void main(String argv[]) throws Exception {
        String delimiter = "|";
        int modifiedSentence;
        Socket clientSocket = new Socket("localhost", 6789);
        DataOutputStream outToServer = new 
           DataOutputStream(clientSocket.getOutputStream());
        BufferedReader inFromServer = new BufferedReader(new 
        InputStreamReader(clientSocket.getInputStream()));
        String message = "Pietoo,Klaas,also" + delimiter;
        outToServer.writeBytes(message);
        outToServer.flush();
        while ((modifiedSentence = inFromServer.read()) > -1){
           System.out.print((char)modifiedSentence);
        }
        clientSocket.close();
        }
}

我尝试使用get-property表达式添加下面的属性介体。这有什么不对。

  

属性描述=&#34;&#34;表达式=&#34;获取属性(&#39;消息&#39;)&#34;命名=&#34; MessageValue&#34;范围=&#34;默认&#34;类型=&#34; STRING&#34; /&GT;

1 个答案:

答案 0 :(得分:1)

在您的代理def中尝试<log level="full"/>,向您的Java客户端发送消息,并查看wso2-esb-service.log:您应该看到这样的肥皂消息

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    <soapenv:Body>
        <text xmlns="http://ws.apache.org/commons/ns/payload">your|data</text>
    </soapenv:Body>
</soapenv:Envelope>

您可以使用以下方式获取文本值:

<property xmlns:tp="http://ws.apache.org/commons/ns/payload" name="MessageValue" expression="$body/tp:text"/>