我嘗試使用smooks(1.5.1)和wso2 esb的最新版本解析csv文件ang錯誤: java.lang.IllegalArgumentException:null或空'fields'方法調用中的arg。使用smooks解析csv文件返回錯誤null或空arg
我的CSV文件多記錄字段定義: 輸入.csv文件(帶標籤delimeted):
T11 T12 T13 T14 T15 T16
T21 T22 T23 T24 T25 T26
T3
代理服務(只Smooks的配置部分:
<smooks config-key="smooks-config">
<input type="text"/>
<output type="xml"/>
</smooks>
的Smooks配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<localEntry key="smooks-config" xmlns="http://ws.apache.org/ns/synapse">
<smooks-resource-list xmlns="http://www.milyn.org/xsd/smooks-1.1.xsd" xmlns:csv="http://www.milyn.org/xsd/smooks/csv-1.5.xsd">
<csv:reader fields="T11[*] | T22[*] | T3[*]" indent="true"
recordElementName="message" rootElementName="messages" separator="	"/>
</smooks-resource-list>
</localEntry>
結果我得到異常:
TID: [-1234] [ESB] [2016-07-07 15:33:16,742] DEBUG - Start : Smooks mediator {org.wso2.carbon.mediator.transform.SmooksMediator}
TID: [-1234] [ESB] [2016-07-07 15:33:16,756] ERROR - Failed to filter source. {org.wso2.carbon.mediator.transform.SmooksMediator}
org.milyn.SmooksException: Failed to filter source.
at org.milyn.delivery.sax.SmooksSAXFilter.doFilter(SmooksSAXFilter.java:97)
at org.milyn.delivery.sax.SmooksSAXFilter.doFilter(SmooksSAXFilter.java:64)
at org.milyn.Smooks._filter(Smooks.java:526)
at org.milyn.Smooks.filterSource(Smooks.java:482)
at org.wso2.carbon.mediator.transform.SmooksMediator.mediate(SmooksMediator.java:131)
at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:81)
at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:48)
at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:149)
at org.apache.synapse.core.axis2.ProxyServiceMessageReceiver.receive(ProxyServiceMessageReceiver.java:185)
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
at org.apache.axis2.transport.base.AbstractTransportListener.handleIncomingMessage(AbstractTransportListener.java:328)
at org.apache.synapse.transport.vfs.VFSTransportListener.processFile(VFSTransportListener.java:751)
at org.apache.synapse.transport.vfs.VFSTransportListener.scanFileOrDirectory(VFSTransportListener.java:407)
at org.apache.synapse.transport.vfs.VFSTransportListener.poll(VFSTransportListener.java:177)
at org.apache.synapse.transport.vfs.VFSTransportListener.poll(VFSTransportListener.java:124)
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:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.IllegalArgumentException: null or empty 'fields' arg in method call.
at org.milyn.assertion.AssertArgument.isNotNullAndNotEmpty(AssertArgument.java:105)
at org.milyn.flatfile.Record.<init>(Record.java:43)
at org.milyn.flatfile.variablefield.VariableFieldRecordParser.nextRecord(VariableFieldRecordParser.java:201)
at org.milyn.flatfile.FlatFileReader.parse(FlatFileReader.java:176)
at org.milyn.delivery.sax.SAXParser.parse(SAXParser.java:76)
at org.milyn.delivery.sax.SmooksSAXFilter.doFilter(SmooksSAXFilter.java:86)
... 19 more
TID: [-1234] [ESB] [2016-07-07 15:33:16,763] ERROR - Failed to filter source. Caused by Failed to filter source. {org.apache.synapse.mediators.base.SequenceMediator}
org.wso2.carbon.mediator.service.MediatorException: Failed to filter source. Caused by Failed to filter source.
at org.wso2.carbon.mediator.transform.SmooksMediator.handleException(SmooksMediator.java:252)
at org.wso2.carbon.mediator.transform.SmooksMediator.mediate(SmooksMediator.java:147)
at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:81)
at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:48)
at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:149)
at org.apache.synapse.core.axis2.ProxyServiceMessageReceiver.receive(ProxyServiceMessageReceiver.java:185)
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
at org.apache.axis2.transport.base.AbstractTransportListener.handleIncomingMessage(AbstractTransportListener.java:328)
at org.apache.synapse.transport.vfs.VFSTransportListener.processFile(VFSTransportListener.java:751)
at org.apache.synapse.transport.vfs.VFSTransportListener.scanFileOrDirectory(VFSTransportListener.java:407)
at org.apache.synapse.transport.vfs.VFSTransportListener.poll(VFSTransportListener.java:177)
at org.apache.synapse.transport.vfs.VFSTransportListener.poll(VFSTransportListener.java:124)
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:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
我認爲這個問題是在「T3」行(如果我從CSV刪除此行 - 文件進行分析,但沒有額外的「recordElementName」)
由於提前