Db Adapter participating in global transaction

Hi,
Is the Db adapter able to particiapte in a bpel global transaction becoz it uses a xadatasource or becoz it uses a toplink session.
Also how do i make a web service participate in bpel global transaction.
Thanks.

Whenever you make a partner link from your BPEL flow to another web-service, its entry is made into BPEL.XML. So in order to declare a DB Adapter participate in a transaction:
1) Couble click on the partner link icon and go to property tab. specify a property name as 'transaction' value as 'participate'.
2) Or edit the bpel.xml and specify the same property as follows:
<partnerLinkBinding name="Flow">
<property name="wsdlLocation">http://fdapint6:8088/orabpel/default/FLow/Flow?wsdl</property>
<property name="transaction">participate</property>
</partnerLinkBinding>
HTH
regards
Joy

Similar Messages

  • ORA-02045: too many local sessions participating in global transaction

    Hi,
    this is related with the solution that I got from my previous post in
    modify LONG column using trigger
    that solution work in my local schema. But when test this in the real application,
    I got above error.
    can I know what is the reason?
    thanks

    Hi Michael,
    below is my code
    I created the loopback db link as follows
    CREATE PUBLIC DATABASE LINK "DEV_LOOPBACK.MYDOMAIN.COM" 
        CONNECT TO "DBLINK_USER"
        IDENTIFIED BY "********" 
        USING 'DEV' trigger as follow
    CREATE OR REPLACE TRIGGER TEST_TABLE_MEMO_AFT_UPD
    AFTER UPDATE
    ON TABLE_MEMO
    FOR EACH ROW
    DECLARE
      myCOLNAME VARCHAR2(20);
    BEGIN
      IF :NEW.COL_NAME = 'FC_NOTE' THEN
        myCOLNAME := :NEW.COL_NAME;
        EXECUTE IMMEDIATE
          DECLARE
            Original_Char VARCHAR2(32767);
            Fixed_Char VARCHAR2(32767);
          BEGIN
            SELECT MEMO INTO Original_Char FROM TABLE_MEMO@DEV_LOOPBACK WHERE RECNO = :1 AND COL_NAME = :2;
            UPDATE MBS_OWNER.TABLE_MEMO@DEV_LOOPBACK SET MEMO = REPLACE(Original_Char,chr(141),CHR(13)) WHERE RECNO = :1 AND COL_NAME = :2;
          END;
        ' USING :NEW.RECNO,myCOLNAME;
      ELSE
        NULL;
      END IF;
    EXCEPTION
      WHEN OTHERS THEN
        raise_application_error(-20005,SQLCODE||' TRIGGER ERROR AFTER UPDATE '||SQLERRM);
    END;Note:
    with adding a loopback dblink, now I have 5 dblink active in the DB.
    My Open_Links parameter set to 4 and I don't have INIT.ORA
    thanks
    Lie

  • The method 'commit' cant be called when a global transaction is active.

    Hello,
    I've installed the SOAdemo a couple of times on local machines, and it works fine. Now I've deployed the SOADemo on a separate server and a strange error occurs in BPEL when testing the SOADemo.
    The SOAOrderBooking BPEL process runs into an error at the GetOrderId process:
    ================================
    file:/C:/product/10.1.3.1/OracleAS_1/bpel/domains/default/tmp/.bpel_SOAOrderBooking_1.0_937b09d1bd8dae1b33b028b2871aef63.tmp/OrderSequence.wsdl [ OrderSequence_ptt::OrderSequence(OrderSequenceInput_msg,OrderSequenceOutputCollection) ] - WSIF JCA Execute of operation 'OrderSequence' failed due to: DBWriteInteractionSpec Execute Failed Exception.
    unknown failed. Descriptor name: [unknown]. [Caused by: The method 'commit' cant be called when a global transaction is active .
    ; nested exception is:
         ORABPEL-11616
    =================================
    I am using SOA Suite 10.1.3.0 and Database 10201, deployed on Windows.
    Can anybody tell me what can cause this problem?
    Thanks in advance,
    Regards Leon                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

    Hi,
    Hi, I am getting the same error using ESB Database Adapter.
    My faultstring is:
    ========================
    oracle.tip.esb.server.common.exceptions.BusinessEventRetriableException: An unhandled exception has been thrown in the ESB system. The exception reported is: "oracle.tip.esb.server.common.exceptions.BusinessEventRetriableException: An unhandled exception has been thrown in the ESB system. The exception reported is: "org.collaxa.thirdparty.apache.wsif.WSIFException: esb:///ESB_Projects/my_ESB/myAdapter.wsdl [ myAdapter_ptt::myAdapter(InputParameters,OutputParameters) ] - WSIF JCA Execute of operation 'myAdapter' failed due to: DBWriteInteractionSpec Execute Failed Exception.
    unknown failed. Descriptor name: [unknown]. [Caused by: The method 'commit' cant be called when a global transaction is active.]
    ; nested exception is:
         ORABPEL-11616
    DBWriteInteractionSpec Execute Failed Exception.
    unknown failed. Descriptor name: [unknown]. [Caused by: The method 'commit' cant be called when a global transaction is active.]
    Caused by Exceptoin [TOPLINK-4002] (Oracle TopLink - 10g Release 3 (10.1.3.1.0) (Build 061004)): oracle.toplink.exceptions.DatabaseException
    Belső kivétel: java.sql.SQLException: The method 'commit' cant be called when a global transaction is active.Error Code: 0.
    ==========================
    (BTW, what has 'commit' to do with a procedure that is only reading the database?)
    Regards,
    Patrik

  • How to configure global transaction wthin Oracle AS JMS and Oracle JMS

    How to configure global transaction if I take a message from Oracle JMS(AQ) and send it to the Oracle JMS?

    Which version of OC4J are you working on?
    In OC4J 10.1.3.x, presume your OC4J JMS listens messages via MDB which uses a resource adapter as a message listener. The resouce adaper could be the generic JMS adapter deployed in OC4J as the default.
    Resource adapter configuration to support MDBs is included in the standard ra.xml file, which lists the message listener types that the resource adapter supports.
    The MDB developer or deployer configures the MDB in the ejb-jar.xml file, through a <message-driven> element.
    In addition to above, configuration in the ejb-jar.xml file specifies whether an MDB uses transactions.
    1) The <transaction-type> subelement of <message-driven> in ejb-jar.xml has a value of Container, and the <trans-attribute> subelement of <container-transaction> (under the <assembly-descriptor> element) has a value of Required. In this circumstance, if there is an imported transaction, then message delivery and related work are performed within that transaction. If there is no imported transaction, OC4J creates a transaction, and message delivery and related work are performed within that transaction.
    2) The <transaction-type> subelement of <message-driven> in ejb-jar.xml has a value of Bean. In this circumstance, the MDB manages the transaction. If a transaction is imported, OC4J will suspend it before the message delivery method call to the MDB, in order to avoid conflict.
    Message delivery is not transacted if the <transaction-type> subelement of <message-driven> in ejb-jar.xml has a value of Container, but the <trans-attribute> element has a value of NotSupported. If there is an imported transaction in this circumstance, OC4J will suspend the transaction before the message delivery method call to the MDB.
    Details could be found from OC4J Resource Adapter Guide.

  • How 2 avoid a Non-XA resource from listing in Global Transaction?

    <pre>
    Hey,
    I am using container managed transaction in a stateless session bean. We are using two datasources, one xa and non-xa. I am using these two datasources in a single transaction and i am getting an exception that both can't participate in the same transaction.
    Is there a way that I don't want to enlist my non-xa resource with transaction manager?
    I have come across the following approach.
    I have seen Simulate Two Phase for Non XA, but you are saying to be careful with this option as for Example, Non-XA and XA says OK during prepare phase(phase I) and then XA resources decides to roll back in phase II, Non-XA can't revert as it is already commited,
    But I have also come across LAST PARTICIPANT NON-XA along with mutliple XAs option in websphere, like this if I update my Non-XAs in the end, will WEBLOGIC takes care of all XAs and Non-XAs as single atomic operation or it does partially ???
    Appreciate your help.
    Thanks,
    Rao Kotha.
    </pre>

    You can make the non-XA driver based data-source 'not to honor the global
    transaction'. Which version of weblogic are you using?
    By default, when you create a data source, it is a TxDataSource (it honors
    global tx). In the console, there is a check box to disable the default
    behavior which will make the data source not to participate in transactions.
    --Sathish
    <Janardhana Rao Kotha> wrote in message news:[email protected]..
    <pre>
    Hey,
    I am using container managed transaction in a stateless session bean. We
    are using two datasources, one xa and non-xa. I am using these two
    datasources in a single transaction and i am getting an exception that
    both can't participate in the same transaction.
    Is there a way that I don't want to enlist my non-xa resource with
    transaction manager?
    I have come across the following approach.
    I have seen Simulate Two Phase for Non XA, but you are saying to be
    careful with this option as for Example, Non-XA and XA says OK during
    prepare phase(phase I) and then XA resources decides to roll back in phase
    II, Non-XA can't revert as it is already commited,
    But I have also come across LAST PARTICIPANT NON-XA along with mutliple
    XAs option in websphere, like this if I update my Non-XAs in the end, will
    WEBLOGIC takes care of all XAs and Non-XAs as single atomic operation or
    it does partially ???
    Appreciate your help.
    Thanks,
    Rao Kotha.
    </pre>

  • MQ message is not coming back in MQ in case of error in Global Transaction

    Hi,
    ```````````````````````````````````````````````````````
    I am using Oracle JDeveloper 11.1.1.5.0 and SOA server 11.1.1.5
    ```````````````````````````````````````````````````````
    Use Case :_
    I have created a Sync BPEl process. In which I am dequeing the messages from MQ using "Get Messages from MQ" Operation available in MQ series Adapter. Also checked the Synchronous check Box, So that we can have the Ondemand dequeing of Messages.
    Three Properties have been added In Composite.xml file  to make the MQ adapter service participate in Single global transaction :
    <property name="*bpel.config.transaction*">required</property>
    <property name="*bpel.config.oneWayDeliveryPolicy*">sync</property>
    <property name="*partnerLink.SyncReadMQ.transaction*" type="xs:string" many="false">participate</property>
    (this last property is added in the partner link of the MQ series adpater, And hence refleacted in the composite.xml file)
    Also provide the MQ Adapter configuration XATransaction='true' in Admin console, to support the Global transaction by following the Oracle Doc (http://docs.oracle.com/cd/E17904_01/integration.1111/e10231.pdf)
    Issue :_
    In case of any system error, The Message is not going back into the MQ and it is lost. My concern is that if I have made the MQ adpater service to participate in the global transaction of the Main BPEL process then upon any fault occur the Adapter service should be rolled back. but it is not happening.
    I want the message back in the Queue in case of any error.
    Would anyone please help me in this issue.+
    `````````````````````````````````````````````````````````````````````````````````````````
    One more thing to notice is that MQ Adapter is a transactional adapter it should participate in the rtransaction.
    `````````````````````````````````````````````````````````````````````````````````````````
    Thanks
    Sunil
    Edited by: 856749 on May 17, 2012 10:57 AM
    Edited by: 856749 on May 18, 2012 7:34 PM

    Hi All,
    Still this thread is unanswered, Is there any genius who has done Transaction handling on Adpaters (MQ or JMS). I have look into may threads on forums, but no appropriate information is given about this issue. If this thread is been answered then it will be very helpfull for othes dealing with transaction in MQ.
    Thanks
    Sunil

  • Global transactions in OSB and EJB 2.1

    Hi,
    My team is working in a SOA service based on OSB 11g (11.1.1.5) using DB JCA Adapter and EJB 2.1 over WLS 10g(WLI environment). The logic of the service works in this way:
    1. A table in a database (XE) is polled by the DB Adapter which starts the service (1 row = 1 message).
    2. The message contains a collection of items to be inserted in another Oracle database.
         Once a message/row is picked, and after some steps (logging, validation,etc), there is a for..each action which extracts each item of the collection and executes a service callout action to a business service.
    3. This business service uses EJB protocol to call an EJB (2.1 + WLS Extensions). The EJB is deployed in another domain (WLS 10.3.0/10g and Oracle BEA drivers)  and only executes an store procedure with the parameters based on the message and inserts these values in a table.
    4. Once the for...each finishes, there is a call to another proxy service which marks the message/row as "processed" in the source table. This update is done via DB JCA also.
    5. In case of an error, the error handler of the proxy service calls the proxy service mentioned above to mark the row as "Failed" (in fact there is a retry mechanism, but it's not important for now).
    The service requires to work inside a global transaction. The main requirement is that the collection of items should be processed as "All or None", so basically we're using the options to manage the global transaction. However, the problem is that it's failing to rollback the whole insertion of items when an error is simulated. It only rolls back the last insertion/execution of SP.
    Additionally, the proxy service that should mark the row as FAILED, never updates this one, and the tables stay locked until we modify one of the store procedure in order to avoid the simulated error and commit the transaction.
    The EJB uses WLS extensions with the annotations to "transaction required". The proxy service has the option transaction required also. The database drivers are all XA and we're testing against Oracle11g XE (however, the EJB destiny will be Oracle 8i in production).
    We have tried different alternatives, splitting the logic in different proxies (Proxy services for JCA, Proxy with For Each for EJB, etc), isolating the specific part with the EJB call, without success.
    The security between domains is set as Global Trust.
    Do you have any idea, example or suggestion about this problem? Is EJB really supported in Global Transactions and XA?
    Thanks in advance.

    where do you find the J2EE Connector 1.5 compliant
    Resource Adapter?I wrote the compliant adapter myself. Hey Steve,
    Were you able to find a solution for this problem. I am struggling with the same problem with the RI Beta implementation.
    Sandeep

  • E-Business Suite apps_initialize and SOA Global Transactions

    Hi,
    We are developing an integration which sends data from one system to an Oracle E-Business Suite instance. In order to load the data into E-Business we need to call API’s which require the fnd_global.apps_initialize to be run.
    We have a custom PL/SQL procedure which calls the API
    e.g.
    SOA -> custom PL/SQL -> E-Biz API
    The custom PL/SQL runs apps_initialize.
    The problem is when we call this from SOA via a XA connection we get the following error:
    <P_ERR_MESSAGE>Error - Failed to delete the interface records after reading result! Message: Unknown Error ORA-20001: Oracle error -20001: ORA-20001: Oracle error -2074: ORA-02074: cannot SET NLS in a distributed transaction
    has been detected in fnd_global.set_nls.set_parameter('NLS_LANGUAGE','AMERICAN').
    has been detected in fnd_global.set_nls. ORA-06512: at "APPS.APP_EXCEPTION", line 72
    ORA-06512: at "APPS.FND_GLOBAL", line 245
    ORA-06512: at "APPS.FND_GLOBAL", line 1426
    ORA-06512: at "APPS.FND_GLOBAL", line 1684
    ORA-06512: at "APPS.FND_GLOBAL", line 2309
    ORA-06512: at "APPS.FND_GLOBAL", line 2447
    ORA-06512: at "APPS.FND_GLOBAL", line 2385
    ORA-06512: at "APPS.ICSOA_UTIL_PKG", line 42
    ORA-06512: at "APPS.ICAR_INT_PKG", line 521
    </P_ERR_MESSAGE>
    The main error here is cannot SET NLS in a distributed transaction.
    This is caused by fnd_global.apps_initialize running SET NLS commands in order to do it’s thing.
    We are looking to use the functionality of global transactions in order to achieve reliable messaging.
    Does anyone have any experience with calling custom PL/SQL from SOA XA connections?
    Robert

    Robert,
    I have the similar use case. I am using a seeded Oracle API to insert data into the tables. I want the user information to be populated in the WHO columns (CREATED_BY, LAST_UPDATED_BY). I have mentioned the jca.apps.username and jca.apps.responsibility in the Invoke activity.
    But unfortunately, the columns are not populated with the data. I am using the Oracle Apps Adapter to call the API.
    Any inputs will be really helpful.
    Thanks,
    Sakthi.

  • XA Global transaction

    Hi,
    I am unable to create a global transaction project.The project consists of a DB adapter that is polling a table,then using a mediator,it is putting the records into a queue using JMS adapter.But i am unable to make a global transaction happen as after polling,the DB adapter is also updating a flag,so if the queue is down,the flag should not be updated,but it is being updated.I have set evrything from conncetion factory to data source as XA enabled.But still the problem is occurring.
    However in JMS adapter,if i make the isTransacted field as true,the flag is not being updated.
    but then when i make the queue available,it shows
    Exception occured when binding was invoked. Exception occured during invocation of JCA binding: "JCA Binding execute of Reference operation 'Produce_Message' failed due to: ERRJMS_TRX_BEGIN. ERRJMS_TRX_BEGIN. CCI Local Transaction BEGIN failed due to: ERRJMS_NOT_TRANSACTED. ERRJMS_NOT_TRANSACTED. Invalid call to method begin() as underlying JMS session is not transacted. Please examine the log file to determine the problem. Please examine the log file to determine the problem. ". The invoked JCA adapter raised a resource exception. Please examine the above error message carefully to determine a resolution.
    Can someone please tell me what is wrong?
    Regards,
    Bharat

    Hi Bharat,
    I am also facing the same issue. Kindly let me know if you have fixed this.
    Thank You.
    Regards
    Prasanth

  • The method 'rollback' cant be called when a global transaction is active

    I receive the following error stack while dequeuing a message (aq adapter outbound) and forward the message to a database (database adapter inbound) within Oracle ESB 10.1.3.4.
    The database connection is dynamic using additional variables in the xlst transformation and putting the connection information (jndi name) in the xml doc:
    <xsl:variable name="JDBC_RESOURCE"
    select="/imp1:MixMatchMsg/imp1:Winkel/imp1:JNDI_NAME"/>
    <xsl:variable name="SET_DATASOURCE"
    select="ehdr:setOutboundHeader('/dhdr:OutboundDBHeaderType/dhdr:dataSourceName',$JDBC_RESOURCE,'dhdr=http://xmlns.oracle.com/pcbpel/adapter/db/;')"/>
    An unhandled exception has been thrown in the ESB system.
    The exception reported is: "org.collaxa.thirdparty.apache.wsif.WSIFException:
    esb:///ESB_Projects/mixmatch_MixMatchESB/WriteWinkels.wsdl
    [ WriteWinkels_ptt::merge(IntMixMatchCollection) ]
    - WSIF JCA Execute of operation 'merge' failed due to: DBWriteInteractionSpec Execute Failed Exception.
    merge failed.
    Descriptor name: [WriteWinkels.IntMixMatch].
    [Caused by: The method 'rollback' cant be called when a global transaction is active.]
    ; nested exception is:
         ORABPEL-11616
    DBWriteInteractionSpec Execute Failed Exception.
    merge failed. Descriptor name: [WriteWinkels.IntMixMatch].
    [Caused by: The method 'rollback' cant be called when a global transaction is active.]
    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:
    The method 'rollback' cant be called when a global transaction is active.Error Code: 0.
    at oracle.tip.adapter.fw.wsif.jca.WSIFOperation_JCA.executeRequestResponseOperation(WSIFOperation_JCA.java:644)
    at oracle.tip.adapter.fw.wsif.jca.WSIFOperation_JCA.executeInputOnlyOperation(WSIFOperation_JCA.java:739)
    at oracle.tip.esb.server.common.wsif.WSIFInvoker.executeOperation(WSIFInvoker.java:927)
    at oracle.tip.esb.server.common.wsif.WSIFInvoker.nextService(WSIFInvoker.java:842)
    at oracle.tip.esb.server.common.wsif.WSIFInvoker.nextService(WSIFInvoker.java:865)
    at oracle.tip.esb.server.service.impl.outadapter.OutboundAdapterService.nextService(OutboundAdapterService.java:231)
    at oracle.tip.esb.server.service.impl.outadapter.OutboundAdapterService.processBusinessEvent(OutboundAdapterService.java:138)
    at oracle.tip.esb.server.dispatch.InitialEventDispatcher.dispatchNonRoutingService(InitialEventDispatcher.java:411)
    at oracle.tip.esb.server.dispatch.InitialEventDispatcher.dispatch(InitialEventDispatcher.java:169)
    at oracle.tip.esb.server.dispatch.BusinessEvent.raise(Bu
    The payload looks as follows:
    <top:IntMixMatchCollection xmlns:top="http://xmlns.oracle.com/pcbpel/adapter/db/top/WriteWinkels">
    <top:IntMixMatch>
    <top:nummer>1</top:nummer>
    <top:omschrijving>C1000 Tandenborstels: 3 voor 2.56</top:omschrijving>
    <top:kassabonOmschrijving1>Tandenborstelactie</top:kassabonOmschrijving1>
    <top:kassabonOmschrijving2>3 voor 2</top:kassabonOmschrijving2>
    <top:aantalPerKlant>2</top:aantalPerKlant>
    <top:begindatum>2009-03-16</top:begindatum>
    <top:einddatum>2009-03-21</top:einddatum>
    <top:mixMatchGroepNummer>1</top:mixMatchGroepNummer>
    <top:mixMatchGroepOmschrijving>WK 200912 Mix matchess</top:mixMatchGroepOmschrijving>
    <top:intMixMatchDsCollection>
    <top:IntMixMatchDs>
    <top:volgnummer>1</top:volgnummer>
    <top:aantalTeNemenArtikelen>3</top:aantalTeNemenArtikelen>
    <top:omschrijving>C1000 Tandenborstels</top:omschrijving>
    <top:kortingToerekenenJn>J</top:kortingToerekenenJn>
    <top:bedragTeBesteden>1.23</top:bedragTeBesteden>
    <top:kortingwaarde>2.56</top:kortingwaarde>
    <top:mixMatchNummer>1</top:mixMatchNummer>
    <top:intMixMatchHfdgrInDsCollection>
    <top:IntMixMatchHfdgrInDs>
    <top:hoofdgroepnummer>16</top:hoofdgroepnummer>
    <top:mixMatchNummer>1</top:mixMatchNummer>
    <top:mixMatchDoosVolgnummer>1</top:mixMatchDoosVolgnummer>
    </top:IntMixMatchHfdgrInDs>
    </top:intMixMatchHfdgrInDsCollection>
    <top:intMixMatchArtikelInDsCollection>
    <top:IntMixMatchArtikelInDs>
    <top:artonnummer>10010205</top:artonnummer>
    <top:actieInkoopprijsEncrypted>6C1407B28B5B7EDC</top:actieInkoopprijsEncrypted>
    <top:uitsluitenJn>J</top:uitsluitenJn>
    <top:mixMatchNummer>1</top:mixMatchNummer>
    <top:mixMatchDoosVolgnummer>1</top:mixMatchDoosVolgnummer>
    </top:IntMixMatchArtikelInDs>
    </top:intMixMatchArtikelInDsCollection>
    <top:intMixMatchHfdsubgrpInDsCollection>
    <top:IntMixMatchHfdsubgrpInDs>
    <top:hoofdsubgroepnummer>82</top:hoofdsubgroepnummer>
    <top:mixMatchNummer>1</top:mixMatchNummer>
    <top:mixMatchDoosVolgnummer>1</top:mixMatchDoosVolgnummer>
    </top:IntMixMatchHfdsubgrpInDs>
    </top:intMixMatchHfdsubgrpInDsCollection>
    </top:IntMixMatchDs>
    </top:intMixMatchDsCollection>
    <top:intMixMatchTijdCollection>
    <top:IntMixMatchTijd>
    <top:dagnummer>1</top:dagnummer>
    <top:begintijd>0001-01-0112.23.00</top:begintijd>
    <top:eindtijd>0001-01-0114.45.00</top:eindtijd>
    <top:mixMatchNummer>1</top:mixMatchNummer>
    </top:IntMixMatchTijd>
    </top:intMixMatchTijdCollection>
    </top:IntMixMatch>
    </top:IntMixMatchCollection>
    Anybody any idea what could be wrong?
    Any ideas for a workaround/solution?

    I encountered this error while trying ADF tutorial CH10 - Developing an Edit Page, after changing some data on the Edit page and click on Save, the error appears on top of the page. The roll back was called implicatly by ADF, per stack trace msg it seems to come from failing to commit and then failing to roll back. Not sure why this is happening, please advise.
    WARNING: The method 'commit' cant be called when a global transaction is active. [TopLink Warning]: 2006.12.27 12:14:39.963--ClientSession(29795927)--Thread(Thread[HTTPThreadGroup-6,5,HTTPThreadGroup])--Local Exception Stack:
    Exception [TOPLINK-4002] (Oracle TopLink - 10g Release 3 (10.1.3.1.0) (Build 061004)): oracle.toplink.exceptions.DatabaseException
    Internal Exception: java.sql.SQLException: The method 'commit' cant be called when a global transaction is active.Error Code: 0....
    at QPPublicFacade_LocalProxy_4ogao92.mergeEntity(Unknown Source)<----------> WHAT may cause mergeEntity failed??

  • Global Transaction Timeout

    Hi All-
    Lets say we have global transaction timeout set as 30 sec (transaction-manager.xml) and one of my database adapter is taking 10 mins to complete, is there any problem in that? DO we have to set any property on database adpater?
    The database adapter invoke, Is it a asynch or sync process?
    Regards,
    Sreejit

    Hi Shanmu,
    I am using release 10.1.3.3.0 and we are calling the database adapter to call the standard ERP api to import purchase order and it takes MAX time 10-15 minutes to complete the process.
    Major step in our bpel process:
    1. first activity is to receive the file polling, MAX 10 seconds.
    2. calls database adapter for logging purpose, creates one row in table, MAX time 10 seconds.
    3. Calls database adapter to validate and insert the 500 records, MAX time 10 seconds.
    4. Calls OA adapter to call the Oracle EBS R12 standard API to create Purchase order, MAX time 10-15 minutes.
    5. Calls database adapter to call the post update process, MAX time 5 minutes.
    6. deletes the file fileadapter, MAX time 2 sec
    7. Calls database adapter to update one row for logging purpose, MAX time 2 seconds.
    Current transaction timeout is set as 30 second in SOA_Oracle_Home\j2ee\home\config\transaction-manager.xml and 60 or somewhere 120 in SOA_Oracle_Home\j2ee\home\application-deployments\orabpel\ejb_ob_engine\orion-ejb-jar.xml
    Do you think that we need to increase the time out more than the time taking by the adapter No.4 and No. 5?
    And thanks for the information between 10g and 11g.
    Regards,
    Sreejit

  • Advise on using DBMS_XA with multiple branches under one global transaction

    Dear all
    I need some advise on using DBMS_XA from PL/SQL with tightly coupled multiple branches under one global transaction. Basically, I've successfully written some PL/SQL code that in 3 different sessions attaches to 3 different branches of one global transaction and before ending each branch they can see each others uncommitted data. So far so good.
    However, I'm not sure I completely understand how each branch must call xa_end, xa_prepare and xa_commit correctly using two phase commit and my calls result in errors like:
    ORA-24767: transaction branch prepare returns read-only (XA error code 3 = Transaction was read-only and has been committed)
    ORA-24756: transaction does not exist (XA error code -4 = XID is not valid)
    ORA-02051: another session or branch in same transaction failed or finalized
    This is the structure of my programs (3 SQL*Plus sessions):
    main: Uses xid 123|0 (branch 0 of global transaction 123). This should be the coordinator that commits using two phase commit across the 3 branches
    m1.xa_start tmnoflags
    m2.DML
    m3.Wait for thread A + B to manually be started and run xa_end
    m4.xa_end tmsuccess
    m5.xa_prepare
    m6.xa_commit false
    thread A: Uses xid 123|A (branch A of global transaction 123)
    a1.xa_start tmnoflags
    a2.DML -- thread A can see main and thread B's data
    a3.xa_end tmsuccess
    a4.xa_prepare -- required?
    a5.Should we also call xa_commit false?
    thread B: Uses xid 123|B (branch B of global transaction 123)
    b1.xa_start tmnoflags
    b2.DML -- thread B can see main and thread A's data
    b3.xa_end tmsuccess
    b4.xa_prepare -- required?
    b5.Should we also call xa_commit false?
    The failing steps are:
    m5
    m6
    a4
    a5
    b4
    b5
    Before starting calling xa_end I see 3 rows in V$GLOBAL_TRANSACTION, eg (hex 7B = decimal 123):
    FORMATID GLOBALID BRANCHID BRANCHES REFCOUNT PREPARECOUNT STATE FLAGS COUPLING
    203348753 0000007B 00000000000000000000000000000000 3 3 0 ACTIVE 0 TIGHTLY COUPLED
    203348753 0000007B 0000000000000000000000000000000A 3 3 0 ACTIVE 0 TIGHTLY COUPLED
    203348753 0000007B 0000000000000000000000000000000B 3 3 0 ACTIVE 0 TIGHTLY COUPLED
    Thanks a lot in advance.
    Cheers
    Finn

    OK, I've figured it out. This is poorly documented as it's not well explained how to handle the various return codes. Turns out that all but the last xa_prepare calls return dbms_xa.xa_rdonly (tightly coupled branches are combined -- "read only" optimization), the last one returns dbms_xa.xa_ok and this is when you should call xa_commit.
    Now my next problem is that DBMS_XA doesn't work from within jobs (DBMS_JOB and DBMS_SCHEDULER), which makes it very difficult to use DBMS_XA. My purpose of using DBMS_XA is to coordinate work across multiple sessions in one transaction but if I can't easily create the multiple sessions, I'm stuck.
    When called from a job, xa_start throws:
    ORA-24789: start not allowed in recursive call
    on Oracle 11.2. In Oracle 11.1 it works, but xa_end fails with
    ORA-25352: no current transaction
    so I guess in fact the xa_start call didn't really work either, even though it returned tm_ok.
    I'm now trying to find a workaround on how to use DBMS_XA from within jobs, please comment if you have any suggestions. Or if you have any suggestions on other means of establishing the concurrent sessions (I wouldn't like to resort to external programs that need username/password to connect as password management would be a security issue).
    Thanks in advance.
    Cheers
    Finn

  • Error in Global Transaction

    Hi,
    I have installed Tuxedo 10R3 on AIX 5.3.. I have written a sample code for Global Transaction.. While invoking the service, Tpcall is failing with status 0.. So i couldnot understand where the error..
    My source code for client program is:
    IDENTIFICATION DIVISION.
    PROGRAM-ID. GLOBCL.
    AUTHOR. TUXEDO DEVELOPMENT.
    ENVIRONMENT DIVISION.
    CONFIGURATION SECTION.
    DATA DIVISION.
    WORKING-STORAGE SECTION.
    * Tuxedo definitions
    01 TPTYPE-REC.
    COPY TPTYPE.
    01 TPSTATUS-REC.
    COPY TPSTATUS.
    01 TPSVCDEF-REC.
    COPY TPSVCDEF.
    01 TPINFDEF-REC.
    COPY TPINFDEF.
    01 TPTRXDEF-REC.
    COPY TPTRXDEF.
    * Log messages definitions
    01 LOGMSG.
    05 FILLER PIC X(8) VALUE "GLOBCL:".
    05 LOGMSG-TEXT PIC X(50).
    01 LOGMSG-LEN PIC S9(9) COMP-5.
    01 USER-DATA-REC PIC X(75).
    01 SEND-STRING PIC X(100) VALUE SPACES.
    01 RECV-STRING PIC X(100) VALUE SPACES.
    LINKAGE SECTION.
    01 OS-LEN PIC S9(9) COMP.
    01 OS-STRING.
    02 PARMPTR-TABLE OCCURS 1 TO 100 TIMES DEPENDING
    ON OS-LEN.
    03 PARMPTR POINTER.
    01 PARM-STRING PIC X(100).
    * Start program with command line args
    PROCEDURE DIVISION
    USING BY VALUE OS-LEN BY REFERENCE OS-STRING.
    MOVE LOW-VALUES TO TPINFDEF-REC.
    MOVE LENGTH OF LOGMSG TO LOGMSG-LEN.
    SET ADDRESS OF PARM-STRING TO PARMPTR(2).
    MOVE PARM-STRING TO SEND-STRING.
    START-GLOBCL.
    DISPLAY "SEND-STRING:" SEND-STRING.
    MOVE "Started" TO LOGMSG-TEXT.
    PERFORM DO-USERLOG.
    PERFORM DO-TPINIT.
    PERFORM DO-TPBEGIN.
    PERFORM DO-TPCALL.
    PERFORM DO-TPCOMMIT.
    PERFORM DO-TPTERM.
    PERFORM EXIT-PROGRAM.
    * Now register the client with the system.
    DO-TPINIT.
    MOVE SPACES TO USRNAME.
    MOVE SPACES TO CLTNAME.
    MOVE SPACES TO PASSWD.
    MOVE SPACES TO GRPNAME.
    MOVE ZERO TO DATALEN.
    SET TPU-DIP TO TRUE.
    CALL "TPINITIALIZE" USING TPINFDEF-REC
    USER-DATA-REC
    TPSTATUS-REC.
    IF NOT TPOK
    MOVE "TPINITIALIZE Failed" TO LOGMSG-TEXT
    PERFORM DO-USERLOG
    PERFORM EXIT-PROGRAM
    END-IF.
    DO-TPBEGIN.
    MOVE 0 TO T-OUT.
    CALL "TPBEGIN" USING TPTRXDEF-REC TPSTATUS-REC.
    IF NOT TPOK
    MOVE "TPBEGIN Failed" TO LOGMSG-TEXT
    PERFORM DO-USERLOG
    DISPLAY "TPBEGIN:" TP-STATUS
    PERFORM EXIT-PROGRAM
    END-IF.
    DISPLAY "COMM HANDLE:" COMM-HANDLE.
    * Issue a TPCALL
    DO-TPCALL.
    MOVE 100 TO LEN.
    MOVE "STRING" TO REC-TYPE.
    MOVE "GLOBSRV" TO SERVICE-NAME.
    SET TPBLOCK TO TRUE.
    SET TPTRAN TO TRUE.
    SET TPNOTIME TO TRUE.
    SET TPSIGRSTRT TO TRUE.
    SET TPCHANGE TO TRUE.
    CALL "TPCALL" USING TPSVCDEF-REC
    TPTYPE-REC
    SEND-STRING
    TPTYPE-REC
    SEND-STRING
    TPSTATUS-REC.
    IF NOT TPOK
    MOVE "TPCALL Failed" TO LOGMSG-TEXT
    PERFORM DO-USERLOG
    DISPLAY "TPCALL:" TP-STATUS
    END-IF.
    DO-TPCOMMIT.
    CALL "TPCOMMIT" USING TPTRXDEF-REC TPSTATUS-REC.
    IF NOT TPOK
    MOVE "TPCOMMIT Failed" TO LOGMSG-TEXT
    PERFORM DO-USERLOG
    DISPLAY "TPCOMMIT:" TP-STATUS
    PERFORM EXIT-PROGRAM
    END-IF.
    DISPLAY "RECV-STRING:" SEND-STRING.
    * Leave TUXEDO
    DO-TPTERM.
    CALL "TPTERM" USING TPSTATUS-REC.
    IF NOT TPOK
    MOVE "TPTERM Failed" TO LOGMSG-TEXT
    PERFORM DO-USERLOG
    END-IF.
    * Log messages to the userlog
    DO-USERLOG.
    CALL "USERLOG" USING LOGMSG
    LOGMSG-LEN
    TPSTATUS-REC.
    *Leave Application
    EXIT-PROGRAM.
    MOVE "Ended" TO LOGMSG-TEXT.
    PERFORM DO-USERLOG.
    STOP RUN.
    and the source code for server program is:
    IDENTIFICATION DIVISION.
    PROGRAM-ID. GLOBSRV.
    AUTHOR. TUXEDO DEVELOPMENT.
    ENVIRONMENT DIVISION.
    CONFIGURATION SECTION.
    DATA DIVISION.
    WORKING-STORAGE SECTION.
    * Tuxedo definitions
    01 TPSVCRET-REC.
    COPY TPSVCRET.
    01 TPTYPE-REC.
    COPY TPTYPE.
    01 TPSTATUS-REC.
    COPY TPSTATUS.
    01 TPSVCDEF-REC.
    COPY TPSVCDEF.
    * Log message definitions
    01 LOGMSG.
    05 FILLER PIC X(10) VALUE
    "GLOBSRV :".
    05 LOGMSG-TEXT PIC X(50).
    01 LOGMSG-LEN PIC S9(9) COMP-5.
    * User defined data records
    01 RECV-STRING PIC X(100).
    01 SEND-STRING PIC X(100).
    LINKAGE SECTION.
    PROCEDURE DIVISION.
    START-FUNDUPSR.
    MOVE LENGTH OF LOGMSG TO LOGMSG-LEN.
    MOVE "Started" TO LOGMSG-TEXT.
    PERFORM DO-USERLOG.
    * Get the data that was sent by the client
    MOVE LENGTH OF SEND-STRING TO LEN.
    CALL "TPSVCSTART" USING TPSVCDEF-REC
    TPTYPE-REC
    SEND-STRING
    TPSTATUS-REC.
    IF NOT TPOK
    MOVE "TPSVCSTART Failed" TO LOGMSG-TEXT
    PERFORM DO-USERLOG
    PERFORM EXIT-PROGRAM
    END-IF.
    IF TPTRUNCATE
    MOVE "Data was truncated" TO LOGMSG-TEXT
    PERFORM DO-USERLOG
    PERFORM EXIT-PROGRAM
    END-IF.
    INSPECT SEND-STRING CONVERTING
    "abcdefghijklmnopqrstuvwxyz" TO
    "ABCDEFGHIJKLMNOPQRSTUVWXYZ".
    MOVE SEND-STRING TO LOGMSG-TEXT.
    PERFORM DO-USERLOG.
    MOVE "Success" TO LOGMSG-TEXT.
    PERFORM DO-USERLOG.
    SET TPSUCCESS TO TRUE.
    COPY TPRETURN REPLACING
    DATA-REC BY SEND-STRING.
    * Write out a log err messages
    DO-USERLOG.
    CALL "USERLOG" USING LOGMSG
    LOGMSG-LEN
    TPSTATUS-REC.
    * EXIT PROGRAM
    EXIT-PROGRAM.
    MOVE "Failed" TO LOGMSG-TEXT.
    PERFORM DO-USERLOG.
    SET TPFAIL TO TRUE.
    COPY TPRETURN REPLACING
    DATA-REC BY SEND-STRING.
    and the output is:
    GLOBCL hi
    SEND-STRING:hiCOB=IBMCobolDB2INSTANCE=db2inst4FLDTBLDIR=/usr/Oracle/Tuxedo10g/udataobj:AUTHSTATE=compatVIEW
    COMM HANDLE:0000000000
    TPCALL:0000000000
    RECV-STRING:hiCOB=IBMCobolDB2INSTANCE=db2inst4FLDTBLDIR=/usr/Oracle/Tuxedo10g/udataobj:AUTHSTATE=compatVIEW
    in the ULOG:
    223955.ibmsceai!?proc.676012.1.-2: 08-10-2009: Tuxedo Version 10.3.0.0, 32-bit
    223955.ibmsceai!?proc.676012.1.-2: GLOBCL: Started
    223955.ibmsceai!?proc.676012.1.0: gtrid x0 x4a80e7fe x1: GLOBCL: TPCALL Failed
    223955.ibmsceai!?proc.676012.1.-2: GLOBCL: Ended
    Any suggestion regarding this??
    Thanks..

    Hi,
    Try switching the order of logging the error message and the DISPLAY of TPSTATUS in the IF NOT TPOK sentence following the CALL of TPCALL. I believe the call to USERLOG is overwriting TPSTATUS so what you are seeing is TPOK from the USERLOG call and not the original status from the TPCALL. Hopefully this will allow you to see the actual error status from the TPCALL.
    Regards,
    Todd Little
    Oracle Tuxedo Chief Architect

  • SQL operations are not allowed with no global transaction by default for X

    Hi All,
    I am getting the above mentioned error.
    java.sql.SQLException: SQL operations are not allowed with no global transaction by default for XA drivers. If the XA driver supports performing SQL operations with no global transaction, explicitly allow it by setting "SupportsLocalTransaction" JDBC connection pool property to true. In this case, a
    lso remember to complete the local transaction before using the connection again for global transaction, else a XAER_OUTSIDE XAException may result. To complete a local transaction, you can either set auto commit to true or call Connection.commit() or Connection.rollback().
    I am developing a web application. I have jsp, servlets, JDBC classes.
    I am using DataSource and Connection pools.
    I am on WLS 8.1 sp3 and Oracle 10.1.
    Part of My Config file looks as follows:
    <JDBCConnectionPool DriverName="weblogic.jdbcx.oracle.OracleDataSource" KeepLogicalConnOpenOnRelease="true" KeepXAConnTillTxComplete="false" Name="AUMDataSource" NeedTxCtxOnClose="false" NewXAConnForCommit="false" Password="{3DES}AKRkWgdzXN8WrXSRtSvJ6g==" Properties="user=pibsrmgr;portNumber=1521;SID=pibsrdod;serverName=pibsrdod.dtu.mlam.ml.com" RollbackLocalTxUponConnClose="true" SupportsLocalTransaction="false" Targets="myserver" TestTableName="SQL SELECT 1 FROM DUAL" URL="jdbc:bea:oracle://pibsrdod.dtu.mlam.ml.com:1521" XAEndOnlyOnce="false" />
    <JDBCTxDataSource EnableTwoPhaseCommit="true" JNDIName="jdbc/AUMDataSource" Name="AUMDataSource" PoolName="AUMDataSource" Targets="myserver" />
    Any help will be appreciated.
    Thanks
    ---Radhe

    Hi,
    Regarding Transactions , the following link can helpful to you .
    Regards,
    Prasanna Yalam

  • Can the ApplicationModule support global Transaction for multi db instance?

    purpose:
    I want to update data in two db instance .
    pre-conditions:
    I create two application module , in the two application modules ,one is root application module. one application module connect one db instance, the other application module connect to the other db instance.The two application modules include entity objects and view objects which map the tables in the two db instance.
    In the jsp page , I bind two view objects , one view is owned by root application module ,the other view object is owned by child application module and the two view objects map the two tables which are in different db instance .the view objects binding style in the jsp page is input-form.
    The result:
    while the input-form is submitted ,the error occurs.The global transaction isn't committed, why?

    A nested application module instance uses the transaction/connection of its parent.
    The simplest way to accomplish what you're trying to do is to use Oracle database DBLinks so that the two-phase commit is handled at the database level.
    ADFBC does not support two-phase commit at the application level between two separate root application module's transactions.

Maybe you are looking for

  • My Ellipsis 8 can no longer detect my gym's wifi signal. Please help!

    I used my Ellipsis 8 to watch Netflix over the open wifi signal at my gym for 2 months with no problem. One day I showed up and no signal was found. I went through all the trouble shooting steps all the way down to factory resets with no resolution.

  • [solved]kernel bug while deleting a file?

    Hi, so I just deleted a file or tried to anyways. But I only got a black screen with the following text: Aug 25 09:44:12 localhost kernel: [475774.988380] BUG: unable to handle kernel NULL pointer dereference at 00000018 Aug 25 09:44:12 localhost ker

  • How to run procedure(with paramater other than errbuff and retcode) through

    Hi everybody, This is Ram. I'm comfortable while running a procedure through concurrent program. but getting error when trying to run a procedure with parameter. Plz let me know the process (if possible example) of running a pl/sql procedure(with par

  • Daisy Chaining Firewire And Thunderbolt

    I have a 2009 iMac and a couple of G Tech external drives linked via Firewire 800. Runs FCPX okay if slow on "export/share".  I'm about to buy a MBP retina 13 inch, I need the portability, but wish to keep using the iMac as the main editing machine.

  • Unique constraint error but key when inserting unique keys!

    Hi, I am tring to update an existing database with some older data, I am getting an error which complains about a unique constraint being violated although there is no voilation evident after testing. I am puzzled by this and was wondering if someone