2017-07-16 3 views
1

In meinem Projekt habe ich einige proxy.There Transporttyp ist Tcp. Meine Antwort istwie Antwort als String senden mit Klasse Mediator in Wso2 esb

{ 
"BillingSystem": { 
    "request_id": "20114140080000011479122000", 
    "request_timestamp": "12102012121200", 
    "response_timestamp": "12102012121300", 
    "action": "AddSubscription", 
    "username": "Cellcard ", 
    "result_code": "0", 
    "result_desc": "Success" 
} 
} 

ich diese Antwort fangen Klasse Vermittler mit und WZ2OCS2 erstellen: 1: 14: 14008: 1: @ 1479122000 # diese Antwort mit. Ich muss diese Zeichenfolge an TCP-Client senden. Ich habe diesen String in der Klasse Meditor

context.setProperty("responseClientValue", responseClientValue); 

Nach Satz dieser Wert in der Klasse Mediator I Nutzlast Fabrik Vermittler verwendet und nach dieser Eigenschaft Vermittler.

<payloadFactory description="" media-type="xml"> 
     <format> 
      <name xmlns="">$1</name> 
     </format> 
     <args> 
      <arg evaluator="xml" expression="get-property('responseClientValue')"/> 
     </args> 
</payloadFactory> 

Eigenschaft Vermittler

<property name="messageType" scope="axis2" type="STRING" value="application/text"/> 

Als ich laufen Projekt Seine Show xml-Code

<?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><name>WZ2OCS2:1:14:14008:1:@1479122000#</name></soapenv:Body></soapenv:Envelope>? 

Hier ist mein Proxy-Dienst

<?xml version="1.0" encoding="UTF-8"?> 
 
<proxy name="SurepayBillingErrorHandlingProxy" startOnLoad="true" transports="tcp" xmlns="http://ws.apache.org/ns/synapse"> 
 
    <target> 
 
     <inSequence> 
 
      <class description="" name="esb.cellcard.billing.SurepayMediator"/> 
 
      <property name="messageType" scope="axis2" type="STRING" value="application/json"/> 
 
      <send> 
 
       <endpoint key="SurpayBillingEP"/> 
 
      </send> 
 
     </inSequence> 
 
     <outSequence> 
 
      <class name="esb.cellcard.billing.ResponseRequestId"/> 
 
      <payloadFactory description="" media-type="xml"> 
 
       <format> 
 
        <name xmlns="">$1</name> 
 
       </format> 
 
       <args> 
 
        <arg evaluator="xml" expression="get-property('responseClientValue')"/> 
 
       </args> 
 
      </payloadFactory> 
 
      <property name="messageType" scope="axis2" type="STRING" value="application/text"/> 
 
      <send/> 
 
     </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">6050</parameter> 
 
    <parameter name="transport.tcp.recordDelimiterType">character</parameter> 
 
</proxy>

Wie kann ich nur Zeichenfolgenwert erhalten. Danke

Antwort

0

ändern payloadFactory wie folgt aus:

<payloadFactory> 
    <format> 
     <text xmlns="http://ws.apache.org/commons/ns/payload">$1</text> 
    </format> 
    <args> 
     <arg evaluator="xml" expression="$ctx:responseClientValue"/> 
</payloadFactory> 

ändern Eigenschaft message wie folgt aus:

<property name="messageType" scope="axis2" type="STRING" value="text/plain"/> 

(siehe axis2.xml, standardmäßig wird die PlainTextFormatter Klasse zugeordnet text/plain : <messageFormatter contentType="text/plain" class="org.apache.axis2.format.PlainTextFormatter"/>)

+0

Danke Jean-Michel. – Dev4World

+0

@ Jean-Mechil. Wenn ich eine Anfrage über TCP-Client sende, füge ich der Anfrage ein Trennzeichen hinzu. ex -: Anfrage + "?" .Aber wenn zu Response Delimiter mit Response.As WZ2OCS2? Wie kann ich dieses Trennzeichen von Antwort entfernen. Vielen Dank – Dev4World

Verwandte Themen