WSO2 Enterprise Integrator 6.1.1を使用しています。VFS を使用して、あるディレクトリからファイルをポーリングし、別のディレクトリに移動しています。しかし、私のプロキシ サービスはロック ファイルを作成しており、ファイルを移動できません。最初はファイルのアクセス許可の問題だと思っていましたが、インバウンド エンドポイントまたはプロキシ サービスで呼び出されたカスタム Java メディエーターで試してみると. その後、ファイルは正常に移動されます。
ロックファイル:
プロキシ サービス コード:
<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
name="TestCSVFileMoving"
startOnLoad="true"
statistics="disable"
trace="disable"
transports="vfs">
<target>
<inSequence>
<log level="full"
separator=",========----------Test CSV File Proxy Triggered------======="/>
</inSequence>
<faultSequence/>
</target>
<parameter name="transport.vfs.Streaming">true</parameter>
<parameter name="transport.PollInterval">30</parameter>
<parameter name="transport.vfs.FileURI">vfs:file:///files/uploads</parameter>
<parameter name="transport.vfs.ContentType">text/plain</parameter>
<parameter name="transport.vfs.ActionAfterProcess">MOVE</parameter>
<parameter name="transport.vfs.MoveAfterFailure">vfs:file:///opt/file/con/Fail</parameter>
<parameter name="transport.vfs.ActionAfterFailure">MOVE</parameter>
<parameter name="transport.vfs.FileNamePattern">Test.*.csv</parameter>
<parameter name="transport.vfs.MoveAfterProcess">vfs:file:///opt/file/con/Out</parameter>
<description/>
</proxy>
エラーログ:
TID: [-1234] [] [2018-01-10 12:51:56,634] ERROR {org.apache.synapse.transport.vfs.VFSTransportListener} - File object 'file:///files/uploads/Test.csv'cloud not be moved, will remain in "locked" state {org.apache.synapse.transport.vfs.VFSTransportListener}
org.apache.axis2.AxisFault: Error moving file : file:///files/uploads/Test.csv to file:///opt/file/con/Out
at org.apache.axis2.transport.base.AbstractTransportListener.handleException(AbstractTransportListener.java:343)
at org.apache.synapse.transport.vfs.VFSTransportListener.moveOrDeleteAfterProcessing(VFSTransportListener.java:682)
at org.apache.synapse.transport.vfs.VFSTransportListener.scanFileOrDirectory(VFSTransportListener.java:499)
at org.apache.synapse.transport.vfs.VFSTransportListener.poll(VFSTransportListener.java:188)
at org.apache.synapse.transport.vfs.VFSTransportListener.poll(VFSTransportListener.java:134)
at org.apache.axis2.transport.base.AbstractPollingTransportListener$1$1.run(AbstractPollingTransportListener.java:67)
at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: org.apache.commons.vfs2.FileSystemException: Could not rename "file:///files/uploads/Test.csv" because it is read-only.
at org.apache.commons.vfs2.provider.AbstractFileObject.moveTo(AbstractFileObject.java:1087)
at org.apache.synapse.transport.vfs.VFSTransportListener.moveOrDeleteAfterProcessing(VFSTransportListener.java:680)
... 8 more
問題文:
私の質問は、エラー ログに、それが読み取り専用ファイルであることが明確に示されているということです。しかし、インバウンド エンドポイントを使用してカスタム メディエータを呼び出すことで、ファイルを移動できるのはなぜですか。しかし、VFS のみを使用すると、このエラーが発生します。また、それを解決する方法はありますか。VFSを使用する必要がある場合。
