0

我正在尝试使用 WSO2 ESB 进行基于 FTP 的集成。我能够使用 VFS 传输将文件从一个 FTP 位置传输到另一个位置。但是 WSO2 ESB 期望文件中的肥皂信封正在传输。

如果我正在传输图像,则此逻辑将不适合。

如何使用 VFS 传输传输具有非肥皂信封的图像/文件?

如果我在没有肥皂信封的情况下传输任何文件,则会发生以下错误:

    [2013-06-07 14:01:31,314] ERROR - VFSTransportListener Error processing File URI
 : ftp://isova1:admin@10.208.29.144/isova.png
org.apache.axiom.om.OMException: com.ctc.wstx.exc.WstxIOException: Invalid UTF-8
 start byte 0x89 (at char #1, byte #-1)
        at org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.jav
a:296)
        at org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.getSOAPEnvelo
pe(StAXSOAPModelBuilder.java:204)
        at org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.<init>(StAXSO
APModelBuilder.java:154)
        at org.apache.axiom.om.impl.AbstractOMMetaFactory.createStAXSOAPModelBui
lder(AbstractOMMetaFactory.java:73)
        at org.apache.axiom.om.impl.AbstractOMMetaFactory.createSOAPModelBuilder
(AbstractOMMetaFactory.java:79)
        at org.apache.axiom.om.OMXMLBuilderFactory.createSOAPModelBuilder(OMXMLB
uilderFactory.java:196)
        at org.apache.axis2.builder.SOAPBuilder.processDocument(SOAPBuilder.java
:55)
        at org.apache.synapse.transport.vfs.VFSTransportListener.processFile(VFS
TransportListener.java:558)
        at org.apache.synapse.transport.vfs.VFSTransportListener.scanFileOrDirec
tory(VFSTransportListener.java:312)
        at org.apache.synapse.transport.vfs.VFSTransportListener.poll(VFSTranspo
rtListener.java:158)
        at org.apache.synapse.transport.vfs.VFSTransportListener.poll(VFSTranspo
rtListener.java:107)
        at org.apache.axis2.transport.base.AbstractPollingTransportListener$1$1.
run(AbstractPollingTransportListener.java:67)
        at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(Native
WorkerPool.java:172)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec
utor.java:895)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
.java:918)
        at java.lang.Thread.run(Thread.java:662)
Caused by: com.ctc.wstx.exc.WstxIOException: Invalid UTF-8 start byte 0x89 (at c
har #1, byte #-1)
        at com.ctc.wstx.sr.StreamScanner.constructFromIOE(StreamScanner.java:625
)
        at com.ctc.wstx.sr.StreamScanner.loadMore(StreamScanner.java:994)
        at com.ctc.wstx.sr.StreamScanner.getNext(StreamScanner.java:754)
        at com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.ja
va:1977)
        at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1114)
        at org.apache.axiom.util.stax.wrapper.XMLStreamReaderWrapper.next(XMLStr
eamReaderWrapper.java:225)
        at org.apache.axiom.util.stax.dialect.DisallowDoctypeDeclStreamReaderWra
pper.next(DisallowDoctypeDeclStreamReaderWrapper.java:34)
        at org.apache.axiom.util.stax.wrapper.XMLStreamReaderWrapper.next(XMLStr
eamReaderWrapper.java:225)
        at org.apache.axiom.om.impl.builder.StAXOMBuilder.parserNext(StAXOMBuild
er.java:681)
        at org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.jav
a:214)
        ... 15 more
Caused by: java.io.CharConversionException: Invalid UTF-8 start byte 0x89 (at ch
ar #1, byte #-1)
        at com.ctc.wstx.io.UTF8Reader.reportInvalidInitial(UTF8Reader.java:303)
        at com.ctc.wstx.io.UTF8Reader.read(UTF8Reader.java:189)
        at com.ctc.wstx.io.ReaderSource.readInto(ReaderSource.java:87)
        at com.ctc.wstx.io.BranchingReaderSource.readInto(BranchingReaderSource.
java:57)
        at com.ctc.wstx.sr.StreamScanner.loadMore(StreamScanner.java:988)
        ... 23 more

问候大师@gnanagurus

4

1 回答 1

0

这很可能是因为ContentType没有使用 VFS 传输的权限。

传输二进制数据时,请使用:

<parameter name="transport.vfs.ContentType">application/octet-stream</parameter>

我刚刚在 WSO2 ESB 4.0.3 上尝试过它,它适用于 png 文件,而使用参数text/plain的值会transport.vfs.ContentType引发与您描述的相同的异常。

在此处查看 Synapse VFS 服务参数。

于 2013-06-19T03:29:34.817 回答