4 Replies Latest reply on Jul 31, 2019 4:10 PM by Damir Dev

    OSB DB Polling Proxy Service change state for table row too late

    Damir Dev

      Hello.

       

      My process case:

      1) db table row STATUS="N" -> Read DB Proxy Service -> JMS Queue -> Read JMS Proxy Service -> Invoke Web Service -> Set STATUS="S" for db table row

       

      My detail process case:

      1) DB polling table (millions rows in STATUS="N" per day) -> Read DB Proxy Service -> Set state STATUS="N1-01" for prepolling for rows in DB polling table

      2) For every rows Read DB Proxy Service -> JMS Queue

      3) Read DB Proxy Service -> Set STATUS="P" for row in DB polling table

      4) JMS Queue -> Read JMS Proxy Service -> Invoke Web Service

      5) Read JMS Proxy Service -> Set STATUS="S" for row in DB polling table

       

      My enviroment and settings:

      1. Domain: AdminServer + one ManagedServer

      2. Weblogic Server ver 10.3.6.0

      3. Weblogic OSB ver 11.1.1.6

      4. DB HANA

      5. DBAdapter Connection Factory "eis/DB/test"

      dataSourceNamejava.lang.Stringjdbc/test
      defaultNCharjava.lang.Booleanfalse
      platformClassNamejava.lang.Stringorg.eclipse.persistence.platform.database.Oracle10Platform
      sequencePreallocationSizejava.lang.Integer50
      usesBatchWritingjava.lang.Booleantrue
      usesNativeSequencingjava.lang.Booleantrue
      usesSkipLockingjava.lang.Booleantrue
      xADataSourceNamejava.lang.String

      6. Proxy Service JCA:

      <connection-factory location="eis/DB/test" UIConnectionName="TestDb" adapterRef=""/>

        <endpoint-activation portType="ReadEventService_ptt" operation="receive">

          <activation-spec className="oracle.tip.adapter.db.DBActivationSpec">

            <property name="DescriptorName" value="ReadEventService.Events"/>

            <property name="QueryName" value="ReadEventServiceSelect"/>

            <property name="MappingsMetaDataURL" value="ReadEventService-or-mappings.xml"/>

            <property name="PollingStrategy" value="LogicalDeletePollingStrategy"/>

            <property name="MarkReadColumn" value="STATUS"/>

            <property name="MarkReadValue" value="P"/>

            <property name="MarkReservedValue" value="N${weblogic.Name-1}-${IP-2}"/>

            <property name="MarkUnreadValue" value="N"/>

            <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"/>

          </activation-spec>

        </endpoint-activation>

      7. Test JDBC Data Source nonXA with default settings

       

      Expected Result

      1) STATUS "N" -> STATUS "N1-01" -> STATUS "P" -> STATUS "S"

       

      Actual Result

      1) STATUS "N" -> STATUS "N1-01" -> STATUS "S" -> STATUS "P"

       

      Logs in chronological order

      ####<Jul 8, 2019 4:41:10 PM>

      [OSB Tracing] Outbound request was sent.

      Service Ref = SetSateService

      URI = jca://eis/DB/test

      Request metadata =

          <xml-fragment>

            <tran:headers xsi:type="jca:JCARequestHeadersXML" xmlns:jca="http://www.bea.com/wli/sb/transports/jca" xmlns:tran="http://www.bea.com/wli/sb/transports"

      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

              <jca:SOAPAction>"setState"</jca:SOAPAction>

            </tran:headers>

            <tran:encoding xmlns:tran="http://www.bea.com/wli/sb/transports">utf-8</tran:encoding>

          </xml-fragment>

      Payload =

      <?xml version="1.0" encoding="UTF-8"?>

      <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Header/><soapenv:Body>...set state S..</soapenv:Body></soapenv:Envelope>

      >

      ####<Jul 8, 2019 4:41:10 PM>

      <

      [OSB Tracing] Inbound response was sent.

      Service Ref = Read DB Proxy Service

      URI = jca://eis/DB/test

      Message ID = ...

      Response metadata =

      <xml-fragment>

        <tran:headers xsi:type="jca:JCAResponseHeadersXML" xmlns:jca="http://www.bea.com/wli/sb/transports/jca" xmlns:tran="http://www.bea.com/wli/sb/transports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>

        <tran:response-code xmlns:tran="http://www.bea.com/wli/sb/transports">0</tran:response-code>

      </xml-fragment>

      Payload =

      >

       

      P.S. Read DB Proxy Service uses Best Effort for publish to JMS Queue. HDB does not support Skip Locked

       

      Could you please tell me how to get Expected Result?