2013-06-18 51 views
1

我想从我的ESB主目录的XML文件名为的test.xml其内容读的是:从文件中读取WSO2 ESB

<a>Helloo 
<b>World</b> 
    </a> 

我已经写了一个代理来访问节点B的含量为:

<proxy xmlns="http://ws.apache.org/ns/synapse" name="ReadFileProxy" transports="https,http" statistics="disable" trace="disable" startOnLoad="true"> 
    <target> 
     <inSequence> 
     <property name="test" expression="get-property('registry','conf:/test.xml')" scope="default" type="OM"/> 
<log level="custom"> 
     <property name="test.b" expression="$ctx:test//b"/> 
</log> 
<header name="To" action="remove"/> 
     <property name="RESPONSE" value="true" scope="default" type="STRING"/> 
     <property name="NO_ENTITY_BODY" scope="axis2" action="remove"/> 
     <payloadFactory> 
      <format> 
       <getCombinedResponse>Succefully read</getCombinedResponse> 
      </format> 
     </payloadFactory> 
     <send/> 
     </inSequence> 
    </target> 
    <description></description> 
</proxy> 

但它给我的错误是:

[2013-06-18 16:29:09,524] ERROR - NativeWorkerPool Uncaught exception 
org.apache.axiom.om.OMException: com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog 
at [row,col {unknown-source}]: [1,0] 
     at org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:296) 
     at org.apache.axiom.om.impl.llom.OMDocumentImpl.getOMDocumentElement(OMDocumentImpl.java:109) 
     at org.apache.axiom.om.impl.builder.StAXOMBuilder.getDocumentElement(StAXOMBuilder.java:570) 
     at org.apache.axiom.om.impl.builder.StAXOMBuilder.getDocumentElement(StAXOMBuilder.java:566) 
     at org.apache.axiom.om.util.AXIOMUtil.stringToOM(AXIOMUtil.java:54) 
     at org.apache.axiom.om.util.AXIOMUtil.stringToOM(AXIOMUtil.java:39) 
     at org.apache.synapse.config.SynapseConfigUtils.stringToOM(SynapseConfigUtils.java:766) 
     at org.apache.synapse.mediators.builtin.PropertyMediator.convertValue(PropertyMediator.java:317) 
     at org.apache.synapse.mediators.builtin.PropertyMediator.getResultValue(PropertyMediator.java:299) 
     at org.apache.synapse.mediators.builtin.PropertyMediator.mediate(PropertyMediator.java:95) 
     at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:71) 
     at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:114) 
     at org.apache.synapse.core.axis2.ProxyServiceMessageReceiver.receive(ProxyServiceMessageReceiver.java:154) 
     at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180) 
     at org.apache.synapse.transport.passthru.ServerWorker.processEntityEnclosingRequest(ServerWorker.java:434) 
     at org.apache.synapse.transport.passthru.ServerWorker.run(ServerWorker.java:219) 
     at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) 
     at java.lang.Thread.run(Thread.java:722) 

什么时许ID在这个错误。是否有任何其他方法可以从任何文件中读取(仅适用于pdf,txt和xml)。

回答

2

当你在配置指定

<property name="test" expression="get-property('registry','conf:/test.xml')" scope="default" type="OM"/> 

你是指被保存在注册表中的文件。这就是为什么你需要将它保存在注册表中。

1

您可以使用VFS传输从文件读取。请重申样本[1]。从这个示例中,您可以了解如何从文件中读取数据。此示例直接将内容发送到端点。为了您的情况,您可以使用xpath表达式来检索元素b。

<property name="test.b" expression="//a/b"/> 

[1] http://docs.wso2.org/wiki/pages/viewpage.action?pageId=16846489

+0

我已经找到解决上述问题的方法。其实我不得不把文件放在注册表中。但是,如果我保存在注册表中的任何东西conf,我在哪里可以找到它保存的文件 – Roy