4

以下のフローを使用して、複数のファイルをソースから宛先に移動/アップロードしようとしています(FTPやファイルアウトバウンドなど)。

<flow name="flow1" doc:name="f1">
            <file:inbound-endpoint path="C:\input" responseTimeout="10000" doc:name="File"/>
    </flow>

<flow name="flow2" doc:name="f2">
  <http:inbound-endpoint address="http://localhost:8080" doc:name="HTTP" exchange-pattern="request-response"/>

  <flow-ref name="flow1" doc:name="Flow Reference"/>
        <file:outbound-endpoint path="C:\outputfile" responseTimeout="10000" doc:name="File"/>

</flow>

このようにする理由は、CURLを使用してCLI(コマンドラインインターフェイス)からジョブを呼び出したいためです。

しかし、私は以下のエラーを受け取ります

エラー:

スレッド「main」の例外org.mule.module.launcher.DeploymentInitException:SAXParseException:cvc-complex-type.2.4.b:要素「flow」のコンテンツが完全ではありません。'{" http://www.mulesoft.org/schema/mule/core":abstract-message-processor、 " http://www.mulesoft.org/schema/mule/core":abstract-outbound-の1つエンドポイント、「http://www.mulesoft.org/schema/mule/core」:abstract-mixed-content-message-processor、「http://www.mulesoft.org/schema/mule/coreフロー」は完了していません。の一つ '{"http://www.mulesoft.org/schema/mule/core ":abstract-message-processor、" http://www.mulesoft.org/schema/mule/core ":abstract-outbound-endpoint、" http: //www.mulesoft.org/schema/mule/core ":abstract-mixed-content-message-processor、" http://www.mulesoft.org/schema/mule/corecolumnNumber:8; cvc-complex-type.2.4.b:要素'flow'の内容が完全ではありません。の一つ '{"http://www.mulesoft.org/schema/mule/core ":abstract-message-processor、" http://www.mulesoft.org/schema/mule/core ":abstract-outbound-endpoint、" http: //www.mulesoft.org/schema/mule/core ":abstract-mixed-content-message-processor、" http://www.mulesoft.org/schema/mule/coreネストされた例外はorg.xml.sax.SAXParseExceptionです。lineNumber:11; columnNumber:8; cvc-complex-type.2.4.b:要素'flow'の内容が完全ではありません。の一つ '{"http://www.mulesoft.org/schema/mule/core ":abstract-message-processor、" http://www.mulesoft.org/schema/mule/core ":abstract-outbound-endpoint、" http: //www.mulesoft.org/schema/mule/core ":abstract-mixed-content-message-processor、" http://www.mulesoft.org/schema/mule/core":response}'が必要です。org.mule.registry.AbstractRegistry.initialise(AbstractRegistry.java:117)at org.mule.config.spring.SpringXmlConfigurationBuilder.createSpringRegistry(SpringXmlConfigurationBuilder.java:116)at org.mule.config .spring.SpringXmlConfigurationBuilder.doConfigure(SpringXmlConfigurationBuilder.java:73)at org.mule.config.builders.AbstractConfigurationBuilder.configure(AbstractConfigurationBuilder.java:46)... 11 more原因:org.springframework.beans.factory.xml。 XmlBeanDefinitionStoreException:URL [file:/ D:/MuleStudioExperiment/FileTransferUsingHTTP/.mule/apps/test/test.xml]のXMLドキュメントの11行目が無効です。ネストされた例外はorg.xml.sax.SAXParseException; lineNumber:11; columnNumber :8; cvc-complex-type.2.4.b:要素'flow'の内容が完全ではありません。の一つ '{"http://www.mulesoft.org/schema/mule/core ":abstract-message-processor、" http://www.mulesoft.org/schema/mule/core ":abstract-outbound-endpoint、" http: //www.mulesoft.org/schema/mule/core ":abstract-mixed-content-message-processor、" http://www.mulesoft.org/schema/mule/coreAbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:522)at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:436)at org.mule.config.spring.SpringRegistry.doInitialise(SpringRegistry.java:89)at org .mule.registry.AbstractRegistry.initialise(AbstractRegistry.java:109)... 14 more原因:org.xml.sax.SAXParseException; lineNumber:11; columnNumber:8; cvc-complex-type.2.4.b:要素'flow'の内容が完全ではありません。の一つ '{" mule.registry.AbstractRegistry.initialise(AbstractRegistry.java:109)... 14 more原因:org.xml.sax.SAXParseException; lineNumber:11; columnNumber:8; cvc-complex-type.2.4.b:要素'flow'の内容が完全ではありません。の一つ '{" mule.registry.AbstractRegistry.initialise(AbstractRegistry.java:109)... 14 more原因:org.xml.sax.SAXParseException; lineNumber:11; columnNumber:8; cvc-complex-type.2.4.b:要素'flow'の内容が完全ではありません。の一つ '{"http://www.mulesoft.org/schema/mule/core ":abstract-message-processor、" http://www.mulesoft.org/schema/mule/core ":abstract-outbound-endpoint、" http: //www.mulesoft.org/schema/mule/core ":abstract-mixed-content-message-processor、" http://www.mulesoft.org/schema/mule/core":response}'が必要です。org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)at org.apache.xerces.util.ErrorHandlerWrapper.error(Unknown Source)at org.apache.xerces.impl.XMLErrorReporter .reportError(Unknown Source)at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)at org.apache.xerces.impl.xs.XMLSchemaValidator $ XSIErrorReporter.reportError(Unknown Source)at org.apache.xerces.impl.xs.XMLSchemaValidator.reportSchemaError(Unknown Source)at org.apache.xerces.impl.xs.XMLSchemaValidator.elementLocallyValidComplexType(Unknown Source)at org.apache.xerces org.apache.xerces.impl.xsの.impl.xs.XMLSchemaValidator.elementLocallyValidType(不明なソース)。XMLSchemaValidator.processElementContent(Unknown Source)at org.apache.xerces.impl.xs.XMLSchemaValidator.handleEndElement(Unknown Source)at org.apache.xerces.impl.xs.XMLSchemaValidator.endElement(Unknown Source)atorg.apache.xerces。 impl.XMLNSDocumentScannerImpl.scanEndElement(Unknown Source)at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl $ FragmentContentDispatcher.dispatch(Unknown Source)at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)at org.apache.xer parsers.XML11Configuration.parse(Unknown Source)at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)atorg.apache.xerces.parsers。 org.apache.xerces.jaxp.DocumentBuilderImplのDOMParser.parse(Unknown Source)。parse(Unknown Source)at org.springframework.beans.factory.xml.DefaultDocumentLoader.loadDocument(DefaultDocumentLoader.java:75)at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:388)

助けてください

4

2 に答える 2

3

これを試して

<flow name="flow1" doc:name="flow1" initialState="stopped">
  <file:inbound-endpoint path="C:\Input" responseTimeout="10000" doc:name="File"/>

  <file:outbound-endpoint path="C:\outputfile" responseTimeout="10000" doc:name="File"/>
</flow>

<flow name="flow2" doc:name="flow2">
  <http:inbound-endpoint address="http://localhost:8080/start" doc:name="HTTP" exchange-pattern="request-response"/>

  <expression-component>
    app.registry.filePickupFlow.start();
  </expression-component>

  <set-payload value="File successfully copied" />

</flow>
于 2013-02-05T02:32:24.933 に答える
1

ファイル エンドポイントは、イベント ベースのエンドポイント (jms や vm) や tcp ベースのエンドポイント (tcp、http、udp など) ではなく、リソース ベースのエンドポイント (ftp や sftp エンドポイントなど) です。

このため、実装しているアプローチはユースケースに適合しません。オンデマンドでファイルをロードする必要がある場合 (つまり、http エンドポイントに到達したとき)、フローをリファクタリングし、mule-module-file-utilsを使用する必要があります。このモジュールは、Maven の依存関係として追加するか、Studio にインストールする必要があります。これを行うには、 git リポジトリを複製し、生成された更新サイトの zip ファイルを次の手順に従ってインストールします。

これを行うと、フローは次のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:fileutils="http://www.mulesoft.org/schema/mule/fileutils" xmlns:tracking="http://www.mulesoft.org/schema/mule/ee/tracking" xmlns:scripting="http://www.mulesoft.org/schema/mule/scripting" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns:file="http://www.mulesoft.org/schema/mule/file"
    xmlns:mulexml="http://www.mulesoft.org/schema/mule/xml" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
    xmlns:spring="http://www.springframework.org/schema/beans" version="EE-3.3.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd 
http://www.mulesoft.org/schema/mule/fileutils http://www.mulesoft.org/schema/mule/fileutils/3.3/mule-fileutils.xsd 
http://www.mulesoft.org/schema/mule/ee/tracking http://www.mulesoft.org/schema/mule/ee/tracking/current/mule-tracking-ee.xsd 
http://www.mulesoft.org/schema/mule/scripting http://www.mulesoft.org/schema/mule/scripting/current/mule-scripting.xsd 
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd 
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd 
http://www.mulesoft.org/schema/mule/file http://www.mulesoft.org/schema/mule/file/current/mule-file.xsd 
http://www.mulesoft.org/schema/mule/xml http://www.mulesoft.org/schema/mule/xml/current/mule-xml.xsd ">
    <fileutils:config name="Fileutils" doc:name="Fileutils"/>
    <flow name="FileCopier" doc:name="FileCopier">
        <http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8081" path="copy-file" doc:name="HTTP"/>
        <scripting:transformer doc:name="Script">
            <scripting:script engine="Groovy">
                <scripting:text><![CDATA[def dir = new File("/" + message.getInboundProperty('http.relative.path'))
log.info(dir.getPath())
return Arrays.asList(dir.listFiles())]]></scripting:text>
            </scripting:script>
        </scripting:transformer>
        <logger level="INFO" doc:name="Logger"/>
        <set-variable variableName="fileNumber" value="#[payload.size()]" doc:name="Variable"/>
        <foreach doc:name="Foreach">
            <fileutils:copy-file config-ref="Fileutils" destinationName="#[message.payload.getName()]" destinationPath="/tmp/out/" fileName="#[message.payload.getName()]" filePath="#[message.payload.getParentFile().getPath()]" fileAge="0" doc:name="Fileutils"/>
        </foreach>
        <set-payload value="#[flowVars['fileNumber'] + ' file copied']" doc:name="Set Payload"/>
        <http:response-builder status="200" contentType="text/plain" doc:name="HTTP Response Builder"/>
        </flow>
      </mule>

fileutils モジュールを使用したくない場合は、ファイル コピー ロジックを実装するスクリプト コンポーネントに置き換えることができます。

このフローは、次の curl コマンドを使用して呼び出すことができます。

curl http://${hostname}:8081/copy-file/${path_to_directory_to_copy}

curl に関するドキュメントはこちらから入手できます

于 2013-01-24T14:44:17.467 に答える