SOA database poller

Hi All,
I am using a DB poller to read records from the table.
The problem is the DB poller picks the records randomly but I want it to process records by creation_date.
Here is my configuration.
<endpoint-activation portType="XX_ptt" operation="receive">
    <activation-spec className="oracle.tip.adapter.db.DBActivationSpec">
      <property name="DescriptorName" value="TestPoller.Test"/>
      <property name="QueryName" value="TestPollerSelect"/>
      <property name="MappingsMetaDataURL" value="TestPoller-or-mappings.xml"/>
      <property name="PollingStrategy" value="LogicalDeletePollingStrategy"/>
      <property name="PollingInterval" value="5"/>
      <property name="MaxRaiseSize" value="1"/>
      <property name="MaxTransactionSize" value="10"/>
      <property name="SequencingColumn" value="CREATION_DATE"/>
      <property name="NumberOfThreads" value="3"/>
      <property name="ReturnSingleResultSet" value="false"/>
      <property name="MarkReadColumn" value="RECORD_STATUS"/>
      <property name="MarkReservedValue" value="R${weblogic.Name-2}-${IP-2}"/>
      <property name="MarkReadValue" value="PROCESSED"/>
      <property name="MarkUnreadValue" value="NEW"/>
    </activation-spec>
Thanks,
Prasanna

Ok,
When you say it is random did you mean that sometimes, you adapter process rows not in the right sequence ?
If yes, you should see this part of the official documentation :
When polling the database for events, you can order the returned rows by the selected column by using the Order By list. The best practice is to choose <No Ordering>, as message ordering regardless is not guaranteed without extra configuration.
I suspect that you have to setup your adapter differently in order to keep the right sequence. I have not the time to check if the answer is in the documentation but I guess that having 3 threads is at least one of the reason.
regards,
mathieu

Similar Messages

  • Database Poller to start the control flow

    I am relatively new to BPEL/SOA. I need your help in the design process
    I have a design as following:
    I have to essentially bring data from DB2 database into Siebel. On the Siebel side I have the Webservices created.
    1. rowid, tablename, isTheRowProcessed, timestamp.is the structure of my polling table's structure.
    The tablename column will tell me which application table has been updated/inserted with new data.
    2. The Database Poller will poll the Polling table every minute and see there is a new row. The BPEL will read the tablename column and fetch the name of the table.
    3. Depending on the name of the tablename, a specific Web Service will be invoked which will insert the data into the Siebel system.
    for example, if the new row is:
    10 TableA NotRead 8/19/2012 10:10:10
    The poller should the read above and make it "10 TableA Read 8/19/2012 10:10:10"
    Then WebServiceA should be invoked with some data.
    Here is My question:
    Should it be Async BPEL process or Synchronous process that should have the Poller?
    Will Poller kick start sub BPEL processes?

    I have a DB poller which has only one row (always just one row) and the Poller would update flag to N from Y.
    The DBPoller is set to run every two seconds. I have a flag that is initially set by human to Y. The Poller will flip the value of the flag to N (from Y) and initiate a one-way BPEL process and if the BPEL process will set the Flag back to Y if successful. If the BPEL process fails then the BPEL process will leave the value of the flag to N and the BPEL process sends a mail to the users about the failure. The users after fixing the issue (may be some of the Web Services called by the BPEL are unavailable), will set the flag to Y and the process will continue.
    The above intention is supposed to create create an instance id only after entire BPEL is executed. The poller is configured to execute every 2 seconds.
    instance_id starttime BPEL Execution time
    1 5:00:00 30 seconds
    2 5:00:02 20 seconds
    3 5:00;04 25 seconds
    The above is the scenario is my current execution.
    I thought that the second instance would start at 5:00:30 because the flag value would be N from 5:00:00 to 5:00:30 and the BPEL process would set the flag's value to Y at the end of execution of the BPEL process (instance 1). But, to my surprise 2nd instance is starting at 5:00:02 (just because the poller is configured to run every 2 seconds). Even if the poller is configured to run every 2 seconds the poller should not create BPEL process because the Poller at 5:00:02 should see the flag value of N (The poller should only create an instance if the flag's value is Y).
    Please clarify this behavior.

  • Database Poller issues in Clustered env

    Hi,
    I am running Oracle BPEL 10.1.3.4 on top of Weblogic version 9.x in a clustered env. I created a simple database poller BPEL process (for target table in Oracle database) with below parameters:
    Max Raise Size: 1
    Max Transaction Size: 2
    Polling Interval:30
    Distributed Polling is enabled
    All other BPEL engine and domain level parameters have default values.
    In my clustered env two instances of database poller BPEL process are running on diff nodes. Now I populated my table with 1000 records in one go. According to parameters I expect:
    - In each polling interval max 2 record will be processed by database poller BPEL process running on single node. And there will be 2 instances of this bpel process as max raise size is 1. Same I expect for database poller BPEL process running on another node. So overall 4 records should be processed in each polling interval and 4 instances of BPEL processes should be visible in BPEL console. But in actual its always 2.
    Is I am missing something here? Won't the load balancer distributes records to BPEL processes on both nodes equally?
    Also then I raise Max transaction size to higher value e.g. 20. But in this case after processing nearly 1/3 rd of records, the BPEL process stopped picking up any further records. Is there any known issue where Adapter stops picking any further database records if transaction size limit is higher?
    thanks
    Ankit
    Edited by: AnkitAggarwal on 22-Feb-2010 03:36

    Hi Ankit,
    I have Oracle BPEL env11.1.1.2.0 clustered over 2 nodes.
    I am facing a similar issue. In my scenario I have Bpel (with DB poller) and its deployed on the cluster. And I am connected to DB via Multi data source (MDS-1) with only one datasource (DS-1) configured in it.
    So whenever I update the table which is being polled, in some cases I have TWO instances and in some cases I have ONE Instance running. My requirement is to have only one instance running every time the DB poller is initiatied.
    Kindly help me out.
    Thank You
    Best Regards
    Prasanth

  • Where is the BPEL Instance payload stored in soa database?

    Hi all,
    Given an instance id, I need to get the payload used to invoke the BPEL.
    I searched in the soa database. Also I went through the bpel client apis. But I couldn't find any. Is there any table in the BPEL dehydration store that can give me the entire bpel instance input payload given the instance_id?
    Thanks,
    Shyamala

    Hi,
    have you tried to unzip the blob inside the xml_document table?
    the dockey is availalbe via document_ci_ref

  • Database polling performance issues

    I am using Database polling to detect database changes for OLTP application.
    my doubts are
    1) will it affect performance of OLTP application
    2) If so what would be the impact on OLTP application
    3) How we can improve performance
    4) any link to get more idea about this.

    1) will it affect performance of OLTP application
    No IT WONT AFFECT BECAUSE oltp Aapplication has
    Transactions that involve small amounts of data
    * Indexed access to data
    * Many users
    * Frequent queries and updates
    * Fast response times
    2) If so what would be the impact on OLTP application
    N/A
    3) How we can improve performance
    Do not poll the table for 30 secs interval poll for atleast 45 secs intervals
    4) any link to get more idea about this.
    N/A

  • Database polling process

    I have created a bpel database polling process to process a single table and use a logical update (mark a column as processed). The table will contain many unprocessed records at any time. I have setup the polling interval 5 Sec and records unlimited for each polling interval and in the process i am calling a stored procedure to insert same data into another database.
    My doubts
    But It fetches only one record and different instance is created for every Row. Is it normal process?
    Why it takes only record after using unlimited option?
    why i am asking this means i don't want to call stored procedure for each and every record.
    I'm using MS SQL Server 2005.
    any one pls let me know what is happening inside.

    Depends on how you define performance. DBs are generally designed for this kind of load so you then need to look at the middleware. The concern I always have is how big can this message get. If it can potentially grow big, I would say over 10MB then you could run into trouble if you haven't tuned for that, 1 10MB file could hang your whole system if not tuned (extreme case to make a point). If you have it running row by row it may take more time but they will go though. Without knowing more about your environment I can't comment too much more, e.g. patterns, hardware, load etc.
    Also polling isn't the most effective way long term to invoke a message. If the table is going to grow large I would look at partitioning as that select statement will deteriorate over time as you don't delete the records once read. ( I'm just trying to give you things to think about it may not be relevant your your site)
    cheers
    James

  • Can we put multiple Database Polling within the asynchronous process

    Hi,
    Can we put multiple Database polling within the the same asynchronous BPEL process.
    There will be multiple Receive activities to receive the data from the poller.
    Saptarishi

    Hi Peter,
    I am using 10.1.3.4 and cannot use ESB/mediator.
    For the 2nd option,
    I have tried to put multiple receive's to poll data from a table but it does not work(it waits at the 2nd Receive). Let me try to elaborate the issue a bit.
    I have created a table for polling.
    The table has 3 columns :- transaction_id, status, is_read
    is_read is kept to implement the logical delete strategy of DB polling.
    What I need to do is to maintain a single instance of BPEL to maintain a transaction(which is uniquely identified by transaction_id).
    The BPEL should track the different stages of the transaction, i.e whenever a new row is inserted in the table with the updated status for a transaction, it must find the correct instance(by co-relating the transaction_id) and go to the next step (wait for the next receive activity) until all the steps of the transaction is completed.
    In the code, I created a correlation set consisting of transaction_id(only). The property transaction_id has an alias to the inbound variable's payload.
    In the first Receive, I checked the "create instance" checkbox. Also the correlation set is initialized.
    From next Receive onwards the correlation set is checked.
    The polling frequency is 5 secs.
    The first Receive works fine and the process is instantiated. But it waits at the 2nd Receive indefinitely.
    It will be very helpful if you can try this once. If you feel this is not the right approach, please guide me.
    Thanks and Regards,
    Saptarishi

  • SOA database: rejected_message

    Hello,
    Our SOA database has space issues and I'm trying to find information on how to manage the size. I'm particularly interested in the table REJECTED_MESSAGE. Is this table included in the purge scripts (e.g. delete_instances)? Our table has several million rows and I need a way of clearing out old records contained therein.
    Thanks in advance for any assistance.

    You need to create your custom scripts to do the same.
    Please follow the link
    https://blogs.oracle.com/soaproactive/entry/soa_suite_11g_purging_guide

  • Current DateTime in Database polling 'WHERE Clause'

    Hi,
    I am trying to explore the usage of polling option with Database adapter in SOA Suite 11g.
    I am doing a sample process which will poll the data from a database table which has 2 fields, one is ID and the other one is UpdatedDate which is of type TIMESTAMP. I am trying to delete the records after polling, whose UpdatedDate is less than the current date. I am using the where clause in polling option to set the condition of UpdatedDate < CurrentDate.
    The problem is I am not getting, how to get the current date in the right side of the expression. To provide the right side option, we have 3 options of Literal, Query and parameter. I have tried will all the options; when I am trying with Literal, the right side is updated with Null value.
    Could any one help me to resolve this issue. I need the value of current dateTime as the right side expression of the where clause.
    Thanks.

    Hi,
    You're maybe over complicating this... The DbAdapter should be able to delete processed records automatically for you since you use one of the defined polling strategies...
    http://docs.oracle.com/cd/E28280_01/integration.1111/e10231/adptr_db.htm#CHDEFACG
    Cheers,
    Vlad

  • Database Polling Fails when target database re-started

    Hi
    I have a problem with a BPEL process that is polling records from the database. I noticed that no records had been picked up in a while and that no errors were being caught by the process. When i checked the domain log I could see that the error below had occurred and was retrying. I found out that the target SQLServer database had been restarted, but as far as I was aware the connection should refresh once the database restarts.
    This is quite a concern for my client who is querying the stability of the SOA suite. they frequently restart their SQL Server database and do not want to have to refresh connections to solve the problem from the application server each time. They are currenlty using 10.1.3.3.0 of the SOA suite software so the connection should be reintiated when the target database is started again.
    Does any one have any idea why this error is occuring??
    <2008-03-18 18:34:16,987> <INFO> <default.collaxa.cube.activation> <Database Adapter::Inbound> <oracle.tip.adapter.db.exceptions.DBResourceException createEISException> A retriable exception occured. In BPEL you can configure a fault policy (starting with 10.1.3.3) to automatically perform retries. Please configure bpel/domains/<domainName>config/fault-bindings.xml
    <2008-03-18 18:34:17,007> <WARN> <default.collaxa.cube.activation> <Database Adapter::Inbound>
    ORABPEL-11624
    DBActivationSpec Polling Exception.
    Query name: [readProjectCodes], Descriptor name: [readProjectCodes.EFolder]. Polling the database for events failed on this iteration. [Caused by: Broken pipe]
    If the cause is something like a database being down successful polling will resume once conditions change. Caused by Exception [TOPLINK-4002] (Oracle TopLink - 10g Release 3 (10.1.3.3.0) (Build 070608)): oracle.toplink.exceptions.DatabaseException
    Internal Exception: java.sql.SQLException: I/O Error: Broken pipeError Code: 0
    Call:SELECT eFolderID, eMapName, eCategory, eStageName FROM dbo.eFolder WHERE ((((eStageName = ?) AND (eMapName = ?)) AND ((eCategory <> ?) OR (eCategory IS NULL))) AND ((eCategory <> ?) OR (eCategory IS NULL))) ORDER BY eFolderID ASC
         bind => [Oracle SOA Finance interface, ProjectCode, SOAProcess, SOARead]
    Query:ReadAllQuery(bpel___localhost_default_ReadProjectCodesEworks_1_5__1205248248244.readProjectCodes.EFolder).
         at oracle.tip.adapter.db.exceptions.DBResourceException.createEISException(DBResourceException.java:461)
         at oracle.tip.adapter.db.exceptions.DBResourceException.inboundReadException(DBResourceException.java:376)
         at oracle.tip.adapter.db.InboundWork.handleException(InboundWork.java:633)
         at oracle.tip.adapter.db.InboundWork.runOnce(InboundWork.java:576)
         at oracle.tip.adapter.db.InboundWork.run(InboundWork.java:416)
         at oracle.tip.adapter.db.inbound.InboundWorkWrapper.run(InboundWorkWrapper.java:43)
         at oracle.tip.adapter.fw.jca.work.WorkerJob.go(WorkerJob.java:51)
         at oracle.tip.adapter.fw.common.ThreadPool.run(ThreadPool.java:272)
         at java.lang.Thread.run(Thread.java:595)
    Caused by: Exception [TOPLINK-4002] (Oracle TopLink - 10g Release 3 (10.1.3.3.0) (Build 070608)): oracle.toplink.exceptions.DatabaseException
    Internal Exception: java.sql.SQLException: I/O Error: Broken pipeError Code: 0
    Call:SELECT eFolderID, eMapName, eCategory, eStageName FROM dbo.eFolder WHERE ((((eStageName = ?) AND (eMapName = ?)) AND ((eCategory <> ?) OR (eCategory IS NULL))) AND ((eCategory <> ?) OR (eCategory IS NULL))) ORDER BY eFolderID ASC
         bind => [Oracle SOA Finance interface, ProjectCode, SOAProcess, SOARead]
    Query:ReadAllQuery(bpel___localhost_default_ReadProjectCodesEworks_1_5__1205248248244.readProjectCodes.EFolder)
         at oracle.toplink.exceptions.DatabaseException.sqlException(DatabaseException.java:290)
         at oracle.toplink.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:581)
         at oracle.toplink.internal.databaseaccess.DatabaseAccessor.executeCall(DatabaseAccessor.java:441)
         at oracle.toplink.threetier.ServerSession.executeCall(ServerSession.java:457)
         at oracle.toplink.internal.sessions.IsolatedClientSession.executeCall(IsolatedClientSession.java:117)
         at oracle.toplink.internal.queryframework.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:117)
         at oracle.toplink.internal.queryframework.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:103)
         at oracle.toplink.internal.queryframework.DatasourceCallQueryMechanism.executeSelectCall(DatasourceCallQueryMechanism.java:174)
         at oracle.toplink.internal.queryframework.DatasourceCallQueryMechanism.selectAllRows(DatasourceCallQueryMechanism.java:481)
         at oracle.toplink.internal.queryframework.ExpressionQueryMechanism.selectAllRowsFromTable(ExpressionQueryMechanism.java:825)
         at oracle.toplink.internal.queryframework.ExpressionQueryMechanism.selectAllRows(ExpressionQueryMechanism.java:803)
         at oracle.toplink.queryframework.ReadAllQuery.executeObjectLevelReadQuery(ReadAllQuery.java:473)
         at oracle.toplink.queryframework.ObjectLevelReadQuery.executeDatabaseQuery(ObjectLevelReadQuery.java:811)
         at oracle.toplink.queryframework.DatabaseQuery.execute(DatabaseQuery.java:620)
         at oracle.toplink.queryframework.ObjectLevelReadQuery.execute(ObjectLevelReadQuery.java:779)
         at oracle.toplink.queryframework.ReadAllQuery.execute(ReadAllQuery.java:451)
         at oracle.toplink.publicinterface.Session.internalExecuteQuery(Session.java:2089)
         at oracle.toplink.publicinterface.Session.executeQuery(Session.java:993)
         at oracle.tip.adapter.db.inbound.DestructivePollingStrategy.poll(DestructivePollingStrategy.java:347)
         at oracle.tip.adapter.db.InboundWork.runOnce(InboundWork.java:505)
         ... 5 more
    Caused by: java.sql.SQLException: I/O Error: Broken pipe
         at net.sourceforge.jtds.jdbc.TdsCore.executeSQL(TdsCore.java:1052)
         at net.sourceforge.jtds.jdbc.JtdsStatement.executeSQLQuery(JtdsStatement.java:465)
         at net.sourceforge.jtds.jdbc.JtdsPreparedStatement.executeQuery(JtdsPreparedStatement.java:777)
         at net_sourceforge_jtds_jdbc_JtdsPreparedStatement_Proxy.executeQuery()
         at oracle.toplink.internal.databaseaccess.DatabaseAccessor.executeSelect(DatabaseAccessor.java:744)
         at oracle.toplink.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:516)
         ... 23 more
    Caused by: java.net.SocketException: Broken pipe
         at java.net.SocketOutputStream.socketWrite0(Native Method)
         at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
         at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
         at java.io.DataOutputStream.write(DataOutputStream.java:90)
         at net.sourceforge.jtds.jdbc.SharedSocket.sendNetPacket(SharedSocket.java:671)
         at net.sourceforge.jtds.jdbc.RequestStream.putPacket(RequestStream.java:560)
         at net.sourceforge.jtds.jdbc.RequestStream.flush(RequestStream.java:508)
         at net.sourceforge.jtds.jdbc.TdsCore.executeSQL(TdsCore.java:1039)
         ... 28 more
    <2008-03-18 18:34:47,265> <INFO> <default.collaxa.cube.activation> <Database Adapter::Inbound> <oracle.tip.adapter.db.exceptions.DBResourceException createEISException> A retriable exception occured. In BPEL you can configure a fault policy (starting with 10.1.3.3) to automatically perform retries. Please configure bpel/domains/<domainName>config/fault-bindings.xml
    <2008-03-18 18:34:47,270> <WARN> <default.collaxa.cube.activation> <Database Adapter::Inbound>
    ORABPEL-11624
    DBActivationSpec Polling Exception.
    Query name: [readProjectCodes], Descriptor name: [readProjectCodes.EFolder]. Polling the database for events failed on this iteration. [Caused by: Invalid state, the Connection object is closed.]
    If the cause is something like a database being down successful polling will resume once conditions change. Caused by Exception [TOPLINK-4002] (Oracle TopLink - 10g Release 3 (10.1.3.3.0) (Build 070608)): oracle.toplink.exceptions.DatabaseException
    Internal Exception: java.sql.SQLException: Invalid state, the Connection object is closed.Error Code: 0
    Call:SELECT eFolderID, eMapName, eCategory, eStageName FROM dbo.eFolder WHERE ((((eStageName = ?) AND (eMapName = ?)) AND ((eCategory <> ?) OR (eCategory IS NULL))) AND ((eCategory <> ?) OR (eCategory IS NULL))) ORDER BY eFolderID ASC
         bind => [Oracle SOA Finance interface, ProjectCode, SOAProcess, SOARead]
    Query:ReadAllQuery(bpel___localhost_default_ReadProjectCodesEworks_1_5__1205248248244.readProjectCodes.EFolder).
         at oracle.tip.adapter.db.exceptions.DBResourceException.createEISException(DBResourceException.java:461)
         at oracle.tip.adapter.db.exceptions.DBResourceException.inboundReadException(DBResourceException.java:376)
         at oracle.tip.adapter.db.InboundWork.handleException(InboundWork.java:633)
         at oracle.tip.adapter.db.InboundWork.runOnce(InboundWork.java:576)
         at oracle.tip.adapter.db.InboundWork.run(InboundWork.java:416)
         at oracle.tip.adapter.db.inbound.InboundWorkWrapper.run(InboundWorkWrapper.java:43)
         at oracle.tip.adapter.fw.jca.work.WorkerJob.go(WorkerJob.java:51)
         at oracle.tip.adapter.fw.common.ThreadPool.run(ThreadPool.java:272)
         at java.lang.Thread.run(Thread.java:595)
    Caused by: Exception [TOPLINK-4002] (Oracle TopLink - 10g Release 3 (10.1.3.3.0) (Build 070608)): oracle.toplink.exceptions.DatabaseException
    Internal Exception: java.sql.SQLException: Invalid state, the Connection object is closed.Error Code: 0
    Call:SELECT eFolderID, eMapName, eCategory, eStageName FROM dbo.eFolder WHERE ((((eStageName = ?) AND (eMapName = ?)) AND ((eCategory <> ?) OR (eCategory IS NULL))) AND ((eCategory <> ?) OR (eCategory IS NULL))) ORDER BY eFolderID ASC
         bind => [Oracle SOA Finance interface, ProjectCode, SOAProcess, SOARead]
    Query:ReadAllQuery(bpel___localhost_default_ReadProjectCodesEworks_1_5__1205248248244.readProjectCodes.EFolder)
         at oracle.toplink.exceptions.DatabaseException.sqlException(DatabaseException.java:290)
         at oracle.toplink.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:581)
         at oracle.toplink.internal.databaseaccess.DatabaseAccessor.executeCall(DatabaseAccessor.java:441)
         at oracle.toplink.threetier.ServerSession.executeCall(ServerSession.java:457)
         at oracle.toplink.internal.sessions.IsolatedClientSession.executeCall(IsolatedClientSession.java:117)
         at oracle.toplink.internal.queryframework.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:117)
         at oracle.toplink.internal.queryframework.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:103)
         at oracle.toplink.internal.queryframework.DatasourceCallQueryMechanism.executeSelectCall(DatasourceCallQueryMechanism.java:174)
         at oracle.toplink.internal.queryframework.DatasourceCallQueryMechanism.selectAllRows(DatasourceCallQueryMechanism.java:481)
         at oracle.toplink.internal.queryframework.ExpressionQueryMechanism.selectAllRowsFromTable(ExpressionQueryMechanism.java:825)
         at oracle.toplink.internal.queryframework.ExpressionQueryMechanism.selectAllRows(ExpressionQueryMechanism.java:803)
         at oracle.toplink.queryframework.ReadAllQuery.executeObjectLevelReadQuery(ReadAllQuery.java:473)
         at oracle.toplink.queryframework.ObjectLevelReadQuery.executeDatabaseQuery(ObjectLevelReadQuery.java:811)
         at oracle.toplink.queryframework.DatabaseQuery.execute(DatabaseQuery.java:620)
         at oracle.toplink.queryframework.ObjectLevelReadQuery.execute(ObjectLevelReadQuery.java:779)
         at oracle.toplink.queryframework.ReadAllQuery.execute(ReadAllQuery.java:451)
         at oracle.toplink.publicinterface.Session.internalExecuteQuery(Session.java:2089)
         at oracle.toplink.publicinterface.Session.executeQuery(Session.java:993)
         at oracle.tip.adapter.db.inbound.DestructivePollingStrategy.poll(DestructivePollingStrategy.java:347)
         at oracle.tip.adapter.db.InboundWork.runOnce(InboundWork.java:505)
         ... 5 more
    Caused by: java.sql.SQLException: Invalid state, the Connection object is closed.
         at net.sourceforge.jtds.jdbc.ConnectionJDBC2.checkOpen(ConnectionJDBC2.java:1634)
         at net.sourceforge.jtds.jdbc.ConnectionJDBC2.prepareStatement(ConnectionJDBC2.java:2328)
         at net_sourceforge_jtds_jdbc_ConnectionJDBC3_Proxy.prepareStatement()
         at oracle.toplink.internal.databaseaccess.DatabaseAccessor.prepareStatement(DatabaseAccessor.java:1216)
         at oracle.toplink.internal.databaseaccess.DatabaseAccessor.prepareStatement(DatabaseAccessor.java:1170)
         at oracle.toplink.internal.databaseaccess.DatabaseCall.prepareStatement(DatabaseCall.java:591)
         at oracle.toplink.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:491)
         ... 23 more
    <2008-03-18 18:35:17,633> <INFO> <default.collaxa.cube.activation> <Database Adapter::Inbound> <oracle.tip.adapter.db.exceptions.DBResourceException createEISException> A retriable exception occured. In BPEL you can configure a fault policy (starting with 10.1.3.3) to automatically perform retries. Please configure bpel/domains/<domainName>config/fault-bindings.xml

    I work with ditchTwentyThree. We are still getting this problem.
    To clarify, the situation is that when we use the BPEL Database Adapter to Poll a SQL Server Database we get the behaviour that if the database is not available, the retry policy is referenced and the polling retries every 30 seconds. All good so far. However, when the Database becomes available again the polling still fails in the same way - until the SQL Server Database Connection is manually refreshed through EM. The behaviour we would expect is for the Polling to reinitiate as soon as the SQL Server becomes available without any manual intervention.
    We have configured the DB Adapter retry policies in the same way as we have done for polling an Oracle database (all this works well with Oracle).
    Can anyone help or confirm that this has been successfully achieved on other projects with the DB Adapter accessing MS SQL Server.
    Any tips appreciated.
    Thanks,
    Mark.

  • SOA - Database Adapter push data to BAM

    I would like to create an SOA application to pull data from an Oracle Database and push it Oracle BAM.
    In the past I've done this by using the "Polling for new or changed records in a table" from the Database Adapter to pull new data from the database. However, I wish to know if it is possible for me to somehow configure the adapter to execute a query on the database, grab the results and push them through the Mediator and onto the BAM adapter.
    The main point here is that there is no Table or View on the database to supply the data. The data is created dynamically as a query result when / if the database adapter runs the query on the database.
    This needs to happen periodically (as with the polling for changes method).
    Is this possible?

    Hi
    I believe the below option will help you.
    1.Create a BPEL process and inside that use the DB adapter to execute the query and fetch the data and push the same to BAM through the BAM Adapter.
    2.Schedule the BPEL process with Quartz Scheduler(default option provided by Oracle BPEL) to run periodically as per your requirement.
    Regards
    Albin I

  • Connection Reset Error with Database Polling

    Hi,
    I am using DB adapter for polling records from the database. After polling I am doing physical delete for the records that have been polled. The polled record has a column for scheduledDateTime which is used to do scheduling for the process, using a Wait Activity.
    Everything works fine in development environment but shows different behaviour in testing environment.
    The records have been polled and is waiting at wait activity for time expiry. But even after time expires, the process is still in a waiting stage. When I checked logs for the process, this was the error given.
    <2010-04-20 07:59:00,477> <WARN> <ukbss.collaxa.cube.activation> <Database Adapter::Inbound>
    ORABPEL-11624
    DBActivationSpec Polling Exception.
    Query name: [ScheduleDBPoll], Descriptor name: [ScheduleDBPoll.ScheduleInformation]. Polling the database for events failed on this iteration. [Caused by: Io exception: Connection reset]
    If the cause is something like a database being down successful polling will resume once conditions change. Caused by Exception [TOPLINK-4002] (Oracle TopLink - 10g Release 3 (10.1.3.4.0) (Build 080602)): oracle.toplink.exceptions.DatabaseException
    Internal Exception: java.sql.SQLException: Io exception: Connection resetError Code: 17002
    Call:DELETE FROM SCHEDULE_INFORMATION WHERE (SCHEDULE_ID = ?)
         bind => [584]
    Query:DeleteObjectQuery(<ScheduleInformation 584 />).
         at oracle.tip.adapter.db.exceptions.DBResourceException.createEISException(DBResourceException.java:461)
         at oracle.tip.adapter.db.exceptions.DBResourceException.inboundReadException(DBResourceException.java:376)
         at oracle.tip.adapter.db.InboundWork.handleException(InboundWork.java:697)
         at oracle.tip.adapter.db.InboundWork.runOnce(InboundWork.java:635)
         at oracle.tip.adapter.db.InboundWork.run(InboundWork.java:475)
         at oracle.tip.adapter.db.inbound.InboundWorkWrapper.run(InboundWorkWrapper.java:43)
         at oracle.tip.adapter.fw.jca.work.WorkerJob.go(WorkerJob.java:51)
         at oracle.tip.adapter.fw.common.ThreadPool.run(ThreadPool.java:280)
         at java.lang.Thread.run(Thread.java:595)
    Caused by: Exception [TOPLINK-4002] (Oracle TopLink - 10g Release 3 (10.1.3.4.0) (Build 080602)): oracle.toplink.exceptions.DatabaseException
    Internal Exception: java.sql.SQLException: Io exception: Connection resetError Code: 17002
    Call:DELETE FROM SCHEDULE_INFORMATION WHERE (SCHEDULE_ID = ?)
         bind => [584]
    Query:DeleteObjectQuery(<ScheduleInformation 584 />)
         at oracle.toplink.exceptions.DatabaseException.sqlException(DatabaseException.java:282)
         at oracle.toplink.internal.databaseaccess.DatabaseAccessor.executeDirectNoSelect(DatabaseAccessor.java:669)
         at oracle.toplink.internal.databaseaccess.DatabaseAccessor.executeNoSelect(DatabaseAccessor.java:721)
         at oracle.toplink.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:501)
         at oracle.toplink.internal.databaseaccess.DatabaseAccessor.executeCall(DatabaseAccessor.java:441)
         at oracle.toplink.publicinterface.Session.executeCall(Session.java:728)
         at oracle.toplink.internal.sessions.IsolatedClientSession.executeCall(IsolatedClientSession.java:115)
         at oracle.toplink.internal.queryframework.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:117)
         at oracle.toplink.internal.queryframework.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:103)
         at oracle.toplink.internal.queryframework.DatasourceCallQueryMechanism.deleteObject(DatasourceCallQueryMechanism.java:94)
         at oracle.toplink.internal.queryframework.StatementQueryMechanism.deleteObject(StatementQueryMechanism.java:96)
         at oracle.toplink.queryframework.DeleteObjectQuery.executeDatabaseQuery(DeleteObjectQuery.java:143)
         at oracle.toplink.queryframework.DatabaseQuery.execute(DatabaseQuery.java:620)
         at oracle.toplink.publicinterface.Session.internalExecuteQuery(Session.java:2089)
         at oracle.toplink.publicinterface.Session.executeQuery(Session.java:993)
         at oracle.toplink.publicinterface.Session.executeQuery(Session.java:950)
         at oracle.tip.adapter.db.inbound.DeletePollingStrategy.destroyRecord(DeletePollingStrategy.java:332)
         at oracle.tip.adapter.db.inbound.DestructivePollingStrategy.destroy(DestructivePollingStrategy.java:406)
         at oracle.tip.adapter.db.inbound.DeletePollingStrategy.destroy(DeletePollingStrategy.java:378)
         at oracle.tip.adapter.db.InboundWork.transactionalUnit(InboundWork.java:1353)
         at oracle.tip.adapter.db.InboundWork.runOnce(InboundWork.java:575)
         ... 5 more
    Caused by: java.sql.SQLException: Io exception: Connection reset
         at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:138)
         at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:175)
         at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:287)
         at oracle.jdbc.driver.T4CPreparedStatement.execute_for_rows(T4CPreparedStatement.java:649)
         at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1161)
         at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3001)
         at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3074)
         at oracle.toplink.internal.databaseaccess.DatabaseAccessor.executeDirectNoSelect(DatabaseAccessor.java:662)
         ... 24 more
    <2010-04-20 07:59:05,673> <INFO> <ukbss.collaxa.cube.activation> <Database Adapter::Inbound> <oracle.tip.adapter.db.exceptions.DBResourceException createEISException> A retriable exception occured. In BPEL you can configure a fault policy (starting with 10.1.3.3) to automatically perform retries. Please configure bpel/domains/<domainName>config/fault-bindings.xml
    I thought the error is due to database connection, but as per DB team, the database is up and this error happens for some records and some records are successfully executed.
    I am using Oracle SOA 10.1.3.4.0 and Jdeveloper 10.1.3.4
    Any help will be appreciated.
    Regards,
    Varun

    Nevermind, I found the problem. My school is incapable of finishing loading any sites through SSL, ever (without a proxy), and Twitter decided to lock my account to SSL without telling me. I just had to set FoxyProxy to use the proxy for https://twitter.com and it was fixed.
    I suppose other programs could still load Twitter because they didn't have the cookies to stay in my account, which means they weren't redirected to https.

  • Error in database polling using OSB

    Hi,
    I am polling the database. After polling I am calling a split join which inturn has a couple of SOA service calls. Everything was working fine until recently I observed that polling stops after a couple of attempts and i get errors of kind:
    ####<Mar 6, 2013 8:49:03 AM EST> <Error> <BPEL Kernel> <edadapp01> <osb_server1> <[ACTIVE] ExecuteThread: '20' for queue: 'weblogic.kernel.Default (self-tuning)'> <<anonymous>> <> <84653bbbef33069c:-6fd16400:13d3f9fe982:-8000-0000000000000257> <1362577743258> <BEA-2032000> <Error during invocation of "PROJ/splitjoin/SplitJoin" for event "JobEvent: Job Key [56]" of type "com.bea.bpel.interpreter.internal.scheduler.JobEvent".
    java.lang.IllegalStateException: Thread 13 already has a job in the job queue.
    at com.bea.bpel.services.state.InMemoryJobQueue.offer(InMemoryJobQueue.java:113)
    at com.bea.bpel.interpreter.internal.concurrent.BlockedListener.queueBlockedJob(BlockedListener.java:59)
    at com.bea.bpel.interpreter.internal.concurrent.BlockedListener.<init>(BlockedListener.java:50)
    at com.bea.bpel.interpreter.internal.concurrent.BlockedListener.<init>(BlockedListener.java:39)
    at com.bea.bpel.interpreter.internal.concurrent.LockTransactionImpl.lock(LockTransactionImpl.java:91)
    at com.bea.bpel.interpreter.internal.program.StackFrameImpl.lockObject(StackFrameImpl.java:275)
    at com.bea.bpel.interpreter.internal.program.StackFrameImpl.findVariable(StackFrameImpl.java:184)
    at com.bea.bpel.interpreter.internal.instruction.assign.VariableDataResolver.getExclusiveKeys(VariableDataResolver.java:35)
    at com.bea.bpel.interpreter.internal.instruction.assign.AssignExtensionOperation.getExclusiveKeys(AssignExtensionOperation.java:38)
    at com.bea.bpel.interpreter.internal.instruction.concurrent.ExclusiveDataHandler.lock(ExclusiveDataHandler.java:47)
    at com.bea.bpel.interpreter.internal.instruction.concurrent.LockInstruction.enter(LockInstruction.java:43)
    at com.bea.bpel.interpreter.internal.process.ProcessNodeImpl.enter(ProcessNodeImpl.java:181)
    at com.bea.bpel.interpreter.internal.Interpreter.interpret(Interpreter.java:155)
    at com.bea.bpel.interpreter.internal.Interpreter.invoke(Interpreter.java:87)
    at com.bea.bpel.internal.dispatcher.EngineManagerImpl.dispatch(EngineManagerImpl.java:66)
    at com.bea.bpel.internal.dispatcher.EngineManagerImpl.dispatch(EngineManagerImpl.java:44)
    at com.bea.bpel.internal.dispatcher.SchedulerServiceContextImpl.fireEventJobScheduled(SchedulerServiceContextImpl.java:87)
    at com.bea.bpel.internal.dispatcher.SchedulerServiceContextImpl.fireEvent(SchedulerServiceContextImpl.java:68)
    at com.bea.alsb.flow.scheduler.SchedulerServiceImpl$1.run(SchedulerServiceImpl.java:32)
    at weblogic.work.ContextWrap.run(ContextWrap.java:41)
    at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:545)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)
    Now, the error is repeated only inside the error the 'event' gets changed sometimes but except that everything is same. As a result database isn't getting polled.
    It works after after deleting and redeploying the code on the server but after 3-4 runs the same issue.
    Anyone has any idea about it,please help.
    Thanks in advance,
    Tarun
    Edited by: Tarun Rathor on Mar 7, 2013 1:29 AM

    This is a Bug related to updating global vars in different branches of a split join catch block.
    Have a look into BugID:13627312 in Metalink and request the patch.
    Regards,
    Fabio Douek.

  • Database Polling: Parent-Child Relation

    Hi all,
    We are experiencing problem while picking multiple records from child table while polling from the database.
    Summary:
    Parent table: Temp1 : Columns- Id,Name,Status
    Child Table: Temp2 : Columns- Id,Item
    Now lets say data present in table are
    Temp1 Table :- 1,'abhi','N'
    Temp2 Table :- 1,'pen'
    1,'pencil'
    I have used 1:M Relationship. I have kept a polling on parent table for column status. (Logical Delete)
    Problem:
    Now what is happening is that, from Child Table (Temp2) only first record got picked up 2 times..and record from Temp1 Table was being picked correctly.....
    Can anybody help me how to resolve this issues....its bit urgent.
    Thanks in advance.
    Thanks,
    Abhishek

    Hi sunil,
    Thanks for the reply. Relationship defined was correct.
    I got the solution for this problem. Actually the primary key on child table was not set correctly. For such scenarios we need to have composite key on child table. when I make that, it started working.
    Note that the composite key value has to be unique in the childs table.
    Wow!!!
    Thanks,
    Abhishek...
    Edited by: Abhishek saurabh on Jul 31, 2009 8:14 PM

  • Database Polling in Jdev

    Hi,
    I have created BPEL process that continuously polling on View present on database at certain interval.
    here i am using logical delete operation while polling for new or changed records so that will update certrain field on table.
    but my view has only Read permission(Not want to change this) so i can't update the field that's why this polling functionality is not working after deploy on BPEL console.
    so can anyone will help me on how i can fire only select query with specified interval of time to read the view data only? is there anyother way around to fire select query at certain interval without updating?
    your help will be appreciated.
    Thanks
    Sagar

    I'm not yet familiar with 11g - so forgive me if this is not valid in that release. But for 10.1.3 ...
    Another option - if you can't (or just don't want to) affect data in the DB is to use some other mechanism to kick off your BPEL process on a regular time interval - and then just do a normal inbound select operation against your table to search for records to process.
    I've been trying out a new scheme - where I use a file adapter as the polling mechanism to kick off the BPEL process (using a polling interval of maybe a minute). The file on the server that its polling for can be anything - as I don't actually use the contents of the file in the process. At the end of the BPEL process, I use another file adapter to place a new file in the polling directory - to be found by the polling file adapter on the next polling cycle. You could also accomplish this in other ways - but this seemed like a pretty simple way to kick off a BPEL process on a regular time interval.
    Just an idea ...
    I do wish BPEL had a simple way to schedule a process to invoke itself on a set interval. Perhaps in a future release? Or even in 11?
    Rod

Maybe you are looking for