当前位置: 首页 > 知识库问答 >
问题:

在WSO2 ESB 4.8.1中使用VFS编写文本文件

赫连靖琪
2023-03-14

我使用VFS传输轮询一个简单的文本文件,然后将文件的文本发送到队列。这个流程工作得很好,但是在执行fault sequence时出现错误的情况下,我想把我的错误消息写到一个简单的文本文件中,但它不起作用。

<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
       name="FileWriteTest"
       transports="vfs"
       statistics="disable"
       trace="disable"
       startOnLoad="true">
   <target>
      <inSequence>
         <log level="full"
              separator="******************FileWrite In Sequence Start*************"/>
      </inSequence>
      <outSequence/>
      <faultSequence>

         <payloadFactory media-type="xml">
            <format>
               <MessageFormat xmlns="">
                  <ECode>$1</ECode>
                  <EMsg>$2</EMsg>
                  <EDetail>$3</EDetail>
                  <EException>$4</EException>
               </MessageFormat>
            </format>
            <args>
               <arg evaluator="xml" expression="get-property('ERROR_CODE')"/>
               <arg evaluator="xml" expression="get-property('ERROR_MESSAGE')"/>
               <arg evaluator="xml" expression="get-property('ERROR_DETAIL')"/>
               <arg evaluator="xml" expression="get-property('ERROR_EXCEPTION')"/>
            </args>
         </payloadFactory>
         <property name="OUT_ONLY" value="true" scope="default" type="STRING"/>
         <property name="ClientApiNonBlocking" scope="axis2" action="remove"/>
         <send>
            <endpoint>
               <address uri="vfs:file:///home/omerkhalid/Documents/WSO2Test/FileWrite/Errorlog.txt"/>
            </endpoint>
         </send>
      </faultSequence>
      <endpoint>
         <address uri="jms:/FileWriterResponse?transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactory&amp;java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory&amp;java.naming.provider.url=tcp://localhost:6616&amp;transport.jms.DestinationType=queue"/>
      </endpoint>
   </target>
   <parameter name="transport.PollInterval">10</parameter>
   <parameter name="transport.vfs.FileURI">file://home/omerkhalid/Documents/WSO2Test/FileWrite/InTest</parameter>
   <parameter name="transport.vfs.MoveAfterProcess">file://home/omerkhalid/Documents/WSO2Test/FileWrite/DoneTest</parameter>
   <parameter name="transport.vfs.FileNamePattern">.*.txt</parameter>
   <parameter name="transport.vfs.ContentType">text/plain</parameter>
   <parameter name="transport.vfs.ActionAfterFailure">MOVE</parameter>
   <parameter name="serviceType">proxy</parameter>
   <description/>
</proxy>

问题区域:
问题在下面的代码区域,在这里我定义了错误序列的endpoint。它确实在该特定位置创建了一个文件,但该文件仍然为空。

<send>
<endpoint>
<address uri="vfs:file:///home/omerkhalid/Documents/WSO2Test/FileWrite/Errorlog.txt"/>
</endpoint>
</send>

例外情况:

org.apache.axis2.AxisFault: The system cannot infer the transport information from the file:///home/omerkhalid/Documents/WSO2Test/FileWrite/Errorlog.txt URL.
    at org.apache.axis2.description.ClientUtils.inferOutTransport(ClientUtils.java:81)
    at org.apache.axis2.client.OperationClient.prepareMessageContext(OperationClient.java:288)
    at org.apache.axis2.description.OutOnlyAxisOperationClient.executeImpl(OutOnlyAxisOperation.java:249)
    at org.apache.axis2.client.OperationClient.execute(OperationClient.java:149)
    at org.apache.synapse.core.axis2.Axis2FlexibleMEPClient.send(Axis2FlexibleMEPClient.java:482)
    at org.apache.synapse.core.axis2.Axis2Sender.sendOn(Axis2Sender.java:59)
    at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.send(Axis2SynapseEnvironment.java:338)
    at org.apache.synapse.endpoints.AbstractEndpoint.send(AbstractEndpoint.java:333)
    at org.apache.synapse.endpoints.AddressEndpoint.send(AddressEndpoint.java:59)
    at org.apache.synapse.mediators.builtin.SendMediator.mediate(SendMediator.java:97)
    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.mediators.MediatorFaultHandler.onFault(MediatorFaultHandler.java:85)
    at org.apache.synapse.FaultHandler.handleFault(FaultHandler.java:54)
    at org.apache.synapse.endpoints.AbstractEndpoint.invokeNextFaultHandler(AbstractEndpoint.java:640)
    at org.apache.synapse.endpoints.AbstractEndpoint.onFault(AbstractEndpoint.java:475)
    at org.apache.synapse.endpoints.AddressEndpoint.onFault(AddressEndpoint.java:43)
    at org.apache.synapse.FaultHandler.handleFault(FaultHandler.java:102)
    at org.apache.synapse.core.axis2.AsyncCallback.onError(AsyncCallback.java:67)
    at org.apache.axis2.engine.AxisEngine$TransportNonBlockingInvocationWorker.run(AxisEngine.java:643)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:744)

共有1个答案

魏明亮
2023-03-14

从faultSequence中更改payloadFactory中的消息:消息的根节点必须是:

并且该节点的内容将是发送到您的文件的文本值

 类似资料:
  • 本文向大家介绍使用Python读写文本文件及编写简单的文本编辑器,包括了使用Python读写文本文件及编写简单的文本编辑器的使用技巧和注意事项,需要的朋友参考一下 学习raw_input和argv是学习读取文件的前提,你可能不能完全理解这个练习,所以认真学习并检查。如果不认真的话,很容易删除一些有用的文件。 这个练习包含两个文件,一个是运行文件ex15.py,一个是ex15_sample.txt。

  • 本文向大家介绍如何用python在Selenium中编写文本文件?,包括了如何用python在Selenium中编写文本文件?的使用技巧和注意事项,需要的朋友参考一下 通过首先创建一个txt文件并在其中包含内容,我们可以使用python在Selenium中编写文本文件。 首先,我们需要以写模式打开文件,并以文本文件的位置路径作为参数。有多种读取方法可以执行这些操作。 write()–将字符串写在一

  • 我是Selenium的新手,需要能够使用属性和文本对以下元素进行xpath。 我正在使用 但我还需要它带有属性,以便将其缩小到单个元素。

  • 本文向大家介绍如何使用R编写文本并将其输出为文本文件?,包括了如何使用R编写文本并将其输出为文本文件?的使用技巧和注意事项,需要的朋友参考一下 我们可以使用writeLines和fileConn函数来做到这一点。 示例 我们可以这样做,并按照以下方式在R中查看这些文件- 您可以在系统的文件文件夹中找到这些文件。

  • 问题内容: 假设我有以下代码: 我要做的就是在文本文件中写一些东西,在我的例子中是“出于某种原因在这里写一些文本”。然后从文件中读取数据,最后从“有原因的一些文本”中的“有原因的一些文本”中更改文件中的文本。我运行了代码,但是所有发生的事情是在文件“某些原因在这里写”中。 我试图找出代码中可能出什么问题,但不幸的是,这是徒劳的。我非常感谢任何建议或重写。 问题答案: 将您的代码更改为: 问题是您要

  • http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd“> 这里context1.xml是由context2.xml编写