How to set timeout when BPEL Invokes EBS API in 10G

I am invoking a EBS API through Oracle Applications Adapter in my BPEL, During the execution of my BPEL Process, if my EBS API call takes more than 10s, i want it to timeout. Can you please let me know how can i achieve it. I tried using the <property name="timeout">10</property> <property name="optSoapShortcut">false</property> in the partnerlink defintion, but it didnt help.

Thanks Arik and vijay for your response,
syncMaxWaitTime needs to be set at the domain level, then it would timeout all the services that are deployed on my environment. Property transaction-timeout and syncMaxWaitTime will not resolve the issue, because i need to achieve the timeout for a particular service only (Sorry, I should have mentioned in the problem statement that i need to implement the timeout for a specific service).
I tried the PartnerLink timeout property along with optSoapShortcut but timeout is not happening.
If you could provide me any other alternative solutions that would help me to timeout the call to EBS using a Oracle Applications Adapter in BPEL 10g Invoke activity.
Wish you a belated Happy Christmas and advanced New Year wishes.
Regards,
Sivananda
Edited by: 978071 on Dec 26, 2012 2:43 AM
Edited by: 978071 on Dec 26, 2012 2:44 AM

Similar Messages

  • How to set  password for BPEL domain

    Hi,
    I am new to SOA.
    I want to setup client-server environment for few developers.
    I installed SOA 10.1.3.3 in the server machine.
    And I created few domains in BPEL, one for each developer.
    It didn't ask me to set the password while creation of the domain.
    Please let me know how to set password for newly created domain so that each developer login to his/her own domain and manage processes.
    Thanks!!!

    Thanks for the prompt response.
    What roles should I give to my developers to allow them to manage their services in ESB control, BPEL control, WSM control.
    And I would like to know how to set the password for a BPEL domain too.
    Message was edited by:
    user644377

  • How to set timeout during call oci api

    hi all :
    in my program i use OCIInitialize and OCIEnvInit to connect oracle 10g ,but sometime the db does not return ,whether ok or error , at the same time i use sqlplus to connect db ,it is the same .
    so i want to set timeout in my program , does oracle support set timeout in the such scene , if support ,how can i do ?
    thanks a lot
    Message was edited by:
    user549861

    print code :
    if(OCIInitialize(OCI_THREADED ,0, 0, 0, 0)!=OCI_SUCCESS)
         return -1;
         if(OCIEnvInit( (OCIEnv **) &(p_env), OCI_DEFAULT, 0, 0 )!=OCI_SUCCESS)
         return -1;
    if (OCIHandleAlloc ((dvoid *)p_env, (dvoid **)&p_srv,
    OCI_HTYPE_SERVER, 0, (dvoid **) 0)!=OCI_SUCCESS)
         return -1;
         if(OCIHandleAlloc(p_env, (dvoid **) & (p_err), OCI_HTYPE_ERROR, 0, 0)!=OCI_SUCCESS)
         return -1;
    if (OCIServerAttach (p_srv, p_err, (text *)strNodeName,
    strlen (strNodeName), OCI_DEFAULT)!=OCI_SUCCESS)
         return -1;
         if(OCIHandleAlloc(p_env, (dvoid **) & (p_svc), OCI_HTYPE_SVCCTX, 0, 0)!=OCI_SUCCESS)
         return -1;
         if (OCIHandleAlloc ((dvoid *)p_env, (dvoid **)&p_ses,
    OCI_HTYPE_SESSION, 0, (dvoid **) 0)!=OCI_SUCCESS)
         return -1;
         if (OCIAttrSet ((dvoid *)p_svc, OCI_HTYPE_SVCCTX,
    (dvoid *)p_srv, (ub4) 0, OCI_ATTR_SERVER, p_err)!=OCI_SUCCESS)
         return -1;
         if (OCIAttrSet ((dvoid *)p_ses, OCI_HTYPE_SESSION,
    (dvoid *)strUserName, (ub4)strlen(strUserName),
    OCI_ATTR_USERNAME, p_err)!=OCI_SUCCESS)
         return -1;
    if (OCIAttrSet ((dvoid *)p_ses, OCI_HTYPE_SESSION,
    (dvoid *)strPasswd, (ub4)strlen(strPasswd),
    OCI_ATTR_PASSWORD, p_err)!=OCI_SUCCESS)
         return -1;
    if (OCISessionBegin (p_svc, p_err, p_ses,
    OCI_CRED_RDBMS, OCI_DEFAULT)!=OCI_SUCCESS)
         return -1;
    if (OCIAttrSet ( (dvoid *)p_svc, OCI_HTYPE_SVCCTX,
    (dvoid *)p_ses, (ub4) 0, OCI_ATTR_SESSION, p_err)!=OCI_SUCCESS)
         return -1;
    how can i set timeout in the these code

  • I can not reveal how to set that when I open my Mozilla to appear on the home page, just bookmarks in pictures...

    like this one:
    http://www.google.hr/imgres?imgurl=http://sistemac.carnet.hr/system/files/opera.png&imgrefurl=http://sistemac.carnet.hr/node/147&usg=__Cw6wRHOdgK0llehsTsrdcz8jBLk=&h=689&w=815&sz=91&hl=hr&start=0&zoom=1&tbnid=5SfIkfvCCmDdFM:&tbnh=123&tbnw=145&prev=/images%3Fq%3Dopera%26um%3D1%26hl%3Dhr%26client%3Dfirefox-a%26sa%3DN%26rls%3Dorg.mozilla:en-US:official%26biw%3D1024%26bih%3D581%26tbs%3Disch:10%2C114&um=1&itbs=1&iact=hc&vpx=627&vpy=134&dur=1462&hovh=206&hovw=244&tx=140&ty=104&ei=718FTeKqI8vwsgaL6oHfCQ&oei=718FTeKqI8vwsgaL6oHfCQ&esq=1&page=1&ndsp=15&ved=1t:429,r:8,s:0&biw=1024&bih=581
    thnx

    See [[How to set the home page]]

  • How to set portal context using Java/JPDK api.

    Hi,
    I am in the process of converting pl/sql based database provider contect portlets to Java based JPDK. I ran into issue where the database provider portlet users were getting context auto matically. Now with Java/JPDK portlets , I am receiving no data found error, since the context is not set. The pl/sql is setting wwctx_private_api.set_context ('portal') to set the context. From Java if we call this api, it is taking a toll on the performance and the portlet times out.
    Can any help how to set the context for a web provider using JPDK or any other better solution. Any immediate help is highly appreciated.
    Thanks,
    Rav.

    Hi
    We are trying to access content views for e.g portal.wwsbr_all_items s, portal.wwsbr_all_content_areas c,portal.wwsbr_all_folders f, from aweb provider portlet. When we do a select on those objects , we are getting java sql exception saying "ORA-06510: PL/SQL: unhandled user-defined exception
    ORA-06512: at "PORTAL.WWCTX_SSO", line 1745
    ORA-06510: PL/SQL: unhandled user-defined exception
    ORA-06512: at "PORTAL.WWCTX_SSO", line 1579
    ORA-06502: PL/SQL: numeric or value error
    ORA-06512: at "PORTAL.WWCTX_SSO", line 1834
    ORA-06512: at "PORTAL.WWCTX_API", line 199
    We need to know how to accesss the above views from a jsp based portlet.
    A

  • How to set the debug port for Eclipse for OracleAS 10g Enterprise

    Hello All,
    I am using OracleAS 10g Enterprise, and using dcmctl to startup the server.
    But i do not know how to set the debug port in the startup script for debugging with Eclipse.
    I have tried to add the following options to the dcmctl.bat, but still failed:
    -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=4000
    i.e in the dcmctl.bat script:
    set jvmargs=-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=4000
    set ex=%ohome%\jdk\bin\java -Djava.net.preferIPv4Stack=true %jvmargs%
    Do anyone know how to configure the debug port setting?
    Thank you for your great help!.

    Hi, have you double checked that your oc4j is started with Sun's JVM or any other JVM that recognizes the kind of remote debug option as above? You can find the JVM used by oc4j in the ORACL_HOME/opmn/conf/opmn.xml.
    To double check that your oc4j is started in debug mode, you can test with another remote debugger. Say, with the jdb in sun's jdk jdb -connect com.sun.jdi.SocketAttach:hostname=yourHost,port=4000 (Personally, I also use Jdeveloper or Jswat to double check.) If you can connect with jdb, then you have to check your Eclipse. Can its remote debugger connect to any java application at all?

  • How to set TimeOut period in Portal

    Hi,
    I am running a report in the portal which is taking more than 1 min to display the results. After this one min the page is getting timedout. Can any one please let me know how to administrate the timeout interval. I found this link
    http://help.sap.com/saphelp_nw2004s/helpdata/en/b7/60b54066ea8531e10000000a1550b0/frameset.htm
    but where in the portalapp.xml should I set the parameter "com.sap.portal.page.PageTimeout".
    Thanks,
    Sudhir

    Hi Sudhir
    This link will help you:
    http://help.sap.com/saphelp_nw2004s/helpdata/en/b7/60b54066ea8531e10000000a1550b0/frameset.htm
    Maybe you could consider changing the page properties to increase the cache validity.
    Check the following thread for more details:
    iView Session Timeout
    Cheers.
    Please award points for helpful answers.

  • How to build timeout in BPEL flow?

    Can someone tell me what activities and service to use to build timeout? I could use 'Flow' and put one of the parallel activities as 'Wait'. But how to make the process continue when wait timeout?

    you have wait - for generic wait activities, and onAlarm, to timeout a callback or other operation .. (it's used together with onMessage)
    hth clemens

  • HOW TO SET  VARIABLE WHEN METHOD HAS PRIVATE ACCESS ? ?

    Dear People,
    When I try to use an if then else statement the if part is not executed
    only the else
    if(highestBid != null)
    System.out.println( Bid is: + highestBid.getValue());
    else
    System.out.println(" (no bid) )";
    which can only mean that "highestBid is not being set
    but since "Class Lot" has a private method
    private void setHighestBid(Bid highestBid)
    this.highestBid = highestBid;
    the error message says:
    "TryAuction.java": Error method setHighestBid()
    has private access in class
    so how do I get a value to "highestBid" so the "if" statement
    will have a vaule for "highestBid ?
    the showLots() method in the Class "Auction" doesn't print out the bids !
    below are the classes
    thank you in advance
    Stan
    package stan_bluej_ch4p90;
    //Purpose of project: To demonstrate collections of objects
    //Version: 2001.05.31
    //How to start this project:
    // Create an Auction object.
    // Enter a few lots via its enterLot method. Only String
    // descriptions of the lots are required.
    // Create one or more Person objects to represent bidders.
    // Show the lots and select one to bid for.
    // Get the required Lot onto the object bench.
    // Enter a bid for the lot, passing the Person who is
    // bidding to the bidFor method.
    public class TryAuction
    public static void main(String[] args)
    //create the auction
    Auction cityAuction = new Auction();
    //create the lots for sale
    Lot bicycle = new Lot(1,"bicycle");
    Lot lamp = new Lot(2, "lamp");
    Lot trailer = new Lot(3, "trailer");
    //enter the lots into the city Auction
    cityAuction.enterLot("A bicycle in so so condition");
    cityAuction.enterLot("A brand new lamp");
    cityAuction.enterLot("A trailer built in 2001");
    //show the lots
    System.out.println();
    System.out.println("The first lot for sale: " + bicycle.getDescription());
    System.out.println("The second lot for sale: " + lamp.getDescription());
    System.out.println("The third lot for sale: " + trailer.getDescription());
    //create the people who will bid for the lots
    Person Steve = new Person("Steve");
    Person Maria = new Person("Maria");
    //create the people's bids
    Bid mariaLampBid = new Bid(Maria, 460);
    lamp.setHighestBid(mariaLampBid);
    Bid steveLampBid = new Bid(Steve, 510);
    //create the people's bids
    Bid mariaBicycleBid = new Bid(Maria, 1460);
    //bicycle.setHighestBid(mariaBicycleBid);
    Bid steveBicycleBid = new Bid(Steve, 1510);
    //create the people's bids
    Bid steveTrailerBid = new Bid(Steve, 700510);
    //trailer.setHighestBid(steveTrailerBid);
    Bid mariaTrailerBid = new Bid(Maria, 900460);
    //give the bids
    bicycle.bidFor(Maria,1460);
    bicycle.bidFor(Steve, 1510);
    System.out.println("The highest bid for the bicycle is " + bicycle.getHighestBid().getValue() );
    lamp.bidFor(Maria,460);
    lamp.bidFor(Steve,510);
    System.out.println("The highest bid for the lamp is " + lamp.getHighestBid().getValue() );
    trailer.bidFor(Steve, 700510);
    trailer.bidFor(Maria,900460);
    System.out.println("The highest bid for the trailer is " + trailer.getHighestBid().getValue() );
    System.out.println(" \nMaria's bicycle bid is : " + mariaBicycleBid.getValue() );
    System.out.println("Steve's bicycle bid is : " + steveBicycleBid.getValue() );
    System.out.println(" \nMaria's lamp bid is : " + mariaLampBid.getValue() );
    System.out.println("Steve's lamp bid is : " + steveLampBid.getValue() );
    System.out.println("\nSteve's trailer bid is : " + steveTrailerBid.getValue() );
    System.out.println(" Maria's trailer bid is : " + mariaTrailerBid.getValue() );
    System.out.println();
    cityAuction.showLots();
    //cityAuction.close();
    //The output I get is:
    //The first lot for sale: bicycle
    //The second lot for sale: lamp
    //The third lot for sale: trailer
    //The highest bid for this item is stan_bluej_ch4p90.Bid@f4a24a
    //Maria's bicycle bid is : 1460
    //Steve's lamp bid is : 1510
    //Maria's lamp bid is : 460
    //Steve's lamp bid is : 510
    //Steve's trailer bid is : 700510
    // Maria's trailer bid is : 900460
    //1: A bicycle in so so condition
    // (No bid)
    //2: A brand new lamp
    // (No bid)
    //3: A trailer built in 2001
    // (No bid)
    package stan_bluej_ch4p90;
    import java.util.*;
    //Ex4.14
    * A simple model of an auction.
    * The auction maintains a list of lots of arbitrary length.
    * @author David J. Barnes and Michael Kolling.
    * @version 2001.06.08
    public class Auction
    // The list of Lots in this auction.
    private ArrayList lots;
    // The number that will be given to the next lot entered
    // into this auction.
    private int nextLotNumber;
    * Create a new auction.
    public Auction()
         lots = new ArrayList();
         nextLotNumber = 1;
    * Enter a new lot into the auction.
    * Lots can only by entered into the auction by an
    * Auction object.
    * @param description A description of the lot.
    public void enterLot(String description)
         lots.add(new Lot(nextLotNumber, description));
         nextLotNumber++;
    * Show the full list of lot numbers and lot descriptions in
    * this auction. Include any details of the highest bids.
    public void showLots()
         Iterator it = lots.iterator();
         while(it.hasNext()) {
         Lot lot = (Lot) it.next();
         System.out.println(lot.getNumber() + ": " +
                   lot.getDescription());
         // Include any details of a highest bid.
         Bid highestBid = lot.getHighestBid();
         if(highestBid != null) {
              System.out.println(" Highest Bid: " +
                        highestBid.getValue());
         else {
              System.out.println(" (No bid)");
    * Return the lot with the given number. Return null
    * if a lot with this number does not exist.
    * @param number The number of the lot to return.
    public Lot getLot(int number)
         if((number >= 1) && (number < nextLotNumber)) {
         // The number seems to be reasonable.
         Lot selectedLot = (Lot) lots.get(number-1);
         // Include a confidence check to be sure we have the
         // right lot.
         if(selectedLot.getNumber() != number) {
              System.out.println("Internal error: " +
                        "Wrong lot returned. " +
                        "Number: " + number);
         return selectedLot;
         else {
         System.out.println("Lot number: " + number + " does not exist.");
         return null;
    // public void close()
    // Iterator i = lots.iterator();
    // while(i.hasNext())
    //     System.out.println("The winning amount for the " + bicycle.getDescription()
    //     + " is " + bicycle.getHighestBid());
    //     System.out.println("The winning amount for the " + lamp.getDescription()
    //     + " is " + lamp.getHighestBid());
    //     System.out.println("The winning amount for the " + trailer.getDescription()
    //     + " is " + trailer.getHighestBid());
    package stan_bluej_ch4p90;
    * A class that models an auction bid. The bid contains a reference
    * to the Lot bid for and the user making the bid.
    * @author David J. Barnes and Michael Kolling.
    * @version 2001.05.31
    public class Bid
    // The user making the bid.
    private final Person bidder;
    // The value of the bid. This could be a large number so
    // the long type has been used.
    private final long value;
    * Create a bid.
    * @param bidder Who is bidding for the lot.
    * @param value The value of the bid.
    public Bid(Person bidder, long value)
         this.bidder = bidder;
         this.value = value;
    * @return The bidder.
    public Person getBidder()
         return bidder;
    * @return The value of the bid.
    public long getValue()
         return value;
    package stan_bluej_ch4p90;
    * A class to model an item (or set of items) in an
    * auction: a lot.
    * @author David J. Barnes and Michael Kolling.
    * @version 2001.06.08
    public class Lot
    // A unique identifying number.
    private final int number;
    // A description of the lot.
    private String description;
    // The current highest bid for this lot.
    private Bid highestBid;
    * Construct a Lot, setting its number and description.
    * @param number The lot number.
    * @param description A description of this lot.
    public Lot(int number, String description)
         this.number = number;
         this.description = description;
    * Attempt to bid for this lot. A successful bid
    * must have a value higher than any existing bid.
    * @param bidder Who is bidding.
    * @param value The value of the bid.
    public void bidFor(Person bidder, long value)
         // We trust that lot is genuine. There is nothing to
         // prevent a spurious lot from being bid for, but it
         // would not appear in the auction list.
         if((highestBid == null) ||
         (highestBid.getValue() < value)) {
         // This bid is the best so far.
         setHighestBid(new Bid(bidder, value));
         else {
         System.out.println("\nLot number: " + getNumber() +
                   " (" + getDescription() + ")" +
                   " has a bid of: " +
                   highestBid.getValue());
    * @return The lot's number.
    public int getNumber()
         return number;
    * @return The lot's description.
    public String getDescription()
         return description;
    * @return The highest bid for this lot. This could be null if
    * there are no current bids.
    public Bid getHighestBid()
         return highestBid;
    * @param highestBid The new highest bid.
    private void setHighestBid(Bid highestBid)
         this.highestBid = highestBid;
    package stan_bluej_ch4p90;
    * Maintain details of someone who participates in an auction.
    * @author David J. Barnes and Michael Kolling.
    * @version 2001.05.31
    public class Person
    // The name of this user.
    private final String name;
    * Create a new user with the given name.
    * @param name The user's name.
    public Person(String name)
         this.name = name;
    * @return The user's name.
    public String getName()
         return name;

    Are you ready to kick yourself? The problem lies in the class Auction. You are using showLots() to print the lots, which you are trying to show the lot number, the description and the highest bid. But no there is no where in the class where you set the highest bid. In enterLot() you pass the description of the lot and it creates a new lot with the lot number and the description, but you don't give a bid. Then after the bids are done you do not update Auction to reflect the bids. Let the kicking commence. :-)

  • How to set JPA when related entity do not want to CASCADE

    Here is the case: weblogic 11g, EcliplseLink
    in orm.xml, there is one snippet about the relationship(many to many) for two entities.
    <many-to-many name="supportedHostTypes"
                        target-entity="com.gogog.server.lamp.model.impl.collection.HostTypeEntity"
                        fetch="EAGER">
                        <join-table name="HOST_COMPATIBILITY">
                             <join-column name="Model_ID" />
                             <inverse-join-column name="HOST_TYPE_ID" />
                        </join-table>
    </many-to-many>
    Because i do not set the cascade attributes, when i run Junit test, there is an error: During synchronization a new object was found through a relationship that was not marked cascade PERSIST:[email protected]b.
    Actually, for target table HostType, i have the pre-loaded test data for this table. It does not need to insert it any more. If i set cascade.all attributes, of course, there will be integrity error happens.
    This snippet can work in glassfish with toplink, and now i need to migrate to weblogic, and the error above happens.
    Could any one has some idea how to config it for this case, thanks.

    Hello,
    This error will occur if the existence check for the HostTypeEntity is returning false. The existence check is explained at:
    http://wiki.eclipse.org/Using_EclipseLink_JPA_Extensions_(ELUG)#How_to_Use_the_.40ExistenceChecking_Annotation
    It states that by default, tje existence check is set to check the database implying that the HostTypeEntity with that identity doesn't exist in the database. Some questions if you are sure it does exist; what is the Entities id, what version of EclipseLink are you using and have you set any of the existence checking options anywhere?
    Things to try would be explicitely setting the check_database option or reading in and using the managed instance as the reference instead.
    Best Regards,
    Chris

  • Different when BPEL invoked from Console & from a JSP

    Hi All,
    I have a very Simple BPEL Process which, which when invoked from the BPEL Console is working fine, but when invoked from the JSP, throws a "SelectionFailure" Fault in the Assign activity.
    Can anyone help?
    Thanks
    Chandra

    In the audit trail, under the "receiveInput" activity, I'm able to see the values that I passed as the Input, but in the next "assignActivity", it throws this selectionFailure Fault saying the variable value is empty.
    My input is only 1 value and the XML is pretty straight forward.

  • How to set homepage when opening new tab?

    I've set Google as my home page. When opening a new tab, Google does not appear

    Hi sion,
    This is the default behavior of Firefox. There are lot of great add-ons that will let you customize the new tab page. Take a look at the Knowledge Base article [[Customizing Firefox with add-ons]]. It will show you how to find and manage add-ons in Firefox.
    Hopefully this helps!

  • How to set DbConnections when scheduling a crystal report using Crystal Reports Server Java SDK?

    Post Author: Manjula
    CA Forum: JAVA
    Hi,
    Trying to schedule a report using Crystal Reports Server Java SDK. Want to pass DBConnections from API, though passing DBConnections, the report is not being scheduled and says "Failed to retrieve data from the database.Details:&#91;Database Vendor Code:6550&#93;.
    Would be thankful if someone could answer my point as applicable.
    Here is the code attached.
    ISDKList dbLogons = oReport.getReportLogons();int dbLogonSize = dbLogons.size();
    for(int i=0; i<dbLogonSize; ++i) {
    IReportLogon dbLogon = (IReportLogon)dbLogons.get(i);
    dbLogon.setDatabaseName("DBname");
    dbLogon.setUserName("usrname");
    dbLogon.setPassword("pwd");
    Thanks in advance.

    Post Author: Manjula
    CA Forum: JAVA
    Ted,
    Thank you for your valuable information.
    First, tried scheduling on Central Management Console and then with the java code.It worked fine, but here is another question for you.
    On the Console, a report exists with ServerName and UserName harcoded and when trying to set ServerName and UserName from the java code, its throwing exception. Where as Password is not set on Console, am able to set password from java.
    And DatabaseName is not set on Console (non editable), unable to set the same from java too. Why is it so?
    So, my question is - though ServerName,DatabaseName,UserName,Password exists on the Console report, can't I override those parameters from java?
    Would be greatful if you answer my question and provide me some guidance.
    Thanks in advance.

  • How to set values to bpel variables from Java

    I have a java class to create files and populate some contents into it. On success it returnes "File Created"
    I used the following code to achieve it :-
    WriteFiles objWriteFiles=new WriteFiles();
    String para=((oracle.xml.parser.v2.XMLElement)getVariableData("inputVariable","payload","/client:FileTestProcessRequest/client:HO_ORG_ID")).getFirstChild().getNodeValue();
    String result=objWriteFiles.writeHeaderInfo(para);
    (writeHeaderInfo is a method in my java class)
    addAuditTrailEntry(result);
    I works fine..Now I want to assign this reult value to a bpel variable .. I tried doin it like below:-
    setVariableData("outputVariable","payload","/client:FileTestProcessResponse/client:result" , result)
    but its not working...I get a fault ...
    Can anyone help me out...
    Thanks,
    Githa.R.S

    In this example :
       <!-- Invoke the EmployeeStatus Java class instead of web service -->
       <bpelx:exec name="invokeJavaExec" language="java" version="1.4">
          <![CDATA[
             EmployeeStatus e = new EmployeeStatus();
                String firstName = ((Element)getVariableData(
                                 "EmployeeTravelStatusRequest", "employee",
                                 "/employee/FirstName")).getNodeValue();
                String lastName = ((Element)getVariableData(
                                   "EmployeeTravelStatusRequest", "employee",
                                   "/employee/LastName")).getNodeValue();
                String empStatus = e.getTravelStatus(firstName, lastName);
                addAuditTrailEntry("Employee status is: " + empStatus);
                setVariableData("EmployeeTravelStatusResponse", "travelClass",
                             "/travelClass", empStatus);
          ]]>
       </bpelx:exec>they dont use namespaces in the xpath-expression, can you try that ?

  • Local transaction support when BPEL invokes JCA adapter

    Hi all,
    I've implemented a BPEL process consisting of multiple invoke activities to my (custom) JCA Resource Adapter which connects to an EIS.
    My concern is to support local transactions. Here are some code snippets describing what I've done so far.
    Declare the transaction support at deployment time (ra.xml)
    <transaction-support>LocalTransaction</transaction-support>Implementer class of ManagedConnection interface
    public class MyManagedConnection implements ManagedConnection {
         public XAResource getXAResource() throws ResourceException {
             throw new NotSupportedException("XA Transactions not supported");
         public LocalTransaction getLocalTransaction() throws ResourceException {
             return new MyLocalTransaction(this);
            public void sendTheEvent(int eventType, Object connectionHandle) {
                 ConnectionEvent event = new ConnectionEvent(this, eventType);
                 if (connectionHandle != null) {
                    event.setConnectionHandle(connectionHandle);
                ConnectionEventListener listener = getEventListener();
             switch (eventType) {
              case ConnectionEvent.CONNECTION_CLOSED:
                   listener.connectionClosed(event); break;
              case ConnectionEvent.LOCAL_TRANSACTION_STARTED:
                   listener.localTransactionStarted(event); break;
              case ConnectionEvent.LOCAL_TRANSACTION_COMMITTED:
                   listener.localTransactionCommitted(event); break;
              case ConnectionEvent.LOCAL_TRANSACTION_ROLLEDBACK:
                   listener.localTransactionRolledback(event); break;
              case ConnectionEvent.CONNECTION_ERROR_OCCURRED:
                   listener.connectionErrorOccurred(event); break;
              default: break;
    }Implementer class of LocalTransaction interface
    public class MyLocalTransaction implements javax.resource.spi.LocalTransaction {
         private MyManagedConnection mc = null;
         public MyLocalTransaction(MyManagedConnection mc) {
             this.mc = mc;
         @Overide
         public void begin() throws ResourceException {
             mc.sendTheEvent(ConnectionEvent.LOCAL_TRANSACTION_STARTED, mc);
         @Override
         public void commit() throws ResourceException {
             eis.commit(); //eis specific method
             mc.sendTheEvent(ConnectionEvent.LOCAL_TRANSACTION_COMMITTED, mc);
         @Override
         public void rollback() throws ResourceException {
             eis.rollback(); //eis specific method
             mc.sendTheEvent(ConnectionEvent.LOCAL_TRANSACTION_ROLLEDBACK, mc);
    }Uppon BPEL process completion, MyLocalTransaction.commit() is called. However, localTransactionCommitted(event) fails and I get the following error:
    Error committing transaction:; nested exception is: weblogic.transaction.nonxa.NonXAException: java.lang.IllegalStateException:
    [Connector:199175]This ManagedConnection is managed by container for its transactional behavior and has been enlisted to JTA transaction by container;
    application/adapter must not call the local transaction begin/commit/rollback API. Reject event LOCAL_TRANSACTION_COMMITTED from adapter.Could someone give me some directions to proceed ?
    My current installation consists of:
    1. Oracle SOA Suite / JDeveoper 11g (11.1.1.4.0),
    2. WebLogic Server 10.3.4
    Thank you for your time,
    George

    Hi Vlad, thank you again for your immediate response.
    With regards to your first comment. I already have been using logs, so I confirm that neither javax.resource.spi.LocalTransaction#begin() nor javax.resource.spi.LocalTransaction#commit()
    is called in the 2nd run.
    I think it might be helpful for our discussion if I give you the call trace for a successful (the first one) run.
    After I deploy my custom JCA Resource Adapter, I create a javax.resource.cci.ConnectionFactory through Oracle EM web application and the following methods are called:
    -- MyManagedConnectionFactory()
    (Constructor of the implementer class of the javax.resource.spi.ManagedConnectionFactory interface)
    -- javax.resource.spi.ManagedConnectionFactory#createManagedConnection(javax.security.auth.Subject, javax.resource.spi.ConnectionRequestInfo)
    -- MyManagedConnection()
    (Constructor of the implementer class of the javax.resource.spi.ManagedConnection interface)
    -- javax.resource.spi.ManagedConnection#addConnectionEventListener(javax.resource.spi.ConnectionEventListener)
    -- javax.resource.spi.ManagedConnection#getLocalTransaction()
    -- MySpiLocalTransaction(MyManagedConnection)
    (Constructor of the implementer class of the javax.resource.spi.LocalTransaction interface)
    -- javax.resource.spi.ManagedConnectionFactory#createConnectionFactory(javax.resource.spi.ConnectionManager)
    -- MyConnectionFactory(javax.resource.spi.ManagedConnectionFactory, javax.resource.spi.ConnectionManager)
    (Constructor of the implementer class of the javax.resource.cci.ConnectionFactory interface)BPEL process consists of multiple invoke activities to my (custom) JCA Resource Adapter which connects to an EIS. Client tester invokes BPEL process, and execution starts.
    Here is the method call trace for the last invoke (after which, commit is executed). The logs for all the rest invocations are identical:
    -- javax.resource.cci.ConnectionFactory#getConnection()
    -- javax.resource.spi.ManagedConnection#getConnection(javax.security.auth.Subject, javax.resource.spi.ConnectionRequestInfo)
    -- MyConnection(MyManagedConnection)
    (Constructor of the implementer class of the javax.resource.cci.Connection interface)
    -- javax.resource.cci.Connection#close()
    (I don't understand why close() is called here, any idea ?)
    -- javax.resource.cci.ConnectionFactory#getConnection()
    -- javax.resource.spi.ManagedConnection#getConnection(javax.security.auth.Subject, javax.resource.spi.ConnectionRequestInfo)
    -- MyConnection(MyManagedConnection)
    (Constructor of the implementer class of the javax.resource.cci.Connection interface)
    -- javax.resource.cci.Connection#createInteraction()
    -- MyInteraction(javax.resource.cci.Connection)
    (Constructor of the implementer class of the javax.resource.cci.Interaction interface)
    -- javax.resource.cci.Interaction#execute(javax.resource.cci.InteractionSpec, javax.resource.cci.Record, javax.resource.cci.Record)
    -- javax.resource.spi.LocalTransaction#commit()I would expect that after the last commit() - meaning that BPEL process is done, and its state is "Completed" - Weblogic server would call the following:
    javax.resource.cci.Connection#close()However it doesn't. Do I miss something ?

Maybe you are looking for