2016-06-02 12 views
1

Ich muss jede Datei im Verzeichnis "/ home/user/from /" mit com.wso2esb.command.MyCommand überprüfen und wenn das Ergebnis == true, ersetzen Sie die Datei durch "home/user/to /" . Ich habe folgende Proxy:WSO2 ESB. Datei mit VFS übertragen

<?xml version="1.0" encoding="UTF-8"?> 
<proxy xmlns="http://ws.apache.org/ns/synapse" 
     name="fromto" 
     transports="vfs" 
     statistics="enable" 
     trace="enable" 
     startOnLoad="true"> 
    <target> 
     <inSequence> 
     <pojoCommand name="com.wso2esb.command.MyCommand"> 
      <axis2ns47:property xmlns:axis2ns47="http://ws.apache.org/ns/synapse" 
           name="fileURL" 
           expression="$trp:FILE_PATH" 
           action="ReadMessage"/> 
      <axis2ns48:property xmlns:axis2ns48="http://ws.apache.org/ns/synapse" 
           name="result" 
           context-name="com.fx.FileIsOBI" 
           action="UpdateContext"/> 
     </pojoCommand> 
     <switch source="$ctx:com.fx.FileIsOBI"> 
      <case regex="^true$"> 
       <log level="custom"> 
        <property name="OUTPUT" 
          expression="fn:concat('===555===', $ctx:com.fx.FileIsOBI)"/> 
       </log> 
       <property name="OUT_ONLY" value="true" scope="default"/> 
       <property xmlns:ns="http://org.apache.synapse/xsd" 
         xmlns:ns3="http://org.apache.synapse/xsd" 
         name="transport.vfs.ReplyFileName" 
         expression="$trp:FILE_NAME" 
         scope="transport"/> 
       <send> 
        <endpoint> 
        <address uri="vfs:file:////home/user/to"/> 
        </endpoint> 
       </send> 
      </case> 
     </switch> 
     </inSequence> 
    </target> 
    <parameter name="transport.PollInterval">10</parameter> 
    <parameter name="transport.vfs.ActionAfterProcess">DELETE</parameter> 
    <parameter name="transport.vfs.FileURI">vfs:file:////home/user/from/</parameter> 
    <parameter name="transport.vfs.FileNamePattern">.*\.txt</parameter> 
    <parameter name="transport.vfs.ContentType">application/octet-stream</parameter> 
    <parameter name="transport.vfs.ActionAfterFailure">DELETE</parameter> 
    <description/> 
</proxy> 

ich die Zeichenfolge sehen "=== 555 === true" in der Protokolldatei, bedeutet dies, dass com.fx.FileIsOBI == true. Aber meine Datei wurde nicht nach "/ home/user/to /" verschoben. Ich denke, das Problem ist in

<property name="OUT_ONLY" value="true" scope="default"/> 
<property xmlns:ns="http://org.apache.synapse/xsd" 
     xmlns:ns3="http://org.apache.synapse/xsd" 
     name="transport.vfs.ReplyFileName" 
     expression="$trp:FILE_NAME" 
     scope="transport"/> 
<send> 
    <endpoint> 
    <address uri="vfs:file:////home/user/to"/> 
    </endpoint> 
</send> 

Was ist los?

Antwort

1

Bitte überprüfen Sie, ob VFS Transport, aktiviert ist https://docs.wso2.com/display/ESB490/VFS+Transport

Nach funktioniert gut für mich

<?xml version="1.0" encoding="UTF-8"?> 
<proxy xmlns="http://ws.apache.org/ns/synapse" 
    name="fromto" 
    statistics="enable" 
    trace="enable" 
    startOnLoad="true"> 
<target> 
    <inSequence> 
    <log level="custom"> 
     <property name="OUTPUT" value="===555==="/> 
    </log> 
    <property name="OUT_ONLY" value="true" scope="default"/> 
    <property xmlns:ns="http://org.apache.synapse/xsd" 
       xmlns:ns3="http://org.apache.synapse/xsd" 
       name="transport.vfs.ReplyFileName" 
       expression="$trp:FILE_NAME" 
       scope="transport"/> 
    <send> 
     <endpoint> 
      <address uri="vfs:file:///Users/lahiru/work/wso2/esb/9/to"/> 
     </endpoint> 
    </send> 
    </inSequence> 
</target> 
<parameter name="transport.vfs.ActionAfterProcess">DELETE</parameter> 
<parameter name="transport.PollInterval">10</parameter> 
<parameter name="transport.vfs.FileURI">vfs:file:///Users/lahiru/work/wso2/esb/9/from</parameter> 
<parameter name="transport.vfs.FileNamePattern">.*\.txt</parameter> 
<parameter name="transport.vfs.ContentType">application/octet-stream</parameter> 
<parameter name="transport.vfs.ActionAfterFailure">DELETE</parameter> 
<description/> 
</proxy> 
1

Ich denke, dass ein Problem in Ihrem Dateipfad gibt. Könnten Sie es wie folgt ändern.

<parameter name="transport.vfs.FileURI">vfs:file:///home/user/from/</parameter> 

<send> 
    <endpoint> 
     <address uri="vfs:file:///home/user/to"/> 
    </endpoint> 
</send> 

Noch einmal, da Sie eine XML-Datei verarbeiten, ändern Sie den Inhaltstyp wie folgt.

<parameter name="transport.vfs.FileNamePattern">.*\.xml</parameter> 
<parameter name="transport.vfs.ContentType">text/xml</parameter> 

Tun Sie diese vorgeschlagenen Änderungen und lassen Sie uns Ihr Feedback wissen.