BPEL sequential database polling

Hi,
I need help in understanding how should I design my process:
The BPEL process that I developed (created from template Empty BPEL Process) needs to poll a database table and process the records in the order in which they are inserted there.
Will using the Update Sequencing table option when defining the DB adapter help achieve this?
Or
Do I need to have another Synchronous process and have the DB adapter polling the table in there and then call my original process. If so, do I need to make my original process to be asynchronous or leave it as it is?
What is the best option?
Also, I have defined the polling freqeuncy to be 15 sec. What's the best practice to set this value. Does it matter...?
Please advice..
Thanks
Prapoorna

Thanks for the reply.
The maximum number of records I'm reading is 1. Will the Order By clause work in that case.?
Thanks
Prapoorna

Similar Messages

  • 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

  • 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

  • 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 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

  • BPEL Olite Database Connection

    Connecting to Oracle Olite Database, while using JDeveloper for the Database Adapter configuration or database configuration..........
    I found the fallowing link and I am able to connect to Olite Database..............
    http://erpschools.com/Apps/oracle-applications/Articles/Fusion-Middleware/SOA/BPEL/BPEL-Olite-Database-Connection/index.aspx
    Ragh

    Hey.. guys..... the link that I have posted helped me to resolve my issue....
    Go through the link and let me know if it is helpful or not....... then we can discuss........

  • Database Polling Strategy: Time portion of Date/Time not propogated to BPEL

    Hi,
    I have a simple BPEL process that uses a last update date polling strategy using a helper table. The table I'm going against is a simple, three column table, as defined below:
    CREATE TABLE XXSI_TEST_PRODUCTS
    ID VARCHAR2 (32) NOT NULL,
    DESCRIPTION VARCHAR2 (32),
    LAST_UPDATED DATE
    The helper table is as follows:
    CREATE TABLE XXSI_PRODUCT_SEQUENCING
    TABLE_NAME VARCHAR2 (32),
    LAST_UPDATED DATE
    The issue I am having is when the adapter picks up the updated rows from the XXSI_TEST_PRODUCTS, that it picks up the date portion of the date datatype fine. (i.e., I can see the value in the audit flow of the BPEL console) However, the time portion of the datatype is always 00:00:00.
    Could anyone suggest what the issue is here?
    Thanks
    Aashish

    To add to this earlier note. I can get this to work with the olite database connection, but not Oracle (JDBC) thin driver. Should I be using the Type 2 OCI driver? If so, what should I use?

  • Database polling adapter within an asynchronous BPEL process

    Hi,
    I have a requirement to poll a database table withing an asynchronous process. The reason I want to use a receive within an asynchronous BPEL is because the process needs to be notified many times thru polling. So might need many receive activities.
    I have developed a process as described below :-
    1. Created an asynchronous process.
    2. Created a Database adapter for polling a table. Logical delete strategy is being used.
    3. Have put a receive activity from the DB Adapter created.
    4. Created a correlation set consisting of a single property(String)
    5. Created a property alias to refer to
    a. the input string of the asynchronous process. (unique for this process)
    b. the input from the database adapter (unique for this process)
    I initiate this process from the console. Then I inserted a record the table with proper inputs.
    But the BPEL waits indefinitely at the receive activity.
    When I try to poll the table from an empty BPEL process, it works perfectly fine.
    Could someone please help me here.
    Thanks in advance
    Saptarishi

    Hi,
    Could someone pls answer this query.
    Regards,
    Saptarishi

  • Urgent: Configuring Database Polling Interval from BPEL Console

    Hi All
    Could we change the "Polling Interval" of a DB Adapter in a BPEL Process directly from the BPEL Console?
    thanks
    --debashis                                                                                                                                                                                                                                                                                   

    Yes did
    In bpel.xml
    <activationAgents>
    <activationAgent className="oracle.tip.adapter.fw.agent.jca.JCAActivationAgent" partnerLink="DbAd">
    <property name="portType">DbAd_ptt</property>
    *<property name="PollingInterval">10</property>*
    </activationAgent>
    </activationAgents>
    U can update the PollinInterval from DeploymentDescriptor of the process.

  • 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

  • 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.

  • 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.

  • [OLD-BPEL PM] DataBase Adapter 성능향상문제...

    댓글: 1 - 페이지: 1 - 마지막 글: 2006. 12. 9 오전 1:39 최종 작성자: champion 글타래(쓰레드): [ 이전 | 다음 ]
    iris
    글: 18
    등록일: 06. 11. 6
    DataBase Adapter 성능향상문제...
    게시일: 2006. 12. 8 오후 6:36 댓글
    Database Adapter를 이용해 다량의 Row를 Select해서 다른 Table에 Merge를
    해보았습니다.. 10만건을 test했는데 서버가 다운되더군요...
    5만건을 테스트했더니 서버가 엄청 버벅되더니 죽지는 않았는데 속도가
    상당히 많이 걸립니다... 이런건 해결할수 있는방법이 없나요?
    Polling관련 Tutorial을 보면 Performance관련 예제가 있던데 한번 따라해
    봤습니다.. Polling은 Wizard에서 MaxRaiseSize나 NumberOfThreads, MaxTransactionSize 같은 부분을 설정해 주는부분이 있습니다...
    polling을 사용하지않고 그냥 Custom Excute SQL을 사용해 DB에서 가져올때는
    이런 Performance향상을 위한부분이 Oracle BPEL에 있는지 궁금합니다..
    (속도및 OutOfMemory관련)
    또한 Polling시 MaxRaiseSize, MaxTransactionSize 이런 부분은 속도와 상관이
    있는 부분인지 궁금합니다.
    그럼 답변 부탁드릴께요.. 감사합니다.. ^^
    champion
    글: 6
    등록일: 06. 10. 26
    Re: DataBase Adapter 성능향상문제...
    게시일: 2006. 12. 9 오전 1:39 iris 님의 질문에 답변 댓글
    XML 처리에 있어서 가장 문제가 되는 것은 Node의 Depth와 XML 자체 사이즈입니다. BPEL은 기본적으로 XML 연산을 많이 해야되기 때문에 항상 Variable을 Dom Object로 관리하고 특정 값을 구하거나 바꾸거나 하는 작업을 진행합니다. 따라서 DB의 Data를 가져오는데 있어서 중요한 성능 요인은 XML의 크기(Columns 곱하기 Rows)입니다. Column이야 필요한 것은 모두 가져와야 하니 당연히 Rows의 수를 조절하는 방법이 가장 효과적입니다. MaxRaiseSize가 이를 조절하는 Parameter고요 일반적으로 100 근처의 값을 사용합니다. 즉, 1000Rows가 처리되어야 한다고 가정할 때 MaxRaise가 100이면 10개의 BPEL Instance가 동시에 기동되어 처리되는 것입니다. 참고로 저희가 내부적으로 Notebook을 이용하여 DB2DB(Polling > Transformation > Merge) Test를 하면 분당 2만건 정도를 소화하더군요.
    한가지 더 DB Adapter 관련 Tip을 말씀드리면 Merge는 Insert보다 훨씬 비싼 Operation입니다. 따라서 단순 Insert의 경우 Merge 보다 Insert를 사용하시는 것이 성능 측면에서 유리합니다.
    마지막으로 DB Adapter가 사용하는 DataSource는 반드시 oc4j-ra.xml에 정확히 setting 되어야 하고 되도록이면 다음과 같이 oc4j가 관리하는 DataSource를 사용하시는 것이 DB Connection 사용 측면에서 유리합니다.
    usesExternalTransactionController="true"
    usesExternalConnectionPooling="true"
    dataSourceName="jdbc/<someDataSourceName>"

    In the transform activity (xslt) you need to use the for-each expression for the repeating element.
    right-click the target root node that repeats, select node, and there should be an option of for-each
    This will make it repeating.
    cheers
    James

Maybe you are looking for

  • Get the Data from a DataSource

    Hi, I start with JMF. I use a processor to get DataSource from an audio file. Until there, all runs very well. But after that, I would like to get the raw data of my DataSource to aplly a filter on these data and after that, to create a new DataSourc

  • WD Java - Type does not exists

    Hi folks, we use the RFC Import in WebDynpro JAVA and import a function module of name like /tyed/myFunction where /tyed/ is a namespace. when running that application we get an error on a structure which is of name like /tyed/myStructure and in JAVA

  • Front Audio Connect

    i was wondering if anyone knew the wiring configuration on a SB Li've 24bit for front panel audio. on ym case, i have both the 0pin block, and individual connectors. if anyone knew how to do this, it would be much apprecated

  • Interactive PDF Highlight destination

    Hello, Is it possible to have the destination of a hyperlink highlight and then fade when it is arrived at? Thanks. P.

  • Custom object and Home page

    Hi Is it possible to change home page layout for Custom Object R15. No Home Page layout link is available under Customer Objects. Sundar