2014-11-24 78 views
0

我幾乎沒有開始WSO2 ESB,需要創建一個允許我從.edi文件(96a)通過VFS(已啓用)轉換它的方案到XML ...爲此,我正在使用Smooks和UN/EDIFACT來執行解析。當執行提供了以下錯誤WSO2:wso2 esb smooks un/edifact 96a EDI到XML

[2014-01-16 08:16:44,684] ERROR - VFSTransportListener Error processing File URI : file:///home/pwcenter/Proxy_UnEdifact/in/wm_msg_download_xml_tipo_7.edi 
org.milyn.cdr.SmooksConfigurationException: Error invoking @Initialize method 'initialize' on class 'org.milyn.smooks.edi.ModelLoader'. 
     at org.milyn.cdr.annotation.Configurator.invoke(Configurator.java:457) 
     at org.milyn.cdr.annotation.Configurator.initialise(Configurator.java:439) 
     at org.milyn.cdr.annotation.Configurator.configure(Configurator.java:91) 
     at org.milyn.cdr.annotation.Configurator.configure(Configurator.java:66) 
     at org.milyn.delivery.JavaContentHandlerFactory.create(JavaContentHandlerFactory.java:63) 
     at org.milyn.delivery.ContentDeliveryConfigBuilder$ContentHandlerExtractionStrategy.addCDU(ContentDeliveryConfigBuilder.java:623) 
     at org.milyn.delivery.ContentDeliveryConfigBuilder$ContentHandlerExtractionStrategy.applyCDUStrategy(ContentDeliveryConfigBuilder.java:548) 
     at org.milyn.delivery.ContentDeliveryConfigBuilder$ContentHandlerExtractionStrategy.applyStrategy(ContentDeliveryConfigBuilder.java:536) 
     at org.milyn.delivery.ContentDeliveryConfigBuilder$SmooksResourceConfigurationTableIterator.iterate(ContentDeliveryConfigBuilder.java:711) 
     at org.milyn.delivery.ContentDeliveryConfigBuilder$SmooksResourceConfigurationTableIterator.access$300(ContentDeliveryConfigBuilder.java:690) 
     at org.milyn.delivery.ContentDeliveryConfigBuilder.extractContentHandlers(ContentDeliveryConfigBuilder.java:484) 
     at org.milyn.delivery.ContentDeliveryConfigBuilder.load(ContentDeliveryConfigBuilder.java:349) 
     at org.milyn.delivery.ContentDeliveryConfigBuilder.getConfig(ContentDeliveryConfigBuilder.java:146) 
     at org.milyn.container.standalone.StandaloneExecutionContext.<init>(StandaloneExecutionContext.java:91) 
     at org.milyn.container.standalone.StandaloneExecutionContext.<init>(StandaloneExecutionContext.java:65) 
     at org.milyn.Smooks.createExecutionContext(Smooks.java:411) 
     at org.milyn.Smooks.createExecutionContext(Smooks.java:374) 
     at org.wso2.carbon.mediator.transform.SmooksMediator.mediate(SmooksMediator.java:103) 
     at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:77) 
     at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:47) 
     at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:131) 
     at org.apache.synapse.core.axis2.ProxyServiceMessageReceiver.receive(ProxyServiceMessageReceiver.java:166) 
     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:597) 
     at org.apache.synapse.transport.vfs.VFSTransportListener.scanFileOrDirectory(VFSTransportListener.java:328) 
     at org.apache.synapse.transport.vfs.VFSTransportListener.poll(VFSTransportListener.java:158) 
     at org.apache.synapse.transport.vfs.VFSTransportListener.poll(VFSTransportListener.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(NativeWorkerPool.java:172) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
     at java.lang.Thread.run(Unknown Source) 
Caused by: org.milyn.edisax.EDIConfigurationException: Failed to locate jar file for EDI Mapping Model URN 'org.milyn.edi.unedifact:d96a-mapping:*'. Jar must be available on classpath. 
     at org.milyn.edisax.util.EDIUtils.getMappingModelConfigStream(EDIUtils.java:300) 
     at org.milyn.edisax.util.EDIUtils.getMappingModelList(EDIUtils.java:207) 
     at org.milyn.edisax.util.EDIUtils.loadMappingModels(EDIUtils.java:118) 
     at org.milyn.smooks.edi.ModelLoader.initialize(ModelLoader.java:52) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
     at java.lang.reflect.Method.invoke(Unknown Source) 
     at org.milyn.cdr.annotation.Configurator.invoke(Configurator.java:453) 
     ... 32 more 

的的Smooks的配置是:

<?xml version="1.0"?>  
<smooks-resource-list xmlns="http://www.milyn.org/xsd/smooks-1.1.xsd" 
         xmlns:unedifact="http://www.milyn.org/xsd/smooks/unedifact-1.4.xsd"> 
    <unedifact:reader mappingModel="urn:org.milyn.edi.unedifact:d96a-mapping:*" /> 
</smooks-resource-list> 

我已經在Java應用程序中使用,我的工作完美相同的配置。

此外,我嘗試在dropins和lib目錄下的WSO2中手動添加依賴項,除了創建CLASSPATH甚至build-classpath-directory命令,但無濟於事。

回答

1

同志 經過多次搜索和查詢,設法找到了部分解決方案,但功能齊全。我的意思是,首先必須正確識別的路徑,你會讀EDIFACT映射如下:

<?xml version="1.0" encoding="UTF-8"?> 
<localEntry xmlns="http://ws.apache.org/ns/synapse" key="smooks"> 
    <smooks-resource-list xmlns="http://www.milyn.org/xsd/smooks-1.1.xsd" xmlns:unedifact="http://www.milyn.org/xsd/smooks/unedifact-1.4.xsd"> 
    <unedifact:reader mappingModel="//opt//wso2//wso2esb-4.8.1//repository//components//lib//org.milyn.edi.unedifact.d96a-mapping_1.4.jar"/> 
    </smooks-resource-list> 
</localEntry> 

有了這個,你已經可以閱讀EDIFACT文件,但有些含有任何inconcordancias,只讀一個跟蹤,但不讀取多個痕跡,修復您必須刪除第一行:

UNB+UNOA:2+925485K200:8+7808800024232:1+150526:0108+168' 
... 

一個快速簡便的方法是使的是定製調解員,其中以「UNB」到「'「,並使用正則表達式刪除裏面的一切吧,:

UNB[\\d|\\D|\\+|\\:]*' 

有了這個,我們實現了讓閱讀在WSO2ESB傳入EDIFACT的多條曲線。

我希望它能幫助他們。