Exception handling In File Adapter

My requirement is that i am reading a file using file adapter but the file is not in correct format so it is not reading that file and even not making any bpel instance.
so i need to add exception handling that show me the above error(file read failure).
we have log file in that it is showing this error but i need to show that error on BPEL console.
Please help how to proceed with this.
Thanks
Vivek Garg

I am able to call another bpel when error occured in file reading Bpel.
the second Bpel will handle the error and shows the error. but addition to that i need BPEL process name which fails(File Read BPEL) and call second BPEL.
Thanks
Vivek Garg

Similar Messages

  • Exception handling in File adapter when directory structure is incorrect

    hi,
    How can exception handling part be done in File adapter in cases where directory structure is incorrect, or directory
    we are referring to is not present.
    thanks
    Yatan

    If you are polling then there will be error message in log files.But i dont think we can do exception handling in such cases.
    Cheers

  • Error Handling in File Adapter

    I have been working on a requirement where the file adapter picks up the file and gives to the BPEL for processing the data.
    So, in order to do Error Handling for file adapter, i have been reading the Oracle documentation for technology adapters. In that, some of the
    points which i felt valuable for my error handling when using file adapter are the uniqueMessageSeparator property, fault-policies for rejected messages,
    and one of the action for rejected messages could be writing the payload to a file or invoking any other webservice.
    In my composite, i have configured the file adapter as a service for reading files, and i defined the xsd using the native format builder....If i put some data like 'aaaa' in the attribute of type integer , the .csv file is being picked up and its being passed to the BPEL without any error ? I believe there should be a translation error...right...
    But i am not getting the error, please tell me if anything is wrong in my xsd....
    Here is my xsd...
    <?xml version="1.0" encoding="UTF-8" ?>
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:nxsd="http://xmlns.oracle.com/pcbpel/nxsd"
    xmlns:tns="http://TargetNamespace.com/InboundService"
    targetNamespace="http://TargetNamespace.com/InboundService"
    elementFormDefault="qualified"
    attributeFormDefault="unqualified"
    nxsd:version="NXSD"
    nxsd:stream="chars"
    nxsd:encoding="US-ASCII"
    nxsd:hasHeader="true"
    nxsd:headerLines="1"
    nxsd:headerLinesTerminatedBy="${eol}"
    >
    <xsd:element name="names">
    <xsd:complexType>
    <xsd:sequence>
    <xsd:element name="name" minOccurs="1" maxOccurs="unbounded">
    <xsd:complexType>
    <xsd:sequence>
    <xsd:element name="FirstName" type="xsd:string" nxsd:style="terminated" nxsd:terminatedBy="," />
    <xsd:element name="LastName" type="xsd:string" nxsd:style="terminated" nxsd:terminatedBy="," />
    <xsd:element name="Number" type="xsd:integer" nxsd:style="terminated" nxsd:terminatedBy="${eol}" />
    </xsd:sequence>
    </xsd:complexType>
    </xsd:element>
    </xsd:sequence>
    </xsd:complexType>
    </xsd:element>
    </xsd:schema>
    And for DB Adapter, there is a property called SchemaValidation, i think that is not there for File adapter, by default it will take care of validation i guess....In another composite, my file adapter is picking up the .xml file and if i put any wrong data over there, that is working fine, i am getting the translation error, but only here in the case of csv file, i am not getting the error. Experts, please help me in this regard...I am using SOA 11G
    Thanks,
    Naresh

    Hi Yatan,
    Thanks for the reply. I did the same way, where my composite is picking up an XML file and translation error is coming. Even the fault policies are working fine, like writing to a file and even invoking other web service. Its really good that you have achieved the same thing in csv files. But the same thing i am unable to achieve when my file adapter is picking up the csv file. I really cant understand where i am doing wrong.
    here is my XSD which i defined through my native builder format...
    <?xml version="1.0" encoding="UTF-8" ?>
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:nxsd="http://xmlns.oracle.com/pcbpel/nxsd"
    xmlns:tns="http://TargetNamespace.com/FileRecv"
    targetNamespace="http://TargetNamespace.com/FileRecv"
    elementFormDefault="qualified"
    attributeFormDefault="unqualified"
    nxsd:version="NXSD"
    nxsd:stream="chars"
    nxsd:encoding="US-ASCII"
    nxsd:hasHeader="true"
    nxsd:headerLines="1"
    nxsd:headerLinesTerminatedBy="${eol}"
    >
    <xsd:element name="Roots">
    <xsd:complexType>
    <xsd:sequence>
    <xsd:element name="FirstName" type="xsd:string" nxsd:style="terminated" nxsd:terminatedBy="," nxsd:quotedBy="&quot;" />
    <xsd:element name="LastName" type="xsd:string" nxsd:style="terminated" nxsd:terminatedBy="," nxsd:quotedBy="&quot;" />
    <xsd:element name="Number" type="xsd:integer" nxsd:style="terminated" nxsd:terminatedBy="${eol}" nxsd:quotedBy="&quot;" />
    </xsd:sequence>
    </xsd:complexType>
    </xsd:element>
    </xsd:schema>
    the jca file ..
    <adapter-config name="FileRecv" adapter="File Adapter" wsdlLocation="FileRecv.wsdl" xmlns="http://platform.integration.oracle/blocks/adapter/fw/metadata">
    <connection-factory location="eis/FileAdapter" UIincludeWildcard="n*.csv"/>
    <endpoint-activation portType="Read_ptt" operation="Read">
    <activation-spec className="oracle.tip.adapter.file.inbound.FileActivationSpec">
    <property name="DeleteFile" value="true"/>
    <property name="MinimumAge" value="0"/>
    <property name="PhysicalDirectory" value="C:\files"/>
    <property name="Recursive" value="false"/>
    <property name="PollingFrequency" value="5"/>
    <property name="IncludeFiles" value="n.*\.csv"/>
    <property name="UseHeaders" value="false"/>
    </activation-spec>
    </endpoint-activation>
    </adapter-config>
    I told that the file will contain only 1 record while defining xsd and i kept a record whose values are John , Peter and akjdkjdskj.
    Now if the data is like above, the file is still getting picked up without any translation error and the BPEL is getting completed successfully...
    Is it possible for you to send your sample project and the csv file from which you have defined the xsd to me if you dont mind ?
    Thanks,
    Naresh

  • Java exception appear during file adapter to handle large xml

    Hi,Guys,
    I am using file adapter to poll one folder of my local.one get input.xml,then do something,then write out output.xml.
    input.xml format is :
    <mes:DataRequestIns xmlns:mes="http://xml.netbeans.org/schema/MessageDefined">
    <!--1 or more repetitions:-->
         <mes:DataIns>
              <mes:address>Ang Mo Kio 5,63 street</mes:address>
              <mes:birthday>14/12/1970</mes:birthday>
              <mes:firstName>Sing1</mes:firstName>
              <mes:gender>0</mes:gender>
              <mes:ID>1001</mes:ID>
              <mes:lastName>NorthMan</mes:lastName>
              <mes:postcode>2002</mes:postcode>
              <mes:telephone>6665222</mes:telephone>
              <mes:surname>Sur</mes:surname>
              <mes:status>single</mes:status>
              <mes:location>sgp</mes:location>
              <mes:HP1>11111</mes:HP1>
              <mes:HP2>22222</mes:HP2>
              <mes:passport>123456878</mes:passport>
              <mes:company>ST</mes:company>
              <mes:department>TO</mes:department>
              <mes:occupation>engineer</mes:occupation>
              <mes:experience>10</mes:experience>
              <mes:level>2</mes:level>
              <mes:certificate>high</mes:certificate>
              <mes:specialisation>computer</mes:specialisation>
              <mes:staffNumber>1020</mes:staffNumber>
              <mes:fax>00200</mes:fax>
              <mes:email>[email protected]</mes:email>
              <mes:national1>sgp</mes:national1>
              <mes:national2>sgp</mes:national2>
              <mes:interestingField>bpel</mes:interestingField>
              <mes:national>earth</mes:national>
              <mes:oversea>yes</mes:oversea>
         </mes:DataIns>
    <mes:DataIns>
    </mes:DataIns>
    </mes:DataRequestIns>
    if my input.xml contain less than 1000 records,then it's working,once greater than 1000,then appear exception.for normal case ,must have more than 10000 records need to handle,and file size is 11.2MB.
    so,Does any other way or how to use file adapter to handle it ?
    thank you
    exception :
    SEVERE: An error occured while scanning for the next trigger to fire.
    org.quartz.JobPersistenceException: Failed to obtain DB connection from data sou
    rce 'soaNonManagedDS': java.sql.SQLException: Could not retrieve datasource via
    JNDI url 'jdbc/SOALocalTxDataSource' weblogic.jdbc.extensions.ConnectionDeadSQLE
    xception: weblogic.common.resourcepool.ResourceDeadException: 0:weblogic.common.
    ResourceException: Could not create pool connection. The DBMS driver exception w
    *as: Socket read timed out [See nested exception: java.sql.SQLException: Could no*
    *t retrieve datasource via JNDI url 'jdbc/SOALocalTxDataSource' weblogic.jdbc.ext*
    *ensions.ConnectionDeadSQLException: weblogic.common.resourcepool.ResourceDeadExc*
    *eption: 0:weblogic.common.ResourceException: Could not create pool connection. T*
    *he DBMS driver exception was: Socket read timed out]*
    at org.quartz.impl.jdbcjobstore.JobStoreCMT.getNonManagedTXConnection(Jo
    bStoreCMT.java:167)
    at org.quartz.impl.jdbcjobstore.JobStoreSupport.executeInNonManagedTXLoc
    k(JobStoreSupport.java:3652)
    at org.quartz.impl.jdbcjobstore.JobStoreSupport.acquireNextTrigger(JobSt
    oreSupport.java:2654)
    at org.quartz.core.QuartzSchedulerThread.run(QuartzSchedulerThread.java:
    *235)*
    Caused by: java.sql.SQLException: Could not retrieve datasource via JNDI url 'jd
    bc/SOALocalTxDataSource' weblogic.jdbc.extensions.ConnectionDeadSQLException: we
    blogic.common.resourcepool.ResourceDeadException: 0:weblogic.common.ResourceExce
    ption: Could not create pool connection. The DBMS driver exception was: Socket r
    ead timed out
    another exception:
    Message handle error.
    error while attempting to process the message "com.collaxa.cube.engine.dispatch.
    message.invoke.InvokeInstanceMessage"; the reported exception is: Transaction Ro
    lledback.: weblogic.transaction.internal.TimedOutException: Transaction timed ou
    t after 302 seconds
    BEA1-3468FC5E3C698D2A82F7
    at weblogic.transaction.internal.ServerTransactionImpl.wakeUp(ServerTran
    sactionImpl.java:1742)
    at weblogic.transaction.internal.ServerTransactionManagerImpl.processTim
    edOutTransactions(ServerTransactionManagerImpl.java:1609)
    at weblogic.transaction.internal.TransactionManagerImpl.wakeUp(Transacti
    onManagerImpl.java:1885)
    at weblogic.transaction.internal.ServerTransactionManagerImpl.wakeUp(Ser
    verTransactionManagerImpl.java:1519)
    at weblogic.transaction.internal.WLSTimer.timerExpired(WLSTimer.java:35)
    at weblogic.timers.internal.TimerImpl.run(TimerImpl.java:273)
    at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTunin
    gWorkManagerImpl.java:516)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
    *; nested exception is: weblogic.transaction.internal.TimedOutException: Transact*
    ion timed out after 302 seconds
    BEA1-3468FC5E3C698D2A82F7
    This error contained an exception thrown by the message handler.
    Edited by: aris yu on Dec 27, 2009 11:55 PM

    Hi,
    we have to explicitly mention batch while configuaring file adapter.
    i.e. in step 5 : Check file contains multiple messages and mention how many messages u want to process in a batch.
    i.e. if you have 10000 msgs in ur file mention the size as 500. Then it will read 10000 records in 20 batches.
    Now while writing to a file use Append=true property.
    U have to add this property to fileadapter.wsdl (in jca:operation tag) which will be created when u complete the configuaration of file adapter with write operation.
    Regards
    PavanKumar.M

  • How to add fault handling for file adapter??

    Hi guys I am new to SOA technology ,I have one scenario  in file adapter  ,when file adapter reads a file from directory .If file is there   then read the file  data else it can give user defined exception that  the file is not there .How can i write user defined exception in SOA?? Give me any ideas please.............
    Thanks in advance..

    So, you want to (1) Fetch the data from these 3 type of files and (2) Also, store the payload data of the file, which is in XML format, into the same database tables ?
    If this is the requirement.. then, I would say, you could :
    (1) Read files using file adapter, but not as opaque.. Define schemas conforming to the file structures. In that way, you'll always have the file data read in the form of XML.
    (2) Fetch relevant data from such XML payloads of files and insert into database tables. Then, insert the XML payload into WHO column. You might have to convert the xml data into blob/clob before inserting.
    Job done !

  • Exception handling in File to IDoc Scenario

    Hi,
    I have successfully configured File to IDoc Scenario. Now I want to include some exception handling which should be capable of create a mail to recipient when a mapping error occurs.
    Can anybody help me out?
    Regards,
    Suraj Kumar

    Hi Suraj,
    A few points while creating ALERTS.
    <b>TESTING YOUR ALERT CONFIGURATIOn</b>
    go to <b>se37 --></b> and <b>execute the report RSALERTTEST</b>. GIve your ALERT CATEGORY in this report. If your ALERTS are configured properly, then your Alert would be triggered and you can see the entry in ALERT INBBOX.
    <b>ALERT RULE</b>
    Make sure that in your Alert Rule, <b>the option Suppress Multiple Alerts of this rule has not been seelcted</b>.
    Finally, if you are on SP14 and above check this note <b>913858</b> for alerts.
    If you are below Sp14, then this blog can help you set the background processes needed.
    /people/michal.krawczyk2/blog/2005/09/09/xi-alerts--troubleshooting-guide
    No BPMis needed to trigger alerts in either case.
    Do get back for any clarifications,
    Regards,
    Bhavesh

  • Duplicate File Handling Issues - Sender File Adapter - SAP PO 7.31 - Single Stack

    Hi All,
    We have a requirement to avoid processing of duplicate files. Our system is PI 7.31 Enh. Pack 1 SP 23. I tried using the 'Duplicate File Handling' feature in Sender File Adapter but things are not working out as expected. I processed same file again and again and PO is creating successful messages everytime rather than generating alerts/warnings or deactivating the channel.
    I went through the link  Michal's PI tips: Duplicate handling in file adapter - 7.31  . I have maintained similar setting but unable to get the functionality achieved. Is there anything I am missing or any setting that is required apart from the Duplicate file handling check box and a threshold count??
    Any help will be highly appreciated.
    Thanks,
    Abhishek

    Hello Sarvjeet,
    I'd to write a UDF in message mapping to identify duplicate files and throw an exception. In my case, I had to compare with the file load directory (source directory) with the archive directory to identify whether the new file is a duplicate or not. I'm not sure if this is the same case with you. See if below helps: (I used parameterized mapping to input the file locations in integration directory rather than hard-coding it in the mapping)
    AbstractTrace trace;
        trace = container.getTrace();
        double archiveFileSize = 0;
        double newFileSizeDouble = Double.parseDouble(newFileSize);
        String archiveFile = "";
        String archiveFileTrimmed = "";
        int var2 = 0;
        File directory = new File(directoryName);
        File[] fList = directory.listFiles();
        Arrays.sort(fList, Collections.reverseOrder());
        // Traversing through all the files
        for (File file : fList){   
            // If the directory element is a file
            if (file.isFile()){       
                            trace.addInfo("Filename: " + file.getName()+ ":: Archive File Time: "+ Long.toString(file.lastModified()));
                            archiveFile = file.getName();
                          archiveFileTrimmed = archiveFile.substring(20);       
                          archiveFileSize = file.length();
                            if (archiveFileTrimmed.equals(newFile) && archiveFileSize == newFileSizeDouble ) {
                                    var2 = var2 + 1;
                                    trace.addInfo("Duplicate File Found."+newFile);
                                    if (var2 == 2) {
                                            break;
                            else {
                                    continue;
        if (var2 == 2) {
            var2 = 0;
            throw new StreamTransformationException("Duplicate File Found. Processing for the current file is stopped. File: "+newFile+", File Size: "+newFileSize);
    return Integer.toString(var2);
    Regards,
    Abhishek

  • Duplicate message handling in the sender file adapter

    Hi,
    I enabled duplicate file handling check in the sender file adapter so that whenever there is a duplicate file it should send me an alert also it should disable the channel so that i do not get that duplicate file alert message again and again.
    My question is will it activate the channel again as soon as a new file arrives or do i need to manually do that.
    Michal's PI tips: Duplicate handling in file adapter - 7.31

    Hi Hema,
    You will have to activate the channel manually. The idea behind the 'disable' functionality is to avoid further file processing through that channel which can only start once the channel is activated again manually.
    Regards,
    Abhishek

  • How to implement Exception Handling error in IDoc to File and RFC to File

    Hi,
    We are implementing the two below scenarios :
    1. IDOC to File
    2. RFC to File
    We have to implement the Exception Handling for the above two cases. Kindly could you provide the inputs to implement the Exception Handling for the above two cases.
    Please provide the precious inputs to implement this.
    Thanks,
    Ramesh

    Hi Ramesh,
    The exception handling for idocs
    http://help.sap.com/saphelp_nw04/helpdata/en/dc/6b7f1543d711d1893e0000e8323c4f/frameset.htm
    Exception handling in File to IDoc Scenario
    For RFCs
    Re: Passing SAP Exceptions to a sync SOAP Call
    Error Handling when using RFC
    Exception Handling while Calling RFC - BPM
    handle exceptions in remote function modules
    Regards,
    Prateek

  • Exception Handler Error: Source File Error please help me out

    Hai i have simply added a text field and a button and i am trying to submit the data entered in text field to the database by pressing button.
    It is compiling and running successfully. but when i press the button it is showing that exception handler : Source File error.

    Could you post initial part of the exception displayed in the Error Page. With out it, it is difficult to say what is happening!
    - Winston
    http://blogs.sun.com/winston

  • Tuning the file adapter to parse subnodes

    I have been looking for a solution, that how to handle Hierarchies in receiver file content conversion but everyone's suggestion is to make it as flat structure, were subnodes cant be handled by File Adapter. But in my case, I should handle the hierarchies. So I traced the File adapter behaviour and now I'm able to achieve it in my case.
    My source data will be as follows,
    <Root>
    <Lineitem>
    <no>101</no>
    <name>pen</name>
    <Comment>
    <color>red</color>
    <price>20</price>
    </Comment>
    <Comment>
    <color>blu</color>
    <price>50</price>
    </Comment>
    </LineItem>
    </Root>
    My Receiver FCC parameters are
    LineItem.fieldFixedLengths = 3,3
    LineItem.absoluteRowWidth = 6
    Comment.fieldFixedLength = 3,2,3,2
    Comment.endSeparator = 'nl'
    Output:
    101pen
    red20
    blu50
    The reason I used 3,2,3,2 for Comment.fieldFixedLengths though it has only 2 fields because the parser considers the 'comment' as a field of 'lineitem' but for the 'comment' I had specified 'fieldFixedLength' parameters so it gets the fieldlength of 3rd field and omits the first two were it already passed.But for the other occurrances it going to take first two field lengths.
    The absolute row width is to make the subnode to be on next line.
    Though I achieved my need through this method, it has some drawbacks like
    >The number of elements in parent node must be greater or equal to child node.
    >Applicable only for fixedlength files.
    >wont applicable if it has more then two levels
    It works well, with many occurrences of both lineitem and comment.
    I would like to receive the suggestions,  since its not SAP recommended method.
    <<<soon to be blog'd in detail>>>

    Hi,
    Have a look at this.
    /people/karthiknarayan.kesavan2/blog/2007/08/22/file-content-conversion-for-multi-hierarchical-structure
    Regards,
    Akshay Jamgoankar.
    Reward Points if find useful.

  • Translation Error not happening in File Adapter Inbound

    I have been working on a requirement where the file adapter picks up the file and gives to the BPEL for processing the data.
    So, in order to do Error Handling for file adapter, i have been reading the Oracle documentation for technology adapters. In that, some of the
    points which i felt valuable for my error handling when using file adapter are the uniqueMessageSeparator property, fault-policies for rejected messages,
    and one of the action for rejected messages could be writing the payload to a file or invoking any other webservice. .
    In my composite, i have configured the file adapter as a service for reading files, and i defined the xsd using the native format builder....If i put some data like 'aaaa' in the attribute of type integer , the .csv file is being picked up and its being passed to the BPEL without any error ? I believe there should be a translation error...right...
    But i am not getting the error, please tell me if anything is wrong in my xsd....
    Here is my xsd....
    <?xml version="1.0" encoding="UTF-8" ?>
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:nxsd="http://xmlns.oracle.com/pcbpel/nxsd"
    xmlns:tns="http://TargetNamespace.com/InboundService"
    targetNamespace="http://TargetNamespace.com/InboundService"
    elementFormDefault="qualified"
    attributeFormDefault="unqualified"
    nxsd:version="NXSD"
    nxsd:stream="chars"
    nxsd:encoding="US-ASCII"
    nxsd:hasHeader="true"
    nxsd:headerLines="1"
    nxsd:headerLinesTerminatedBy="${eol}"
    <xsd:element name="names">
    <xsd:complexType>
    <xsd:sequence>
    <xsd:element name="name" minOccurs="1" maxOccurs="unbounded">
    <xsd:complexType>
    <xsd:sequence>
    <xsd:element name="FirstName" type="xsd:string" nxsd:style="" />
    <xsd:element name="LastName" type="xsd:string" nxsd:style="" />
    <xsd:element name="Number" type="xsd:integer" nxsd:style="" />
    </xsd:sequence>
    </xsd:complexType>
    </xsd:element>
    </xsd:sequence>
    </xsd:complexType>
    </xsd:element>
    </xsd:schema>
    In another composite, my file adapter is picking up the .xml file and if i put any wrong data over there, that is working fine, i am getting the trasnlation error, but only here in the case of csv file, i am not getting the error. Experts, please help me in this regard...I am using SOA 11G
    Thanks,
    Naresh

    pls help....

  • File Adapter - Exception / Error handling

    We are using File Adapter in BPEL process to read multiple records from the file. Additionally, we have also handled rejectedMessageHandlers & fatalErrorFailoverProcess exception to lunch custom BPEL process. The process is running fine and also successfully launches custom handler processes too.
    Need help / direction in addressing following issues.
    1. While reading from file, if a records errors out, the custom BPEL process is launched (as specified in rejectedMessageHandlers property). In such instance, the previously read valid records are processed but remaining records are marked as errored out. Our requirement is to make entire record set as invalid and would like to perform rollback of entire process.
    2. Whenever an error occurs during reading the records using File adapter, the associated data file is being deleted from the input directory and also NOT available in archive directory also.
    Are we missing any set up ? We are on 10.1.3.1
    thanks
    -Yj
    Sample Log file:
    <2009-04-20 11:46:14,080> <INFO> <default.collaxa.cube.activation> <AdapterFramework::Inbound> JCAActivationAgent::init - Initializing the JCA activation agent, processId='bpel://localhost/default/TestFileRead~1.0/
    <2009-04-20 11:46:14,080> <INFO> <default.collaxa.cube.activation> <AdapterFramework::Inbound> JCAActivationAgent::initiateInboundJcaEndpoint - Creating and initializing inbound JCA endpoint for:
    process='bpel://localhost/default/TestFileRead~1.0/'
    domain='default'
    WSDL location='Read.wsdl'
    portType='Read_ptt'
    operation='Read'
    activation properties={portType=Read_ptt, rejectedMessageHandlers=bpel://default|AdapterError2|initiate|payload}
    <2009-04-20 11:46:14,096> <INFO> <default.collaxa.cube.activation> <AdapterFramework::Inbound> Adapter Framework instance: OraBPEL - endpointActivation for portType=Read_ptt, operation=Read
    <2009-04-20 11:46:14,143> <INFO> <default.collaxa.cube.activation> <File Adapter::Inbound> Endpoint Activation called in File Adapter for endpoint: c:\temp\yj
    <2009-04-20 11:46:14,143> <INFO> <default.collaxa.cube.activation> <AdapterFramework::Inbound> Adapter Framework instance: OraBPEL - successfully completed endpointActivation for portType=Read_ptt, operation=Read
    <2009-04-20 11:46:30,580> <WARN> <default.collaxa.cube.activation> <File Adapter::Inbound> PollWork::run exiting, Worker thread will die
    <2009-04-20 11:47:14,158> <INFO> <default.collaxa.cube.activation> <File Adapter::Inbound> Translated inbound batch index 1 of file {testdata6.txt} with corrupted message count = 1
    <2009-04-20 11:47:14,158> <INFO> <default.collaxa.cube.activation> <File Adapter::Inbound> Sending message to Adapter Framework for rejection to user-configured rejection handlers : {
    fileName=C:\temp\yj\testdata6.txt, startLine=3, startColumn=1, endLine=-1, endCol=-1, Exception=ORABPEL-11168
    Error while reading native data.
    [Line=3, Col=5] Expected "|" for the data starting at the specified position, while trying to read the data for "element with name C2", using "style" as "terminated" and "terminatedBy" as "|", but not found.
    Ensure that "|", exists for the data starting at the specified position.
    <2009-04-20 11:47:14,158> <WARN> <default.collaxa.cube.activation> <AdapterFramework::Inbound> [Read_ptt::Read(Root-Element)]onReject: Sending invalid inbound message to Exception Handler: bpel://default|AdapterError2|initiate|payload
    <2009-04-20 11:47:14,315> <INFO> <default.collaxa.cube.activation> <File Adapter::Inbound> Setting last error record to : -1
    <2009-04-20 11:47:14,658> <ERROR> <default.collaxa.cube.activation> <AdapterFramework::Inbound> onBatchFailure: Batch 'bpel://localhost/default/TestFileRead~1.0//testdata6.txt_1240205493408' (C:\temp\yj\testdata6.txt) has failed due to: ORABPEL-11168
    Error while reading native data.
    [Line=3, Col=5] Expected "|" for the data starting at the specified position, while trying to read the data for "element with name C2", using "style" as "terminated" and "terminatedBy" as "|", but not found.
    Ensure that "|", exists for the data starting at the specified position.

    Any light / idea on the following issue ?
    1. While reading from file, if a records errors out, the custom BPEL process is launched (as specified in rejectedMessageHandlers property). In such instance, the previously read valid records are processed but remaining records are marked as errored out. Our requirement is to make entire record set as invalid and would like to perform rollback of entire process. Even, if we do not configure rejectedMessageHandlers, the behavior is that valid rows are processed with the rest of BPEL process and for Invalid rows, the records are rejected. Our requirement, is that, even if there is one invalid record, the entire set of record should NOT move ahead with the BPEL process
    2. Whenever an error occurs during reading the records using File adapter, the associated data file is being deleted from the input directory and also NOT available in archive directory also. Note, in case of all valid record the file is available in archive directory

  • Receiver file adapter creates empty files, Empty-Message Handling SP19

    Hello,
    We have just upgraded the system to SP19.
    One of the new features is that it should be possible to determine how XI messages with an empty main payload are to be handled in the receiver file adapter.
    If the parameter Empty-Message Handling is set to 'Ignore' no file should be created if the main payload is empty. In our case an empty file (size 0 kb) is still created even though the main payload is empty and the flag is set to 'Ignore'.
    Has anybody experienced the same problem?
    //  Best regards  Hans

    This should work:
    Use your own adapter module that parses incoming message and checks if it has any record sets in the document. If it does not have any record sets, then set the message to empty and then give this modified message to File receiver.
    For example, see the example code below:
    Module imports..
    Audit log import..
    DOM imports/SAX imports..
    public ModuleData process(ModuleContext moduleContext, ModuleData inputModuleData) throws ModuleException {
              try {
                   // get the XI message from the environment
                   Message msg = (Message) inputModuleData.getPrincipalData();
                   AuditMessageKey amk = new AuditMessageKey(msg.getMessageId(),AuditDirection.INBOUND);
                   Audit.addAuditLogEntry(amk, AuditLogStatus.SUCCESS,"RemoveRootTag: Module called");
                   XMLPayload payLoad = msg.getDocument();
                   Document doc = parseXmlFile(payLoad.getInputStream());
                   if(doc != null){
                        if(!doc.getDocumentElement().hasChildNodes()){
                             Audit.addAuditLogEntry(amk, AuditLogStatus.SUCCESS, "Document is empty!!");
                             payLoad.setContent("".getBytes());
                             msg.setDocument(payLoad);
                   // provide the XI message for returning
                   inputModuleData.setPrincipalData(msg);
                   } catch (Exception e) {
                   // raise exception, when an error occurred
                   ModuleException me = new ModuleException(e);
                   throw me;
                   // return XI message
              return inputModuleData;
         private Document parseXmlFile(InputStream xmlpayload) {
              try {
                   DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
                   factory.setValidating(false);
                   //        Create the builder and parse the file
                   Document doc = factory.newDocumentBuilder().parse(xmlpayload);
                   return doc;
              } catch (SAXException e) {
              } catch (ParserConfigurationException e) {
              } catch(IOException e){
              return null;

  • File adapter (sender) module throws exception, but adapter proceeds again

    Hello dear reader,
    I wrote a module that converts a flat file into XI-XML and tested it within the file adapter. It works fine so far. But if I force the module to throw an exception to handle an erroneous flat file, the file adapter tries to proceed the erroneous file again and again. Not very nice, isn´t it?
    Has anybody an idea, how to configure the file adapter to stop the processing of an erroneous file?
    Thank you in advance
    Yours
    Frank Waskow

    Hello Satish,
    the weblog doesn´t describe my problem correctly. Let me show you the Audit Log from the Messeage Display Tool of the Adapter Engine:
    Audit Log for Message: 06ff54a0-a258-11db-b9e2-003048226013
    Time Stamp     Status     Description
    2007-01-12 16:14:49     Success     Send text file "Invoice_error_wf.edi" from FTP server "HH-168:/XI_Infotag_Testdaten/EDIX/In", size 27993 bytes with QoS EO
    2007-01-12 16:14:50     Error     Attempt to process file failed with null
    2007-01-12 16:15:00     Success     Send text file "Invoice_error_wf.edi" from FTP server "HH-168:/XI_Infotag_Testdaten/EDIX/In", size 27993 bytes with QoS EO
    2007-01-12 16:15:00     Error     Attempt to process file failed with null
    2007-01-12 16:16:00     Success     Send text file "Invoice_error_wf.edi" from FTP server "HH-168:/XI_Infotag_Testdaten/EDIX/In", size 27993 bytes with QoS EO
    2007-01-12 16:16:00     Error     Attempt to process file failed with null
    2007-01-12 16:17:00     Success     Send text file "Invoice_error_wf.edi" from FTP server "HH-168:/XI_Infotag_Testdaten/EDIX/In", size 27993 bytes with QoS EO
    2007-01-12 16:17:00     Error     Attempt to process file failed with null
    2007-01-12 16:18:00     Success     Send text file "Invoice_error_wf.edi" from FTP server "HH-168:/XI_Infotag_Testdaten/EDIX/In", size 27993 bytes with QoS EO
    2007-01-12 16:18:00     Error     Attempt to process file failed with null
    It seems to me that the Adapter gets the error of the module, but it is not handled as an error like shown in the blog <a href="/people/sap.user72/blog/2005/11/29/xi-how-to-re-process-failed-xi-messages-automatically:///people/sap.user72/blog/2005/11/29/xi-how-to-re-process-failed-xi-messages-automatically.
    The adapter tries to proceed the same file again and again, till I delete it from the source directory.
    Any more idea?
    Frank

Maybe you are looking for