Database Adapter Polling - Setting arguments in runtime

Hi!
I have a bpel-process with a DB-adapter that polls a table for new records every 10 second. I have a Where clause for the Select query, that reacts on all new records where the first argument (a field in the table) is equal to the second argument that is a literal value that will be hardcoded in the adapter.
But in the future it might be possible that the second argument might change and I want to be able to edit that without redeploying the process. Is there anyway I could set the second argument as a parameter and change it in run-time, as a property in the BPEL console for example?

DB Adapter does not have possibility to change toplink mappings in runtime :-(
But maybe you can move this adapter to separate process (or even to ESB flow)which will be responsible just for receiving the data from DB and this process will call your main process. In future you will change just this small process and not the main one. Could be a workaround.

Similar Messages

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

    I am using Jdeveloper 10.1.3.1.0 to do the database polling. The adapter polls two tables joined by the foreign key.Then it will update the status code as logic deletion. However, when I tried to set the database rows per xml document to 1 on step 10 of 11 of the polling options. However, when I tried to set database row per transaction to 50, it won't allow me. My understanding is that this 50 will set the database commit every 50 records. The wizard basically stopped there. Only after I changed it to unlimited, it proceeded.Can anybody help me?

    Hi,
    The triggering instances will not depend on the Database rows/transaction but will only depend on the Database rows/xml document.
    Database rows/transaction is internal to the DB and the DB adapter.
    If u keep Database rows/transaction as 200 and no. of rows/ xml document as 100 and 1000 rows are to be processed, then it will create 10 instances.
    However if you have 1000 rows for processing DB adapter will run a cursor in a loop to pick up 200 rows from the 1000
    rows 5 times (this is a batch setting between DB and the DB adapter and will distribute the load of picking 1000 rows at a time into 5 transactions) and then these 200 rows will be distributed into 2 BPEL instances of 100 rows (this is a batch setting between DB adapter and BPEL).
    Hope this clarifies.
    With Regards,
    Harshwardhan

  • 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

  • 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,
    I guess you're talking about BPEL? If so, try the BPEL forum for a better response.
    Best,
    John

  • Database Adapter Polling, Instances in Running State

    Hello All,
    I have a composite in which the database adapter is a service (polling a table in SQL Server). Sometimes, when instances gets created, like 2 instances are being in a running state and not being completed at all. we terminated the instances last 2 times, and this scenario is being repeated again. If i click the instance which is running, i can only see the service which says it is completed, no BPEL component is being seen, can anyone faced this issue before ? why this is happening ?
    Please help....
    Naresh

    Could you provide more insight on how you wired the adapter and BPEL process inside the composite? What does the BPEL look like? You could add a BPEL component that persists some stuff just for test purposes. That could give you more feedback from the console.
    hth,
    Peter Paul

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

  • Database Adapter Polling problem

    Hi All,
    The polling option is processing all the rows in a table at a time instead of using polling frequency. I have used an option of update a field (logical delete) where I have initialized unread value='N' and read value='Y'. Now ,the problem is i have to poll a single row from the table for every 60 seconds ( second row should be processed only after 60 seconds), but all the rows are processing at a same time. Can somebody let me know what could be the problem?
    The options that I set in db adapter are:
    Polling Frequency: 60 seconds
    Database &rows per XML Document: 1
    Database Rows per transaction: 1
    JDBC options , Query & Timeout: 60
    Thanks,

    Hi Vlad,
    please find the jca file
    <endpoint-activation portType="PollEvent_ptt" operation="receive">
    <activation-spec className="oracle.tip.adapter.db.DBActivationSpec">
    <property name="DescriptorName" value="PollEvent.HolxSrEventData"/>
    <property name="QueryName" value="PollEventSelect"/>
    <property name="MappingsMetaDataURL" value="PollEvent-or-mappings.xml"/>
    <property name="PollingStrategy" value="LogicalDeletePollingStrategy"/>
    <property name="MarkReadColumn" value="PROCESSED_FLAG"/>
    <property name="MarkReadValue" value="Y"/>
    <property name="MarkUnreadValue" value="Yes"/>
    <property name="PollingInterval" value="60"/>
    <property name="MaxRaiseSize" value="1"/>
    <property name="MaxTransactionSize" value="1"/>
    <property name="NumberOfThreads" value="1"/>
    <property name="ReturnSingleResultSet" value="false"/>
    <property name="SequencingColumn" value="INCIDENT_ID"/>
    <property name="DelayCommit" value="true"/>
    </activation-spec>
    </endpoint-activation>

  • Database Adapter Polling 100 large size messages at one time.

    We have a BPEL process which polls a header & detail table on a Oracle DB.
    Typically we are having a scenario that we have around 1000 detail line items for each header.In the night when we start the process we have around 100 such headers each having 1000 detail lines.
    We have configured the adapter in following way.Hence according to us having MaxRaiseSize="1" will create individual instace for each row that adapter fetches.is that correct?
    We do get one instace per header in console.
    Currently when we run the interface with 3 headers + each having 3000 details BPEL works fine.
    But when i increase the load to have 50 headers + each having 3000 details , i dont see messages coming to BPEL console & also BPEL goes down & comes up on its own.
    While i was monitoring it i saw that invoke_message table in dehydration store was fetching the records from messages from DB & gradually creating rows in the table & after like 30 mins it stopped we were getting internal server error on BPEL console and then it comes up on its own after some time & again rows are added in the invoke_message.
    Althoug out of 100 instances that i think i should get, i see just 2 created in spam of almost 2 hrs.
    My question is how can make this processing faster ? can configure something in DB adapter liek increase numberofthreads or something wich willmake the processing faster?
    Any idea how BPEL works in this scenario?
    Appreciate if someone can help me in this regard.
    Thanks
    **&lt;binding name="DBRMSTransferPoll_binding" type="tns:DBRMSTransferPoll_ptt"&gt;*
    *&lt;pc:inbound_binding/&gt;*
    *&lt;operation name="receive"&gt;*
    *&lt;jca:operation*
    ActivationSpec="oracle.tip.adapter.db.DBActivationSpec"
    DescriptorName="DBRMSTransferPoll.XxlcbTsfHdrV"
    QueryName="DBRMSTransferPoll"
    PollingStrategyName="SequencingPollingStrategy"
    SequencingFieldName="LAST_UPDATE_DATETIME"
    SequencingFieldType="java.sql.Timestamp"
    SequencingTableNameFieldValue="TSF_HDR_V"
    SequencingTableName="SEQUENCING_HELPER"
    SequencingTableNameFieldName="TABLE_NAME"
    SequencingTableValueFieldName="LAST_READ_DATE"
    MaxRaiseSize="1"
    MaxTransactionSize="unlimited"
    PollingInterval="5400"
    NumberOfThreads="1"
    DelayCommit="false"
    PollForChildUpdates="true"
    ReturnSingleResultSet="false"
    MappingsMetaDataURL="DBRMSTransferPoll_toplink_mappings.xml" /&gt;
    *&lt;input/&gt;*
    *&lt;/operation&gt;*
    *&lt;/binding&gt;**

    The issue you are facing is memory. SOA Suite is not really designed to handle large payloads because of this issue.
    What I would do in the first instance is shorten the frequency so you are only selecting a small number of rows at a time. This may not have an impact because the data maybe produced via a batch program so you will always get these large volumes.
    What you could do is just select the header still using the MaxRaiseSize="1" so you get just one instance per header but then you select the lines via a db adapter in the BPEL process.
    The other option is to have some other mechanism that invokes the process with the full payload, e.g. setup a DB schedule that runs PL/SQL selects the data and places it on a AQ.
    cheers
    James

  • 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 Advanced Polling Technique

    I would like to create a polling database adapter on an SOA application. The data is statistical and changes frequently. I have developed the SQL in sqldeveloper to get the data (hard part done, or so I thought). I would like the adapter to poll the database with this query and fetch the results. I plan to use a sequential table to keep track of the fields at a separate database. Now, I understand I could turn the SQL script into a view and have the database adapter poll the view. However, my requirements are that the process be as unobtrusive to the database as possible. In other words: they do not want me to put that view on the database. So, my question is: has anyone created a database adapter polling mechanism that can execute a pure SQL select statement such as the one i have created. Of course, the SQL script is rather complex and it cannot be implemented using the TopLink commands on the database adapter wizard in jDeveloper. Does anyone know of a way i can do this? and if so, how? Thanks in advance.

    Could you provide more insight on how you wired the adapter and BPEL process inside the composite? What does the BPEL look like? You could add a BPEL component that persists some stuff just for test purposes. That could give you more feedback from the console.
    hth,
    Peter Paul

  • BPEL: invalid namespace error with DB adapter polling and java embedding

    Hello
    I'm using bpel 10.1.3.1.0, and I'm experiencing the following problem: I'm am not able to use the SetTitle() function in a process which polls for records using the db adapter.
    Steps to reproduce the problem:
    - I create a very simple bpel process which poll for records in a table.
    - I deploy it, write manually a record in the polled table and the process start.
    - I can see the record picked up through the visual flow in the console
    - everything looks ok and the process ends correctly
    - now I add a java embedding activities just after the receive
    - I set the instance title like this: setTitle("Go");
    - redeploy, write a record in the polled table and the process start.
    - but the process ends in error with the following message "XMLDOMException has been thrown. invalid namespace for prefix xmlns"
    And there is no way to make it work. Consider:
    If I put the same java embedding activity in another process, for example a simple asynchronous process which just copy the input to the output, and I run from the console, the instance title is set as I want ("Go")
    If I remove the three lines from the polling process
    <bpelx:exec name="Java_Embedding_1" language="java" version="1.3">
    <![CDATA[setTitle("Go");]]>
    </bpelx:exec>
    then the process is executed correctly again. I add them again and then namespace error.
    Whatever statement I put in the java embedding activity (for example a string concatenation or even just a comment I have the same result: invalid namespace for prefix xmlns.
    Does anybody has a suggestion to evercome the problem? I need to set the title because its a mess to find out which instance processed a specific record.
    Thanks by
    Paolo

    I made a lot of further tests, and I can say the problem is related only to the database adapter polling mechanism.
    If I create an asynchronous process, with any kind of database activity (for example select) I can set the title normally.
    If I create a process which start with database table polling, then I cannot use the java embedding.
    try this:
    - create BPEL empty project
    - drop a database adapter service and follow the wizard:
    - select a connection (I tried both oracle or sqlserver connection)
    - select "poll for new or changed record"
    - select any table empty or with few record inside (1 or 2)
    - press next 4 times
    - chose delete record after read (press next)
    - chose order by "no ordering" in polling options (press next 2 times)
    - now drop a receive activity on the process, and connect with the polling partner link
    - drop a java embedding and write any valid java statement
    - deploy; if the table is empty, write a recod in the table
    - the process is instantiated, but the it fails in the --> receive <-- activity with "invalid namespace" error

  • DB Adapter polling and logical delete: Process succeed but lock on database

    We have the following busisness flow, that reseult in a BPEL behaviour we did not expect. I hope that some of you had the same exeprience.
    The database adpater polls from a table new records based on a value (20) in a status field. When it finds records, it will process them and update the status field (20 -> 30).
    When we update from sqlplus a record, select for update on record with status 20, then We see in the logging that the update fails, but the process ran sucessfully. At the database we see an outstanding lock. If we commit the sqlplus session (after a few minutes), the status field is updated to 30.
    This is strange to me, the BPEL process was already sucessfully finished.
    Anyone seen this behaviour?
    Regards,
    Marc
    The logging
    <2006-05-02 13:06:37,052> <DEBUG> <default.collaxa.cube.activation> <Database Adapter::Inbound> <oracle.tip.adapter.db.TopLinkLogger log> SELECT STATUS,
    USERID FROM AQADM.TEST_UPDATE_VANUIT_BPEL WHERE ((STATUS = ?) AND ((STATUS <> ?) OR (STATUS IS NULL)))
    /ORA-
    <2006-05-02 12:03:21,473> <DEBUG> <default.collaxa.cube.activation> <AdapterFramework::Inbound> Delivery Thread 'JCA-work-instance:Database Adapter-0 pe
    rforming unsynchronized post() to localhost
    <2006-05-02 12:03:21,879> <DEBUG> <default.collaxa.cube.activation> <Database Adapter::Inbound> <oracle.tip.adapter.db.TopLinkLogger log> begin transact
    ion
    <2006-05-02 12:03:21,881> <DEBUG> <default.collaxa.cube.activation> <Database Adapter::Inbound> <oracle.tip.adapter.db.TopLinkLogger log> UPDATE PROV.PR
    OV_USER_ACCOUNT SET STATUS_CMMAC = ? WHERE (PUAT_ID = ?)
    bind => [30, 81600]
    <2006-05-02 12:03:22,188> <WARN> <default.collaxa.cube.activation> <Database Adapter::Inbound> <oracle.tip.adapter.db.InboundWork runOnce> Exception dur
    ing polling of the database ORABPEL-11624
    DBActivationSpec Polling Exception.
    Query name: [prov_cmmac], Descriptor name: [PROVprocessmacaddress.ProvUserAccount]. Polling the database for events failed on this iteration.
    If the cause is something like a database being down successful polling will resume once conditions change. Caused by Exception [TOPLINK-4002] (OracleAS
    TopLink - 10g (9.0.4.5) (Build 040930)): oracle.toplink.exceptions.DatabaseException
    Exception Description: java.sql.SQLException: ORA-20220: MDB3 ERR: session not in admin mode
    ORA-06512: at "PROV.PUAT_BUR", line 90
    ORA-04088: error during execution of trigger 'PROV.PUAT_BUR'

    The following entry:
    <MESSAGE>
    <HEADER>
    <TSTZ_ORIGINATING>2008-12-11T17:50:20.119+01:00</TSTZ_ORIGINATING>
    <COMPONENT_ID>tip</COMPONENT_ID>
    <MSG_TYPE TYPE="TRACE"></MSG_TYPE>
    <MSG_LEVEL>16</MSG_LEVEL>
    <HOST_ID>u514603.cmcdev.be</HOST_ID>
    <HOST_NWADDR>10.151.70.3</HOST_NWADDR>
    <MODULE_ID>esb.server.service.impl.inadapter</MODULE_ID>
    <THREAD_ID>18</THREAD_ID>
    <USER_ID>orasoad</USER_ID>
    </HEADER>
    <CORRELATION_DATA>
    <EXEC_CONTEXT_ID><UNIQUE_ID>10.151.70.3:11323:1229014220014:8</UNIQUE_ID><SEQ>0</SEQ></EXEC_CONTEXT_ID>
    </CORRELATION_DATA>
    <PAYLOAD>
    <MSG_TEXT>JCA: &lt;oracle.tip.adapter.db.TopLinkLogger log> SELECT UNIQUE_SUPPLIER_ID, SUPPLIER_NAME, SUPPLIER_NUMBER, NUMBER_TYPE, CM_SUPPLIER_TYPE, VAT_REGISTRATION_NUM, M_NUMBER, ADM_ID, OFB_PARTY_ID, CENTURY, LANGUAGE, ATTRIBUTE_CATEGORY, SPARE6, SPARE8, SPARE9, SPARE10, SPARE11, SPARE12, SPARE13, SPARE14, SPARE15, STATUS, ERROR_CODE, FILE_ID FROM XXCM.XXCM_AP_SUPPLIERS WHERE (STATUS = ?) ORDER BY UNIQUE_SUPPLIER_ID ASC FOR UPDATE NOWAIT
         bind => [MINE[undef:instance]]
    </MSG_TEXT>
    </PAYLOAD>
    </MESSAGE>
    can be found in $ORACLE_HOME/j2ee/oc4j_soa/log/oc4j_soa_default_group_1/oc4j/*.xml
    Regards

  • FTP Adapter setting filename at runtime not working

    Hi,
    I am facing an issue SOA 11.1.1.5 with FTP Adapter setting the filename at runtime. I have a process that reads a file from local server and puts it over to a remote FTP Server.
    I want to use the same filename that is picked up locally and placed on the ftp location. Below is the snippet of FTP Invoke and the filename is read from a variable which is set before the invoke
    <invoke name="Invoke_PutFile"
    inputVariable="Invoke_PutFile_PutFile_InputVariable"
    partnerLink="PutFile" portType="ns2:PutFile_ptt"
    operation="PutFile" bpelx:invokeAsDetail="no">
    <bpelx:inputProperty name="jca.file.TargetFileName" variable="targetFileName"/>
    </invoke>
    Here is the FTP jca file snippet
    <endpoint-interaction portType="PutFile_ptt" operation="PutFile">
    <interaction-spec className="oracle.tip.adapter.ftp.outbound.FTPInteractionSpec">
    <property name="LogicalDirectory" value="FtpDir"/>
    <property name="FileType" value="ascii"/>
    <property name="Append" value="false"/>
    <property name="TargetFileName" value="setAtRunTime"/>
    <property name="NumberMessages" value="1"/>
    </interaction-spec>
    </endpoint-interaction>
    But when I test I am getting an error, it's complaining Cannot set JCA WSDL Property. Error while setting JCA WSDL Property. Property setTargetFileName is not defined for oracle.tip.adapter.ftp.outbound.FTPInteractionSpec Please verify the spelling of the property. ".
      Fault Details : com.oracle.bpel.client.BPELFault: faultName: {{http://schemas.oracle.com/bpel/extension}bindingFault} messageType: {{http://schemas.oracle.com/bpel/extension}RuntimeFaultMessage} parts: {{ summary=Exception occured when binding was invoked.
    Exception occured during invocation of JCA binding: "JCA Binding execute of Reference operation 'PutFile' failed due to: Exception occured when binding was invoked. Exception occured during invocation of JCA binding: "Could not instantiate InteractionSpec oracle.tip.adapter.ftp.outbound.FTPInteractionSpec due to: Cannot set JCA WSDL Property.
    Error while setting JCA WSDL Property. Property setTargetFileName is not defined for oracle.tip.adapter.ftp.outbound.FTPInteractionSpec Please verify the spelling of the property. ".
    The invoked JCA adapter raised a resource exception. Please examine the above error message carefully to determine a resolution. ".
    The invoked JCA adapter raised a resource exception. Please examine the above error message carefully to determine a resolution. ,detail=Cannot set JCA WSDL Property.
    Error while setting JCA WSDL Property. Property setTargetFileName is not defined for oracle.tip.adapter.ftp.outbound.FTPInteractionSpec Please verify the spelling of the property. ,code=null}
      If I use *<property name="FileNamingConvention" value="%yyMMddHHmmssSS%_%SEQ%.txt"/>* inside the jca file it works but I want to use the filename at runtime and be the same name as it's picked up.
    Any idea what I am doing wrong.
    Thanks

    .bpel file
    <?xml version = "1.0" encoding = "UTF-8" ?>
    <!--
      Oracle JDeveloper BPEL Designer
      Created: Mon Jun 03 10:33:49 CDT 2013
      Author: 
      Type: BPEL 1.1 Process
      Purpose: Empty BPEL Process
    -->
    <process name="SharedServiceFtpFileMove"
                   targetNamespace="http://xmlns.oracle.com/SOALocal/SharedServiceFtpFileMove/SharedServiceFtpFileMove"
                   xmlns="http://schemas.xmlsoap.org/ws/2003/03/business-process/"
                   xmlns:client="http://xmlns.oracle.com/SOALocal/SharedServiceFtpFileMove/SharedServiceFtpFileMove"
                   xmlns:ora="http://schemas.oracle.com/xpath/extension"
                   xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/"
             xmlns:ns1="http://xmlns.oracle.com/pcbpel/adapter/file/SOALocal/SharedServiceFtpFileMove/FilePoller"
             xmlns:ns2="http://xmlns.oracle.com/pcbpel/adapter/ftp/SOALocal/SharedServiceFtpFileMove/PutFile"
             xmlns:bpelx="http://schemas.oracle.com/bpel/extension"
             xmlns:xsd="http://www.w3.org/2001/XMLSchema"
             xmlns:xp20="http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20"
             xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable"
             xmlns:oraext="http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc"
             xmlns:hwf="http://xmlns.oracle.com/bpel/workflow/xpath"
             xmlns:ids="http://xmlns.oracle.com/bpel/services/IdentityService/xpath"
             xmlns:bpm="http://xmlns.oracle.com/bpmn20/extensions"
             xmlns:xdk="http://schemas.oracle.com/bpel/extension/xpath/function/xdk"
             xmlns:xref="http://www.oracle.com/XSL/Transform/java/oracle.tip.xref.xpath.XRefXPathFunctions"
             xmlns:ns5="http://xmlns.oracle.com/SharedServiceEmailNotification/xsd/V1"
             xmlns:ns4="http://xmlns.oracle.com/pcbpel/adapter/opaque/"
             xmlns:ldap="http://schemas.oracle.com/xpath/extension/ldap">
      <!--
         ORCHESTRATION LOGIC                                              
         Set of activities coordinating the flow of messages across the   
         services integrated within this business process                 
      -->
      <partnerLinks>
        <partnerLink name="FilePoller" partnerLinkType="ns1:ReadFile_plt"
                     myRole="ReadFile_role"/>
        <partnerLink name="PutFile" partnerLinkType="ns2:PutFile_plt"
                     partnerRole="PutFile_role"/>
      </partnerLinks>
      <variables>
        <variable name="Receive_ReadFile_InputVariable"
                  messageType="ns1:ReadFile_msg"/>
        <variable name="sourceFileName" type="xsd:string"/>
        <variable name="targetFileName" type="xsd:string"/>
        <variable name="Invoke_PutFile_PutFile_InputVariable"
                  messageType="ns2:PutFile_msg"/>
        <variable name="FtpJndi" type="xsd:string"/>
      </variables>
      <faultHandlers>
        <catchAll>
          <sequence name="Sequence1">
            <terminate/>
          </sequence>
        </catchAll>
      </faultHandlers>
      <sequence name="main">
        <receive name="Receive" createInstance="yes"
                 variable="Receive_ReadFile_InputVariable"
                 partnerLink="FilePoller" portType="ns1:ReadFile_ptt"
                 operation="ReadFile">
          <bpelx:property name="jca.file.FileName" variable="sourceFileName"/>
        </receive>
        <assign name="Assign_Data">
          <copy>
            <from variable="sourceFileName"/>
            <to variable="targetFileName"/>
          </copy>
          <copy>
            <from expression="'eis/Ftp/FtpAdapter'"/>
            <to variable="FtpJndi"/>
          </copy>
        </assign>
        <assign name="Assign_Invoke">
          <copy>
            <from variable="Receive_ReadFile_InputVariable" part="opaque"/>
            <to variable="Invoke_PutFile_PutFile_InputVariable" part="opaque"/>
          </copy>
        </assign>
        <invoke name="Invoke_PutFile"
                inputVariable="Invoke_PutFile_PutFile_InputVariable"
                partnerLink="PutFile" portType="ns2:PutFile_ptt"
                operation="PutFile" bpelx:invokeAsDetail="no">
          <bpelx:inputProperty name="jca.ftp.TargetFileName" variable="targetFileName"/>
          <bpelx:inputProperty name="jca.jndi" variable="FtpJndi"/>
        </invoke>
      </sequence>
    </process>File Adapter Poller jca
    <adapter-config name="FilePoller" adapter="File Adapter" wsdlLocation="FilePoller.wsdl" xmlns="http://platform.integration.oracle/blocks/adapter/fw/metadata">
      <connection-factory location="eis/FileAdapter" UIincludeWildcard="*-*.txt"/>
      <endpoint-activation portType="ReadFile_ptt" operation="ReadFile">
        <activation-spec className="oracle.tip.adapter.file.inbound.FileActivationSpec">
          <property name="DeleteFile" value="true"/>
          <property name="LogicalArchiveDirectory" value="FtpLocalArchive"/>
          <property name="MinimumAge" value="0"/>
          <property name="Recursive" value="true"/>
          <property name="PollingFrequency" value="15"/>
          <property name="LogicalDirectory" value="FtpLocalFiles"/>
          <property name="IncludeFiles" value=".*-.*\.txt"/>
          <property name="UseHeaders" value="false"/>
        </activation-spec>
      </endpoint-activation>
    </adapter-config>Ftp Adapter put jca
    <adapter-config name="PutFile" adapter="FTP Adapter" wsdlLocation="PutFile.wsdl" xmlns="http://platform.integration.oracle/blocks/adapter/fw/metadata">
      <connection-factory location="eis/Ftp/FtpAdapter"/>
      <endpoint-interaction portType="PutFile_ptt" operation="PutFile">
        <interaction-spec className="oracle.tip.adapter.ftp.outbound.FTPInteractionSpec">
          <property name="LogicalDirectory" value="FtpDir"/>
          <property name="FileType" value="ascii"/>
          <property name="Append" value="false"/>
          <property name="TargetFileName" value="setAtRunTime"/>
          <property name="NumberMessages" value="1"/>
        </interaction-spec>
      </endpoint-interaction>
    </adapter-config>Thanks

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

Maybe you are looking for