OSB Business Service Work Manager Doesnt Throttle

Hi,
I have a requrirement to throlle the number of concurrent requests going to an end point.
So i have used OSB business service where in i am calling an end point webservice, and configured a work manager in console and selected it in the dispatch policy
I deployed the workmanager on managed server. i specified max concurrent threads as 3.
I tried to test it and see that throttling doesnt really work.. All the requests sent are being sent at once not 3 at a time.
The expected behavior is first 3 sdhud go and then onc ethey complete next 3 similary next 3. But i dont see that behavior. Please let me know if i am doing any worng
below is my work manager configuration
Service Type Any XML Service
Transport Configuration
Protocol http
Load Balancing Algorithm round-robin
Endpoint URI <Specified the end point URI>
Retry Count 0
Retry Iteration Interval 0
Retry Application Errors Yes
HTTP Transport Configuration
Read Timeout 0
Connection Timeout 0
HTTP Request Method POST
Authentication None
Proxy Server
Follow HTTP redirects Disabled
Use Chunked Streaming Mode Enabled
Dispatch Policy WorkManagerTest
Message Handling Configuration
XOP/MTOM Support Disabled
Page Attachments to Disk No
Result Caching Not Supported
Any suggestions on this?
Edited by: 791951 on Mar 17, 2011 7:51 AM

If you need to throttle the Business service, then you should configure the throttling parameters in the Business Service -> Operational Settings tab
Choose your Business Service in the OSB Console -> Operational Settings
Throttling -Check this box to enable the throttling. Maximum Concurrency to 3, and Throttling Queue to x number of messages you wish to hold in the throttling queue

Similar Messages

  • Oracle service bus: Work manager and Throttling

    Hi
    Flow is PS_C--->BS_A (based on PS_A)
    I created a http protocol based proxy service PS_A and a business service based on PS_A, i.e. BS_A.
    Now this BS_A is deployed on four different managed servers. I have implemented failover so at a time copy of only one of the managed severs will be accessed by multiple external clients through PS_C. To say all will hit Managed server-1 copy of BS_A. If Managed server-1 is down then it will hit Managed server-2 copies of BS_A.
    I have created a workmanager named "CustomWorkManager" which has MaxThreadConstraint=1. PS_A has not enabled CustomWorkManager. i.e. PS_A works under default policy.
    My goal is to process only one request at one time through BS_A.
    In business service, BS_A I can see work manager and throttling options.
    My question is this:
    Scenario I: I make throttling enabled and set maximum concurrency=1 for BS_A
    Scenario II: I apply CustomWorkManager to BS_A
    Scenario III: I do both Scenario I and Scenario II
    What is the difference between I, II and III?
    Fundamentally, what is the difference between throttling with maxConcurrency=1 and MaxThreadConstraint of workmanager=1 for a http business service?
    Thanks and Regards,
    Swapnil Kharwadkar

    @Abhishek: Thanks for descriptive reply.
    @Anuj: Thanks for links, I am having a look..
    Use case:
    What is the target app/service? Is it DB, HTTP or anything else?
    Back end: Amadeus web services
    Role of DB:
    1. It will store data to attach transaction context to a request. This is to call more than one services in the backend - it is necessary for backend to understand in which context services are being invoked.
    For example, if I need to make PNR related changes, I need to invoke service X and fetch transaction context from back-end. The transaction specific identifier (read session) will be received in header part. After retrieve suppose I need retrieve PNR, I will invoke service Y. When I invoke, I need to put the transaction specific header part received in response of service X and then change body as per request format of service Y (read the response header of X will be the same as request and response header of Y) which will actually make changes and commit in the backend. (So back-end will understand that service X and Y are invoked as a part of single transaction, and transaction can be identified through logs)
    3. Once my X+Y call is over and transaction is committed, the context for transaction specific part received in header to the transaction is removed from back-end. Then I can use session again for the next transaction.
    4. To re-use session I am storing it in DB and retrieving as per need for each call to Amadeus.
    Problem is, it is absolute necessary for all transactions which are being processed simultaneously, to have unique session in header.
    For example,
    I do the following:
    Request 1: receives session from service X, uses for service Y. After use, inserts session in DB. Now context for that session is removed from back-end.
    Request 2: looks for session DB, puts in header and invokes backend. Context for Request 2 is attached to session retrieved from DB.
    Request 3: looks for session DB, puts in header and invokes backend. Context for Request 3 is attached to session retrieved from DB.
    As you can see if Request 2 and Request 3, pick up the same session from DB and invoke back-end, back-end services won't be able to understand which request the session belongs to, and will fail both requests. Ideally Request 2 should retrieve it from DB use for itself and Request 3 should make a call to service X at back-end to receive context. With this new context Request 3 should proceed for transaction.
    Why are you using a BS to call from one Proxy to another Proxy?:
    1. To interact with DB, I use DBAdapter business services with QueryByExample/Update/Insert operation.
    2. My PS_A is proxy which orchestrates these operations. (Read: SelectandUpdateDBForSessionRetrieve, UpdateDBWhenTransactionOver functionaries) Since there are two admin and four managed servers, all copies of PS_A will try to access DB simultaneously, and concurrency will fail.
    3. Hence I made BS_A on the basis of PS_A. BS_A is deployed on all four managed servers, used Load Balancing Algorithm as "None" and gave hard-coded urls of four managed servers in sequence of MS1, MS2, MS3 and MS4.
    4. Idea is if MS1 is ok, all requests will go to BS_A of MS1 only, and if somehow if I make it single threaded *(Read from DB+mark retrieved data as "in use" so other request can not use it)*, concurrency issue will not arise. In case MS1 is down, the requests will automatically forwarded to MS2 and since that is also single threaded, concurrency issue won't arise. In short both fail-over and concurrency can be achieved with BS_A making out of PS_A.
    The problem as you have correctly pointed out, is that OSB is stateless and one request has no relation with another. Somehow, I need to make every retrieve/update/insert to database as single threaded, i.e. once one is done then another should not be done at the same time. Else entire point of this pooling will fail.
    Please share any thoughts you might have. Even another approach to handle this single threaded need will do.
    Thanks and Regards,
    Swapnil Kharwadkar

  • OSB business service transforming a date column 1936 to 2036 ( 1950)

    Hello, I'v a database view with a normal date column "geburtsdatum".
    Data Dictionary:
    GEBURTSDATUM DATE
    Now with JDeveloper I create a db-adapter. This works fine.
    On OSB I do generate a business service on the just created jca file. Also this works fine.
    XSD for db adapter:
    <xs:element name="geburtsdatum" type="xs:dateTime" minOccurs="0" nillable="true"/>
    I can test this business service successfully, everything is fine, but not the date interpretation when birtdate <1950
    Sample geburtsdatum (birtdate): 29-JUL-1934
    DATABASE: 29.07.1934
    OSB Business Service: 29.07.2034
    Why or where happends this date conversion?
    This is very strange, anyone had the same problem?
    Any help would be appreciated.
    Thanks
    Best regards,
    Reto

    After all I found the solution. Again the problem has been caused on DB side.
    I'm using a view. On this view I had a DATE column with a decode. I think I did a clean TO_DATE casting, but it seems as the OSB DB Adapter did not interpret this correctly.
    (on database side with SQL I did not have any problems here)
    My solution was:
    Using a date returning function (which does my decoding) in my view :
    CREATE VIEW xyz AS
    SELECT ...
    , myPackage.removeMaxDate(n.geburtsdatum) as geburtsdatum
    FROM ...
    Regards,
    Reto

  • JSSE causes OSB business services to receive Socket Closed

    Using WL 10.3.3 & OSB 11gR1 on jrockit 1.6.0_45  Redhat:
    After enabling the "Use JSSE SSL" option in the managed servers's SSL tab ( because web service clients want to use SHA256 certificates ), OSB business services ( outbound to service providers ) fail with
    Exception - Body: <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
    <soap-env:Fault xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
    <faultcode>BEA-380000</faultcode>
    <faultstring>General runtime error: socket closed</faultstring>
    After a lot of debugging, I've found that the Connection Timeout option within the OSB HTTP transport is involved.
    OSB business services which use https AND have a non-zero value for HTTP transport's Connection timeout cause the Socket Closed error.
    Business services which do not use HTTPS or do not have a Connection Timeout do not receive the error.
    While setting the Connection Timeout to 0 allows the transaction to succeed, that leaves the OSB server vulnerable when the service provider host is not available.
    So I've reset the Connection Timeout values to 0, and added this JVM parameter to each OSB managed server
    -Dweblogic.http.client.defaultConnectTimeout=5000

    There are few BUGs reported for similar issues.
    OSB Server Showing "java.io.IOException: SSLEngine is closed" When Attempting to Connect to an External Web Service Using Two-Way SSL (Doc ID 1465618.1)

  • OSB business service and NTLM authentication

    Hi,
    Is there a solution to use OSB business service with http transport and this bs authenticates itself with NTLM
    thanks Edwin

    Hi Manoj,
    We want to connect our production esb to the ERP ( IFS) system and we want to do this with the OSB. The ERP system has a lot http services and they are all running on jboss. On this app server they have enabled ntlm so users can their account to fill in there project hours /administration.
    I got this working with a authenticator in a jdeveloper 11g web service proxy client. ( http://biemond.blogspot.com/2009/04/jax-ws-web-service-proxy-client-and.html )
    thanks Edwin

  • How to Define MQ message expire time in OSB Business service.

    Hi,
    Please let me know the option in OSB business service to set the expiration time for MQ messages. Is it possible?
    Thanks,
    karthik.

    http://download.oracle.com/docs/cd/E13159_01/osb/docs10gr3/mqtransport/transport.html
    transport header "Expiry"
    i hope it works :o)

  • Using UDDI key in OSB business service

    Hi All,
    I want to know how to invoke a service published in Oracle service registry through dynamic lookup in OSB. I tried importing service published in OSR as a OSB business service through sb console. In that the business created had the actual service end point reference rather than the UDDI service key. Hence the changes done to the service endpoint in OSR wont get automatically propagated to the osb business service as there is no actual dynamic look up.

    You will need to setup the Target system's server certificate as trusted in Weblogic's keystore or the Root CA certificate which certified target system's server certificate as trusted CA in weblogic.
    Check this thread for more details:
    Callling an external service through HTTPS

  • OSB Business Service jms target

    Dear all,
    I have a business service in OSB, accepting messages, and putting them in a jms queue in j2ee.
    My question is, if it is possible somehow to declare as Endpoint URI the cluster address, so that the messages are balanced between the jms servers deployed in each j2ee managed server. If I set the cluster address, which is the comma separated addresses of the members, the messages all end up to the jms server of the first address declared in the endpoint URI.
    The JMS connection factory accepting the messages from OSB has default targeting and is targeted to the J2EE cluster.
    The endpoint URI of the business service when set to the cluster address looks like so:
    jms://172.16.217.134:7701,172.16.217.135:7701/myJMSConnectionFactory/MyJMSQueue
    We also use an external load balancer IP, which does not work as expected. At times messages are processed only by one consumer and at times the balancing works properly. This is why we are looking for alternatives.
    Environment is 10.3.6. OSB and J2EE cluster have two managed servers each.
    Thank you
    Edited by: 926252 on Dec 5, 2012 4:24 AM

    Suppose if the source or the endsystem is in maintenance and is not availabel for the whole day.Now a days, it should be really a very rare scenario where a system goes down for an entire day for maintenance. 2-3 hours maintenance window is normal. If in your case, long maintenance windows are normal and frequent then I would suggest to change the design. Instead of polling remote system, let remote system push the files to OSB server (may be on JMS or any other persistent destination) and then even if remote system goes down it won't affect OSB.
    As far enabling and disabling proxy services are concerned, you may handle it through scripts or java API's -
    https://blogs.oracle.com/ateamsoab2b/entry/automatic_disabling_proxy_service_when
    http://orasoa.blogspot.in/2011/05/disable-and-enable-osb-proxy-services.html
    still no other choice?If most of the maintenance windows are scheduled then it is easy to handle the scenario with manual enable/disable of proxy services, but if mostly it is unscheduled then changing the solution design seems better option.
    Regards,
    Anuj

  • WCF and OSB business service

    OSB 10g
    Hi
    Has anyone managed to successfully connect to a Windows Communication Foundation (WCF) Web service endpoint. I created a business service to
    connect to the web service but the connection times out after a pre-defined period of time. I can successfully connect to the WCF web service if I
    create a .NET client proxy application.
    thanks
    Damien

    Hi Manoj,
    We want to connect our production esb to the ERP ( IFS) system and we want to do this with the OSB. The ERP system has a lot http services and they are all running on jboss. On this app server they have enabled ntlm so users can their account to fill in there project hours /administration.
    I got this working with a authenticator in a jdeveloper 11g web service proxy client. ( http://biemond.blogspot.com/2009/04/jax-ws-web-service-proxy-client-and.html )
    thanks Edwin

  • OSB - Business Service Import Problem

    Hi,
    When I import my OSB project (from an Oracle Service Bus Configuration .jar) for the first time, it imports my business service perfectly. However, in the second half when the project already exists on the workspace, new tags are added to the xml even though I have not made any changes in the business service.
    Thats my problem:
    First Import:
    <ser:coreEntry isProxy="false" isEnabled="true">
    After Second Import:
    <ser:coreEntry isProxy="false" isEnabled="true" isTracingEnabled="false">
    and a few other tags are added to the file:
    <ser:throttling enabled="false">
    <ser:capacity>0</ser:capacity>
    <ser:maxQueueLength>0</ser:maxQueueLength>
    <ser:timeToLive>0</ser:timeToLive>
    </ser:throttling>
    <tran:delay-interval-configuration isEnabled="false">
    <tran:delay-interval>0</tran:delay-interval>
    </tran:delay-interval-configuration>
    Any help on how to import the project without these new tags in my business service will be very welcome.
    Regards,
    Ricardo Azevedo

    you can influence the amount of info actually imported choosing to override operational settings, environment setting etc (I can't remember by heart and I am too lazy to start my server now and verify)
    Anyway unless this impacts your operations I would not be too worried that some defaults are explicitly stated in the xml. Surely if you import in Production a BS with "message tracing" on, this can affect seriously your performance.

  • OSB business service on jdev 11g generated db adapter

    Is it still possible to generate the db-adapter in jdev and import the resources in osb and create a business service with jca transport based on this wsdl?
    the documentation is only describing how to it should work based on a 10.1.3 generated db adapter.
    In the 11g the resources of the db-adapter are different (external jca property file etc).
    So..whats the way to go for this when using the 11g stack ?

    So..whats the way to go for this when using the 11g stack ?Current version of OSB (OSB 10.3.1) does not support 11g adapter stack. The next release of OSB will support 11g Adapters.
    Manoj

  • How to get specific OSB business service HTTP endpoint failover?

    I am trying to get the following behavior in an HTTP Business Service in OSB, and I'm not finding the answer (if it exists) in the docs.
    I have two backend endpoints, "production" and "backup." I want all request to go to the "production" endpoint unless it becomes unavailable. At which time all requests should go to the backup endpoint - without manual intervention. Automatic failback would be nice but not absolutely necessary. This is what the service provider is recommending for their operational concerns.
    Is there some way to accomplish this?
    The backup is available at most times, so we can't use round-robin load balancing to get this behavior.
    Is this what having a load balancing algorithm of "none" accomplishes? The docs state the order in this case is significant, but not why?
    Random-weighted does not work, as it does not allow a zero weight, which means some requests (even if small in proportion) may go to that backup even if the primary is available.

    I'm now seeing this in real operation, and I'm seeing something that puzzles me based on the discussion above, and also a behavior I'd like to change if I can.....
    First, the puzzlement - of about 6700 invocations over the space of a few hours, I see in the console 9 errors in the primary as configured above, and 9 messages handled successfully by the secondary. So, since the messages are coming on a fairly regular basis (a few per minute, spread over 3 OSB instances), and I have a 10 min retry interval, I would have expected to see a lot more messages handled by the secondary endpoint while OSB instance was waiting 10 min to retry the primary. What's going on here? Does this class of "failure" not take an endpoint "offline?"
    Second, behavior I want to change: the errors are apparently intermittent SSL HANDSHAKE_FAILUREs reported by the backend. Is there anyway to get the primary retried first, since we only want traffic to go to the backup if the primary is really offline?
    /Steve Elkind
    ####<Dec 22, 2009 10:45:14 PM EST> <Warning> <Security> <njxymh0099> <SS_ESB_mgd2> <[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'> <<anonymous>> <> <> <1261539914730> <BEA-090497> <HANDSHAKE_FAILURE alert received from fobar-web02.inex.com - 207.235.231.231. Check both sides of the SSL configuration for mismatches in supported ciphers, supported protocol versions, trusted CAs, and hostname verification settings.>

  • OSB Business service not returning error payload

    Hello,
    I have some RESTful services in the OSB 10.3. On an HTTP error, the business service reads the error code (for example http error code 500) and it returns it to the proxy service. But the message of the error seems not to be read at all. How can I do that?
    Thanks!

    I don't get any error message. I'l rephrase:
    I work with REST (Any XML service). My BusinessService calls an external RESTful webservice, and this external webservice returns an HTTP packet like this (more or less):
    PACKET BEGIN:
    HTTP/1.1 500 Internal Server Error
    Date: Wed, 29 Sep 2010 13:37:50 GMT
    Content-Length: 0
    Content-Type: text/xml; charset=UTF-8
    <?xml version="1.0" encoding="UTF-8"?><Error><Message>There was a blablabla error on our side. Sorry.</Message></Error>
    PACKET END.
    I am able to propagate such an HTTP error code by using an insert in the ErrorHandler, but I am not able to propagate the XML message that is being returned to me. It is not found anywhere, I checked all he variables $body, $fault, etc.
    Does the OSB BusinessService read this payload at all or should I implement a custom callout procedure because of this?
    Edited by: user4507278 on Sep 30, 2010 5:35 AM

  • Issue on OSB business service configuration with email transport

    Hi,
    I am trying to create a Business Service with email Transport configuration. While creation, I have selected ServiceType as MessagingService.Then in Message Type Configuration page have selected Request Message Type as Text and Response Message Type as None. Now in Transport Configuration page email option is not showing in protocol.It's only showing http , jms option there.
    While I tried the same in some other OSB installation environment I am able to find email option in Protocol.
    Any  idea what could be potential reason of it.How can I able to see email option in Protocol ?
    Regards,
    Subhra

    Hi,
    Please check the state of Email Transport Provider in the admin console it should be in the active state , and also Go to JMS Module --> jms resources and check dist_wlsb.internal.transport.task.queue.email_auto.
    its heath and assosiated member will be working fine.
    Regards
    Bharat

  • Issue while attaching OWSM policy to OSB Business Service

    How to configure OWSM policy to NON WSDL based Business service.
    We are not able to encrypt the data for NON WSDL based Business service.
    Please help.
    Thanks,
    Mihir

    I presume you already did a fresh restart of the managed servers?Yeap, I've restarted the OSB server.
    Looking at the logs I can find this message:
    +####<Jul 27, 2011 1:25:52 PM CEST> <Info> <Common> <mydomain.com> <osb_server1> <[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'> <<anonymous>> <> <0000J5fLsXLFw0WFLzNM8A1EBzMW000001> <1311765952760> <BEA-000628> <Created "1" resources for pool "mds-owsm", out of which "1" are available and "0" are unavailable.>+
    So I understand that the pool is created correctly, isn't it?

Maybe you are looking for

  • Printer Setup for HTML reports (Landscape)

    I'm trying to print an HTML report in Landscape, the Report Orientation VI only works with Standard Reports, and I can't find anything that will let me modify the "Printer Setup" Anyone done this?

  • Multiple Apple Id's on Supervised ipads

    I've prepared (using Apple Configurator) our school ipads and now want to give a group to our preschool teachers.  I've created an apple id on the computer that is the school Apple ID and I've loaded a bunch of free apps onto the pads (still need to

  • The location not appears in the wsdl

    Hi everyone, I've a problem with a zwebservice, this zwebservice is created by means of BAPI in R3 to be used from webdynpro in java. When I try to check the webservice in the WSNavigator shows me the following error "The Endpoint URL is not valid",

  • No SMS send or receive ability after updating 3GS to ios5

    Synced up my husband's iPhone 3Gs this past Sunday night for the first time ever to update it from ios 4.1 to ios 5.  Since then, he has been unable to send or receive ANY text messages.  I tried a backup and restore last night and was able to get ON

  • Problem shifting (copying) array elements in a list

    I am trying to add points to the beginning of a list. However, I cannot seem to debug the insertBeginning( ) method. I am faced with a problem that overwrites certain array elements. If I can get any help I would greatly appreciate it. Thanks, I have