Database adapter to continue polling after hitting exception

I am using BPEL 10.1.3.5. Using Database adapter "LogicalDeletePollingStrategy".
On hitting the exception in one of the records the adapter stops polling/processing other records for that transaction.
Ideally it is expected to continue processing other records.
I believe in 11g there is a JCA property Undying that makes the adapter to continue processing after hitting an exception. How is it in 10g to get this.
Thanks,

There is no rejection handler been configured and I am not sure if its a better way to configure rejection handler for Database failed records to file.
As in 10g, the DB adapter stops after hitting exception for that transaction.

Similar Messages

  • Continuing execution after an exception

    I am getting exceptions in a program and since this is an unattended program, I need it to continue executing after an exception occurs. Some of the possible exceptions are: IOException, RuntimeException, SQLException.
    I already have several try/catch blocks in the program, but when an exception occurs, the code inside the catch block executes and the program stops there. What do I need to do to continue execution?
    Thx.

    Well, there are a few options available to you, but first a few questions:
    Are you re-throwing the exception within the catch block? If so, remove the throw statement
    Is the exception that is not caught not a subclass of Exception? Meaning, does it extend Error or Throwable instead? Trying to catch Exception on these will not work.As workarounds, you can try the following:
    Catch Throwable. This should get everything. Realize though, this is, in general, dangerous and bad practice, especially in a J2EE environment. You don't normally want to catch runtime exceptions or errors. But, you could create the Throwable catch block and then inspect what exception has not been previously caught by using exception.getClass().getName().
    Just for kicks and giggles, you can try the above, but this time catch RuntimeException. Make sure you don't re-throw the exception, and whatever code is below your try-catch-finally block should execute.
    - Saish
    "My karma ran over your dogma." - Anon

  • Rollback in database adapter with delete polling strategy

    Hi All,
    We have designed a database adapter with "Delete the Rows That Were Read" after read strategy with auto-retry attempts as 5. In BPEL process, where we are receiving the DB records, we are throwing a rollback fault in case of any fault.
    Database adapter polling is being re-tried 5 times in case of faults but the data is being deleted from the tables after 5 retries. Is this is the expected behavior of DB adapter? Doesn't the rollback fault rollback the complete transaction and leave the failed data back in the tables?
    Can any one provide more information on this polling strategy after the number of auto-retries are completed?.
    Thanks.
    -Pavan

    You need to include your bpel process in the same DB adapter transaction
    Use the following properties in the bpel component to do this
    <property name="bpel.config.transaction" type="xs:string" many="false">requiresNew</property>
        <property name="bpel.config.oneWayDeliveryPolicy" type="xs:string"
                  many="false">sync</property>
    Make sure the connection factory that you are using in the DB adapter is XA transaction enabled

  • Database adapter exception not caught

    Hello,
    I am testing a BPEL orchestration that was running overnight. This process was handling a lot of database transactions that would take quite some time to run. Sometime during the run the database adapter could not connect and an exception was thrown causing the instance to go into an open.faulted state. In the BPEL orchestration I have a Catch-All at the global scope to handle all uncaught exceptions, but apparently this one exception did not get caught. I have had database exceptions thrown and caught previously in other runs, but I am concerned why this one was not handled. Can anyone provide some insight on why this happened and how this can be prevented. I am using 10.1.3.4
    Thanks,
    Jim

    What was the fault. Have you any faults / configuration defined in the BPEL fault framework?
    cheers
    James

  • Issue in ESB Database Adapter

    hi
    I have a requirement where the database adapter has to poll for a particular status like NOT STARTED in table and
    based on the status change it should trigger a service asynchronously and then it should immediately update the
    status as STARTED.
    The configuration steps done in the wizard:
    Step 3 - Poll for New or Changed records in a Table
    Step 7 - we selected the operation to perform after the data is read from the database, and Update the Field in the table
    Step - 8 we Selected the Logical Field as table Column Status and
    Read Value: STARTED and Unread Value : NOT STARTED
    Database Rows per Transaction is Unlimited and also delay commit, Distributed Polling and Poll for child Updates are
    not selected.
    The database adapter is not stable at some point of time, it is not updating the status from NOT STARTED to
    STARTED after invoking the service asynchronously. Hence the whole process is repeating after some
    time interval because of the status remaining as NOT STARTED.
    Thanks

    Hi,
    No it is not a bug, I think. If you created your query by choosing from imported tables/views and related those using the wizard, the only way to change them is to re-import the tables and basically redefine your database adapter.
    It's a pity, but that's how it is (also in 10.1.2 I saw recently).
    Regards,
    Martien

  • How DB adapter works when polling strategy is "remove row selected"?

    How DB adapter works when polling strategy is "delete the rows that were read"?
    I want to know how database adapter works when polling startegy is "remove row".This polling strategy helps for polling the changes to table and remove records after new records are inserted or changes are done to table.Here,i want to understand how DB adapter identifies which record to be deleted.
    For example: there is a table with 100 recorrds.How DB adapter works when polling strategy is "delete the rows that were read"?
    I want to know how database adapter works when polling startegy is "delete the rows that were read".This polling strategy helps for polling the changes to table and remove records after new records are inserted or changes are done to table.Here,i want to understand how DB adapter identifies which record to be deleted.
    For example:
    There is a table EMP with 100 recorrds.Now, i deploy a BPEl process with db adapter polling on table EMP for changes.So that ,if any change happen to records in table that records will be picked up.I use a polling startegy "delete the rows that were read" .
    Now i insert 9 new records and update one existing records.These 10 records should be picked up and then deleted by Db adapter.In this 109 records how DB adapter identifies these 10 records when it polls.How it differentiatess old records with new records when there is no flag field or no sequence id used to identify the new or modified records.
    Please let me know.
    Why i want to know this?
    Some times customer may not allow BPEL process to do any modifications to source table or source database.In this case the options provided by database adapter wizard are not useful.
    If there is any mechanism to identify new or modified records without having a FLAG field or sequence table,then it is possible to have an option like only read the changes from table rather than deleting the records after reading.Which helps in meeting above requirement.
    Please let me know if there is any way to do this.
    thanks
    Arureddy

    Once the record has been read it is deleted. Therefore, you can update rows in this table as many times you like before it is read. Once it is read there will be nothing to update as it will be deleted.
    If you don't want to use a sequence table, you can use a sequence file. You can only use this functionality if the key you are using increments sequentially. e.g. 1,2,3,4. If your key is random, e.g. 2,1,3,5,7,4 then your options are delete or use a processing flag.
    The other option is to create a trigger that inserts a key into a polling table when insert or updates occur. You can then use the delete, which is the most desirable as it uses database locking.
    cheers
    James

  • Database Adapter with sql server connection cannot import user tables

    Hi,
    In jdeveloper 11g, I tried to create a sql server database connection, i could create the connection, i could see the tables and navigate through the data in
    Database navigator section. But while trying to import the tables in the Database adapter to do polling operation, It displays only the system tables like this
    syscolumns (dbo)
    syscomments (dbo)
    sysdepends (dbo)
    sysfilegroups (dbo)
    sysfiles (dbo)
    sysforeignkeys (dbo)
    sysfulltextcatalogs (dbo)
    sysindexes (dbo)
    sysindexkeys (dbo)
    sysmembers (dbo)
    sysobjects (dbo)
    syspermissions (dbo)
    sysprotects (dbo)
    sysreferences (dbo)
    systypes (dbo)
    sysusers (dbo)
    I am not understanding this wierd bahaviour of jdeveloper.
    please advise.
    -Chaitu
    Edited by: chaitu123 on May 13, 2010 9:16 AM

    This is NOT related solely to the SOA Suite. The same behavior appears in the Connections Navigator.
    IMHO, this is related to how JDeveloper is parsing the .getMetaData() response.
    Scott
    Edited by: user8951683 on May 21, 2010 8:08 AM

  • JDBC Sender Adapter polling after database failure

    Hi,
    I hope you can help, we have come across 2 instances where a database which is being polled by the JDBC adapter fails. When the database comes back up valid entries are not processed. The first instance of this was with a connection to an AS/400 based system in our test environment. The second instance was a MS SQL Server based system in our productive environment. As you can see the issue seems to be driver independent and not related to our specific XI server which is XI3.0 sp16. We can get things working again by a) restarting the J2EE server or b) Copying the communication channel and using this in our sender agreement.
    Clearing caches, deactivating and reactivating the communication channel and sender agreements etc did not work.
    Thanks,
    Pete

    Peter,
    Is the Database system going to be turned off / bounced back very often?
    If yes, in the JDBC adapter, in Advanced Mode, select option "Disconnect from database after each message processing" and this will do the trick.
    regards
    Bhavesh

  • Database adapter exception handling

    Using Database adapter in ESB process that polls using DeletePolling strategy.
    On hitting exception due to some date format issue the adapter stops polling and the polling resumes only after identifying and removing the faulty record from the table.
    We have to do manual process of identifying the faulty records, since the error is not reported in any of the log files.
    Can configure to log this type of error?
    Would any rejection handling work in this case?
    Using Oracle ESB 10.1.3.4

    When records are inserted into the table, then the date format will be of sql type which is supported by db adapter. This might not be causing the issue. I hope you don't have a scenario where db adapter is updating a record through it's logical delete strategy and the same record is updated by another service. This would result in stopping db adapter polling. Provide the log trace for this. You can change the mode to trace-32 at soa.adapter level in em console.
    HTH.
    -Sriharish.

  • Database Adapter using Logical Delete Polling Strategy not updating field

    I have an ESB database adapter defined against a table. The adapter is set to use the Logical Delete Polling Strategy, and the table has an extra column defined as the "delete" field. When I register the adapter to the ESB and add a record to the table, the adapter reads the contents of the record as expected. However, 15 seconds later (that being the polling interval) it reads it again, and again 15 seconds after that, ad infinitum.
    I have defined the logical delete field as a single character field and set the Read value for "T" (a record is normally inserted with that field having a null value). Results as outlined in the previous paragraph. I redefined the field as a number and set the Read value to "1" (with a record normally inserted with that field having a value of "0"). Results as outlined in the previous paragraph.
    Apparently the update of the logical delete value to the Read value is not occurring. My question (obviously) is: Why?
    Thanks for your time.

    Here is the adapter WSDL:
    <?xml version="1.0" encoding="UTF-8"?>
    <definitions
    name="Poll_PM_LOG"
    targetNamespace="http://xmlns.oracle.com/pcbpel/adapter/db/Poll_PM_LOG/"
    xmlns:tns="http://xmlns.oracle.com/pcbpel/adapter/db/Poll_PM_LOG/"
    xmlns:plt="http://schemas.xmlsoap.org/ws/2003/05/partner-link/"
    xmlns:jca="http://xmlns.oracle.com/pcbpel/wsdl/jca/"
    xmlns:pc="http://xmlns.oracle.com/pcbpel/"
    xmlns:top="http://xmlns.oracle.com/pcbpel/adapter/db/top/PollPMLOG"
    xmlns="http://schemas.xmlsoap.org/wsdl/">
    <types>
    <schema xmlns="http://www.w3.org/2001/XMLSchema">
    <import namespace="http://xmlns.oracle.com/pcbpel/adapter/db/top/PollPMLOG"
    schemaLocation="PollPMLOG_table.xsd"/>
    </schema>
    </types>
    <message name="LogCollection_msg">
    <part name="LogCollection" element="top:LogCollection"/>
    </message>
    <portType name="Poll_PM_LOG_ptt">
    <operation name="receive">
    <input message="tns:LogCollection_msg"/>
    </operation>
    </portType>
    <binding name="Poll_PM_LOG_binding" type="tns:Poll_PM_LOG_ptt">
    <pc:inbound_binding/>
    <operation name="receive">
    <jca:operation
    ActivationSpec="oracle.tip.adapter.db.DBActivationSpec"
    DescriptorName="PollPMLOG.Log"
    QueryName="Poll_PM_LOG"
    PollingStrategyName="LogicalDeletePollingStrategy"
    MarkReadFieldName="PROCESSED"
    MarkReadValue="T"
    SequencingFieldName="ID"
    MaxRaiseSize="1"
    MaxTransactionSize="unlimited"
    PollingInterval="15"
    NumberOfThreads="1"
    UseBatchDestroy="false"
    ReturnSingleResultSet="false"
    MappingsMetaDataURL="PollPMLOG_toplink_mappings.xml" />
    <input/>
    </operation>
    </binding>
    <service name="Poll_PM_LOG">
    <port name="Poll_PM_LOG_pt" binding="tns:Poll_PM_LOG_binding">
    <jca:address location="eis/DB/PM"
    UIConnectionName="PM"
    ManagedConnectionFactory="oracle.tip.adapter.db.DBManagedConnectionFactory"
    />
    </port>
    </service>
    <plt:partnerLinkType name="Poll_PM_LOG_plt" >
    <plt:role name="Poll_PM_LOG_role" >
    <plt:portType name="tns:Poll_PM_LOG_ptt" />
    </plt:role>
    </plt:partnerLinkType>
    </definitions>
    The field PROCESSED is defined as CHAR(1), and is normally null when a record is inserted. The value of the field is to be set to 'T' when the record is read by the polling adapter.

  • Oracle database Adapter polling in OSB Cluster

    Hi,
    I have OSB 11g with two nodes. I have a database adapter that polls a table after every 30 seconds and perform logical delete on the rows read. I came across interesting situation. When one node is up and PollingInterval=30, it works okay and polling is done right after 30 seconds but when both nodes are up the PollingInterval property doesnt work as expected.
    First node will poll after 24 seconds and then second node will again poll after 6 seconds (node1+node2=30 seconds in total).
    and After i restart the servers the first node is polling at 18 sec and second node is polling at 12 sec (node1 +node2=30 sec), so different polling intervals.
    How does it determines the first server should poll at 24 or 18 sec and second node should poll at 6 or 12 sec?
    I would like to know is there any property or configuration required to poll the table for each node for every 15 seconds (node1(15sec)+node2(15sec)=30 sec)?
    Please help me, It is very urgent?
    Thanks
    Rajesh.

    Hi,
          If any one has the same issue, please let me know.
    Also if you know the solution, can you please update here, it's very helpful for me.
    Thanks,
    Rejesh.

  • Jdev Database Adapter - polling updated rows

    Hello, I have a question reguarding the polling strategy available in the database adapter.
    I set it up and it works great with new inserted rows in the table.
    However, it doesn´t capture the updated rows!
    For instance, i have the following table:
    ID - NAME - AGE
    1 -John- 21
    2 -Mary- 25
    When I insert a new row, it is captured by comparing the last captured ID in the sequencing file.
    ID - NAME - AGE
    1 -John- 21
    2 -Mary- 25
    3 -Cindy- 20 <--------- New row
    But when i UPDATE an already existing row, it doesnt load the changed row!
    ID - NAME - AGE
    1 -John- 26 <----------- Age changed, but polling doesnt recognize it!
    2 -Mary- 25
    3 -Cindy- 20
    Is there a way to get this to work? Should I set an special option? Thank you very much.
    Im using jdeveloper 11g.

    Hi John, it depends on which type of polling strategy you are using to poll the new/updated records. You must have the necessary previleges to add the special field and creat triggers or your db team must have.
    i.Physical delete polling strategy: Cannot capture the UPDATE operations on the table.This because when the adapter listens to the table, when ever a record is polled, that record is deleted after the polling process. After polling the records, if it is not deleted, then the adapter knows that it’s a updated one but here when a record is polled, it is deleted. So when an adapter encounters a record, it’s a new record to the adapter though the record is updated before the polling cycle). So physical delete cannot capture UPDATED records.
    ii. Logical delete polling strategy: The logical delete polling strategy updates a special field of the table after processing each row (updates the where clause at runtime to filter out processed rows).The status column must be marked as processed after polling and the read value must be provided while configuring the adapter. Modified where clause and post-read values are handled automatically by the db adapter.
    Usage:
    <operation name="receive">
    <jca:operation
    ActivationSpec="oracle.tip.adapter.db.DBActivationSpec"
    PollingStrategyName="LogicalDeletePollingStrategy"
    MarkReadField="STATUS"
    MarkReadValue="PROCESSED"
    This polling strategy captures the updated records only if triggers are added.This is because when the record is polled, its status is updated to 'PROCESSED'. To capture this record if its updated, its status has to be 'UNPROCESSED'. So a trigger has to be added to update the status field to 'UNPROCESSED' whenever the record is updated. Below is the example.
    Ex:
    CREATE OR REPLACE TRIGGER nameOftrigger_modified
    BEFORE UPDATE ON table_name
    REFERENCING NEW AS modifiedRow
    FOR EACH ROW
    BEGIN
    *:modifiedRow.STATUS :='UNPROCESSED';*
    END;
    In this example, STATUS is the special field(of the polling table). When the record is updated, the trigger gets fired and updates the STATUS field to 'UNPROCESSED'. So when the table is polled, as this record's status is Unprocessed, this record ll be captured during polling.
    Other polling strategeis like "Sequencing Table Last Updated","Sequencing Table Last-Read Id" Polling strategy,etc also can be used to capture the updated records. In these strategies also, you need to add the triggers like the above. These need an extra helping table also to poll.
    Logical delete polling strategy is good enough to poll the updated records.
    Hope this helps.
    Thank you.

  • Database Adapter Poll doubt

    My requirement is, when ever a new recored inserted to CREDITCARDINFOPARENT table need to insert the same record to CREDITCARDINFORESULT;
    desc CREDITCARDINFOPARENT;
    Name Null? Type
    SNO NUMBER
    SSN NOT NULL VARCHAR2(15)
    FIRST_NAME VARCHAR2(30)
    LAST_NAME VARCHAR2(30)
    CCNUMBER NOT NULL VARCHAR2(20)
    CREDITRATING NUMBER
    STATUS NOT NULL VARCHAR2(20)
    CCNumber is my primary key
    desc CREDITCARDINFORESULT;
    Name Null? Type
    NO NUMBER
    SN NOT NULL VARCHAR2(15)
    FIRSTNAME VARCHAR2(30)
    LASTNAME VARCHAR2(30)
    CCNUMBER VARCHAR2(20)
    CRATING NUMBER
    CCSTATUS NOT NULL VARCHAR2(20)
    CCNUMBER is Foreign Key.
    I tried Poll DB adapter example in the following way
    Created a project with "Composite with Mediator"
    under exposed services I dragged DB Adapter
    Service Name-> Example Service
    Step 4 of 13 -> selected Poll or Changed Records in a table
    step 5 of 13 -> imported 2 tables (CREDITCARDINFOPARENT, CREDITCARDINFORESULT)
    step 6 of 13 -> displayed the Relationships
    step 8 of 13 -> After Read -> selected Update a Sequencing Table
    step 9 of 13 -> Sequencing Table: CREDITCARDINFORESULT
         Sequence Name Field: CCNUMBER
         Sequence Value Field: STATUS
         Sequence ID Field: CCNUMBER
    step 10 of 13 -> Polling Options: SQL
              Pre Polling SQL:
    SELECT STATUS FROM CREDITCARDINFORESULT WHERE (CCNUMBER = 'CREDITCARDINFOPARENT')
    Polling SQL:
    SELECT SNO, SSN, FIRST_NAME, LAST_NAME, CCNUMBER, CREDITRATING, STATUS FROM CREDITCARDINFOPARENT WHERE ((STATUS = 'VALID') AND (CCNUMBER > #STATUS)) ORDER BY CCNUMBER ASC
    After Read SQL:
    UPDATE CREDITCARDINFORESULT SET STATUS = #STATUS WHERE (CCNUMBER = 'CREDITCARDINFOPARENT')
    step 11 of 13 ->Define Selection Criteria:
              Parameters:ccno
              SQL: SELECT SNO, SSN, FIRST_NAME, LAST_NAME, CCNUMBER, CREDITRATING, STATUS FROM CREDITCARDINFOPARENT WHERE ((STATUS = 'VALID') AND (CCNUMBER > #STATUS)) ORDER BY CCNUMBER ASC
    Under External Services : I dragged DB Adapter and i selected Perform an Operation on a table as Insert Only. and I imported CREDITCARDINFORESULT
    I deployed the the Project. Project depolyed successfully;
    under EnterpriseManager command prompt I got
    <Jun 29, 2010 2:25:46 PM IST> <Warning> <oracle.soa.adapter> <BEA-000000> <JCABinding=> ExampleProject JNDI lookup of 'eis/DB/soademodatabase' f
    ailed due to: Unable to resolve 'eis.DB.soademodatabase'. Resolved 'eis.DB'>
    <Jun 29, 2010 2:25:46 PM IST> <Error> <oracle.soa.adapter> <BEA-000000> <JCABinding=> ExampleProject Error while performing endpoint Activation:
    BINDING.JCA-12561
    JCA Resource Adapter location error (WebLogic).
    Unable to locate the JCA Resource Adapter via .jca binding file element <connection-factory/>
    The JCA Binding Component is unable to startup the Resource Adapter specified in the <connection-factory/> element: location='eis/DB/soademodata
    base'.
    The reason for this is most likely that either
    1) the Resource Adapters RAR file has not been deployed successfully to the WebLogic J2EE Application server or
    2) the JNDI <jndi-name> setting in the WebLogic JCA deployment descriptor has not been set to eis/DB/soademodatabase. In the last case you might
    have to add a new 'connector-factory' entry (connection) to the deployment descriptor.
    Please correct this and then restart the WebLogic Application Server
    >
    I confugired the Connection factory properly; I checked at DB Adapter -> Configuration -> Outbound Connection Pools -> xADataSourceName -     jdbc/soadeoDatabase
    when I checked at JNDI tree I dont have any value under it.
    in Firefox EM, when I clicked on Example Project Test button is disabled. and I inserted one record to CREDITCARDINFOPARENT; but CREDITCARDINFORESULT table is not updated.
    can any body help me in this?
    Please let me know whether I follwed correct procedure or not?
    If I am wrong, please provide me the correct steps.
    Thanks in Advance.

    This error is usually raised if there is no outbound pool connections with the "eis/db/soademodata" name in the database adapter.
    First create a data source to the database in the JDBC Resources.
    Next in Weblogic server console --> Deployments --> DBAdapter --> Configurations --> Outbound Pool Connections --> create a new outbound pool connection with the name "eis/db/soademodata".
    Now update the "xADataSourceName" property of this connection pool with the JNDI name of the datasource created in the first step.
    Regards,
    KSN Pavan
    Edited by: KSN Pavan on Jun 30, 2010 2:51 AM

  • Intermittence for execute Polling with DataBase Adapter in OSB11g

    Hello Guys,
    I'm having a problem running the polling DataBase Adapter OSB11g. The creation of the adapter was made in Jdeveloper 11.
    The problem is:
    Intermittence to run the polling DataBase. Sometimes it works, other time it does not work.
    Displays the following exception:
    *<Info> <JCA_FRAMEWORK_AND_ADAPTER> <BEA-000000> <<oracle.tip.adapter.db.InboundWork handleException> BINDING.JCA-11624*
    DBActivationSpec Polling Exception.
    *Query name: [BD_XPTO_NOTIFICA_XPTOSelect], Descriptor name: [BD_XPTO_NOTIFICA_PRICING.XPTO]. Polling the database for events failed on this iteration.*
    Caused by JTS transaction was marked rollback only.
    This exception is considered retriable, likely due to a communication failure.  Polling will be attempted again next polling interval.
    This is a BUG? Have Fix?
    Tks,
    Azevedo, Artur.

    It looks like a database issue or a XA configuration issue? What database you're polling? Oracle? Sybase? Check if your database is supported...
    Cheers,
    Vlad

  • Polling table with Database Adapter

    Hi All,
    I have created a Database Adapter to poll the table for the new record or modified.
    I have added a receive activity to that Adapter and deployed.
    However the instance is not completing and its in always running state and waiting at receive activity.
    Can you please help me out
    Thanks

    hello,
    i have to do database polling..this is wat i have done.but instance is not getting created in BPEL..
    i have created a sequence in databse.
    i have created a source table in database which has three colums id,name,sequence.(generated by doin seq.nextval)
    i have created a table as seqhelper table which has two fields table_name and seqid.
    now i hav dragged a db adapter.I hav chosen poll,update seq table..and given my seq table name,seqname filed as table_name,seqvalue field as seqid.and sequence fiels ad sequence column of source table ...and done polling frequency as 5 seconds.
    now created a bpel process,chosen interface as based on wsdl and selected db adapters wsdl file and linked to bpel after removing the default exposed service of bpel..so bpel as one receive activity joined to db adapter...
    WHEN<
    i am inserting any new records to source table....instance is not getting created...please help..

Maybe you are looking for