OSB Business Service Retries for Read Timeout

Hi,
Is it possible to have retries configurable for Read Time out in Business Services in OSB ?
What is the best practice alternative if we need to retry on a read time out with the same request ?

You can configure your business service to retry.On the transport configuration tab of the business service configure the following:-
Retry Count
Retry Iteration Interval
http://docs.oracle.com/cd/E14571_01/doc.1111/e15867/business_services.htm#i1096469

Similar Messages

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

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

  • How to set username/password in OSB Business Service

    Hi
    I need to call thirt party http service that utilizes Http Basic authentication i.e. username / password. If I call the same service through Oracle SOA I can either
    put the username/password inside composite.xml but that way the password is visible. So have set the usrname/password insid the console.
    Now want to use OSB to call the sam service. Created business service but where do I add the username/password. Is there a plac inside sbconsole I can set the username password.
    Thanks

    You must a "Service Account" available in OSB and assosciate it with the Business service you invoke.

  • 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

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

  • OSB Business Service is not timing out on Connection/Read timeout

    I have a weird problem with my business service in OSB. I have set the read timeout value as 1 sec and Connection timeout value as 1 sec. The response from backend is taking more than 2 seconds or even 3 seconds but still my business service is not timing out..! My service is still listening to the response from backend even if it comes after 3 seconds. I expect it to timeout after 2 seconds. Any ideas?
    Business Service Configurations:
    Service Type: Any type
    Protocol: http
    Retry count : 0
    Retry Application Errors: No
    Read Timeout: 0
    Connection Timeout: 0
    HTTP Request Method: POST
    Result Caching: No
    Let me know if you need any more information. Thanks in Advance.
    Regards
    Kaleem

    AbhishekJ wrote:
    Maximum possible successful response time of the service will be less than Read TO + Connection TO.
    Alas, this is not true.
    Maximum possible response time is infinity.
    There are two reasons for that.
    1. Read timeout is not counted as time from the successful connection establishing to the current moment. It is measured as time from the last received byte to now. Imagine a backend service that sends a single byte in a data packet every 500ms. Despite you have read timeout set to 1, the receiving of 3K message will take 25 minutes, and yet your Biz service will not timeout.
    2. In HTTPS, handshake is handled by a separate library which has its own quirks. Specifically, if the key exchange is broken at particular point of handshake, the library re-establishes the connection and does it few times; in my experiements, the largest I could delay the eventual fault was about 3 minutes.
    Having said that, in the OP message the configuration is Read=0, Connect=0, so I wonder why the timeout is expected.

  • OSB: Business Service Timeout for JCA Connection

    Hi,
    I am wondering if there's any way to configure timeout for a JCA connection in OSB? It's not configurable in Business Service.
    Thanks.

    Hi Anuj,
    I am using DbAdapter. As for operation, which operation are you referring to? Where do I check to verify this?
    Thanks.
    Edited by: user13298498 on May 21, 2012 11:01 PM

  • OSB:Publish to business service with for each in osb proxy message flow

    Hi,
    I have an external application that will make a call to my web-service and post a message to my queue "A" and i need to model my osb component such that it picks the message from that queue " A"and posts it to another queue "B". All this is done without any BPEL involved.
    for publishing the message i have created a business service that publishes a msg to the queue A and my proxy service is modelled such that it subscribes to this same queue A and publishes the msg to another business service (that posts it to a queue B).
    Everything is working fine but i have an issue in modelling my proxy message flow. If an external application sends a bulk msg i need to post the message one by one to my queue B. I have used for-each and Publish to BS but the msg doesn't get posted one by one. i know i am missing something please help me out.
    SOA Suite Version - 11.1.1.3

    Are you sure that your for-each definition is correct? Does the flow within the for-each get executed multiple times?
    You can check this by logging the variable to which you assign the message in the for-each. Don't forget to put the log level to Error, so you're sure that it's logged.
    Let's say you get a list of persons like the following xml in a variable personList
    <Persons>
    <Person>Glenn</Person>
    <Person>Prasanth</Person>
    </Persons>
    Your for-each definition should be the following.
    For each variable: person
    XPath: +./Person+
    In Variable: personList
    You don't mention the Persons element in the XPath expression since it is the root element of the XML. The root element is represented by . (dot).
    In the for-each, the variable person can be used like any other variable.

  • Different number of Business service endpoint for prod/non prod env in OSB

    Hi,
    I have a scenario in my project. We have 2 managed servers in all non production environment and 4 servers in production environment.
    In non production environments, have added 2 end point uri in the business service. If we create customization file from this, it will have only 2 endpoint uri details.
    Now problem is how to get all 4 enpoint uri added for production environment. Dont know how if we try to add 2 uris in customization file will work fine or not. Also it will be very cumbersome as there are more than 100 business services.
    Tried with comma seperated urls, but load balancing is not happening. Same thing when cluster address is used.
    Any pointers on this will be helpful.
    Regards,
    Pravin
    Edited by: pravinkapile on Sep 29, 2009 9:39 PM

    Hi..
    There's several ways to do it.. What I prefer to do is to generate the customization files and have a seperate set for each environment. As you say hand modifying the customization files is a pain (and error prone), so I wrote a program to generate the customization files.. basically it runs against my local dev environment, creates an edit session, modifies the env values (these are held in a properties file (easier to maintain)), exports the customization files and sbconfig jars, then discards the edit session.
    I then use a wlst/jmx script to perform the imports and running the customization files, then after the customization is ran, then I have a section that modifies the business service with multiple endpoints to set them up to load balance/failover..
    this is the function in my utils script to set the load balancing/failover....
    #=======================================================================================
    # Routine to modify all Business Endpoints with multiple URI's to set the Loadbalancing
    # algorithm to Round-Robin -
    #   Input must be an editable instance of an ALSBConfigurationMBean.
    #=======================================================================================
    def configureMultipleBSEndpoints(domainService, alsbSession):
      try:
        # get the Service config MBean
        servConfMBean = getServiceConfigurationMBean(domainService, alsbSession.getSession())
        bsQuery = BusinessServiceQuery()
        bsRefs = alsbSession.getRefs(bsQuery)
        changesToCommit = cju.parseBoolString("false")
        for bsRef in bsRefs:
          modificationsMade = cju.parseBoolString("false")
          serviceDefinition = servConfMBean.getServiceDefinition(bsRef)
          endPointConfig = servConfMBean.getEndPointConfiguration(bsRef)
          if endPointConfig.getURIArray().__len__() > 1:       
            outBoundProps = endPointConfig.getOutboundProperties()
            if outBoundProps.getLoadBalancingAlgorithm() == LoadBalancingAlgorithmEnum.NONE:
              outBoundProps.setLoadBalancingAlgorithm(LoadBalancingAlgorithmEnum.ROUND_ROBIN)
              modificationsMade = cju.parseBoolString("true")
            if outBoundProps.getRetryApplicationErrors():
              outBoundProps.setRetryApplicationErrors(cju.parseBoolString("false"))
              modificationsMade = cju.parseBoolString("true")
            retryCount = endPointConfig.getURIArray().__len__() - 1
            if outBoundProps.getRetryCount() != retryCount:
              outBoundProps.setRetryCount(retryCount)
              modificationsMade = cju.parseBoolString("true")
            if outBoundProps.getRetryInterval() != 2:
              outBoundProps.setRetryInterval(2)
              modificationsMade = cju.parseBoolString("true")
            serviceOpsEntry = servConfMBean.getServiceOperations(bsRef)
            if cju.booleanToString(serviceOpsEntry.isTakingURIOfflineEnabled()) == "false":
              serviceOpsEntry.setTakingURIOfflineEnabled(cju.parseBoolString("true"))
              serviceOpsEntry.setDelayInterval(15);
              modificationsMade = cju.parseBoolString("true")
            if modificationsMade:
              print 'endpoint configuration modifications made to - ' + bsRef.getFullName()
              hmServiceOpEntries = HashMap()
              hmServiceOpEntries.put(bsRef, serviceOpsEntry)
              endPointConfig.setOutboundProperties(outBoundProps)
              serviceDefinition.setEndpointConfig(endPointConfig)
              servConfMBean.updateService(bsRef, serviceDefinition)
              servConfMBean.updateServiceOperations(hmServiceOpEntries)
              changesToCommit = cju.parseBoolString("true")
        return changesToCommit
      except:
        print "Unexpected error:", sys.exc_info()
        print 'Failed to Configure Business Service Multiple Endpoints LoadBalancing Algorithm '
        raise..Mark.

  • Business Service Issue for OSB 10.3.1 when call web service of SAP ECC 710

    Hello,
    1 . I was doing unit test for a business service which called a web service from SAP ECC 710 (This service is published directly from a RFC function module via SOA Manager);
    2 .The problem is when i use the OSB test console , which generate request message below:
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    *<soap:Header xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">*
    *</soap:Header>*
    <soapenv:Body>
    <urn:Zmmjf503 xmlns:urn="urn:sap-com:document:sap:soap:functions:mc-style">
    <ContractInfo>string</ContractInfo>
    </urn:Zmmjf503>
    </soapenv:Body>
    </soapenv:Envelope>
    the response message is :
    <soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
    <soap-env:Header>
    <n0:MessageID xmlns:n0="http://schemas.xmlsoap.org/ws/2004/08/addressing">
    uuid:4cbe5b84-474c-9abe-e100-00000ad00164
    </n0:MessageID>
    <n1:Action soap-env:mustUnderstand="1" xmlns:n1="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope"/>
    </soap-env:Header>
    <soap-env:Body/>
    </soap-env:Envelope>
    Above response indicates that the BS called the SAP Web server successfully , but seems the service didn't get the request message.
    3. The Web service can be called successfully via SoapUI . and i have checked the request message of soapUI; and it can work if i simply modify the request:
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    *<soap:Header xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"></soap:Header>*
    <soapenv:Body>
    <urn:Zmmjf503 xmlns:urn="urn:sap-com:document:sap:soap:functions:mc-style">
    <ContractInfo>string</ContractInfo>
    </urn:Zmmjf503>
    </soapenv:Body>
    </soapenv:Envelope>
    and i got the correct response :
    <soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
    <soap-env:Header/>
    <soap-env:Body>
    <n0:Zmmjf503Response xmlns:n0="urn:sap-com:document:sap:soap:functions:mc-style">
    <Recmsg><![CDATA[<?xml version="1.0" encoding="utf-8"?><DocumentResponse><STATE>0</STATE><HTBH></HTBH><MESSAGE></MESSAGE></DocumentResponse>]]></Recmsg>
    </n0:Zmmjf503Response>
    </soap-env:Body>
    </soap-env:Envelope>
    4 It bother me , as the only difference between the above two request messages is the Header(the first one contains a "carriage returns"):
    *<soap:Header xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">*
    *</soap:Header>*
    VS
    *<soap:Header xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"></soap:Header>*
    5 i thought that the soap engine should ignore the "carriage returns", seems it's a problem of SAP ECC710.
    DID anyone encouter this problem?? Thanks
    Regards
    Wen

    Thanks,Patrick,
    i have already removed the Soap:header, and it worked as well. what's more , using header " <soapenv:Header/>" worked.
    And i got these request messages via TCPMON, so it's exactly what were sent to SAP ECC710.
    The HTTP request which cannot work:
    POST /sap/bc/srt/rfc/sap/zmmjf_503/400/zmmjf_503_service/zmmjf_503_soapbinding HTTP/1.1
    Content-Type: text/xml; charset=utf-8
    Authorization: Basic enpoZmhlOnBhc3N3b3Jk
    SOAPAction: ""
    Transfer-Encoding: chunked
    User-Agent: Java1.6.0_05
    Host: 10.208.1.100:8000
    Accept: text/html, image/gif, image/jpeg, */*; q=.2
    Connection: Keep-Alive
    017a
    <?xml version="1.0" encoding="UTF-8"?>
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soap:Header xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    </soap:Header><soapenv:Body><urn:Zmmjf503 xmlns:urn="urn:sap-com:document:sap:soap:functions:mc-style">
    <ContractInfo>string</ContractInfo>
    </urn:Zmmjf503></soapenv:Body></soapenv:Envelope>
    0000
    THE HTTP request which can work:
    POST /sap/bc/srt/rfc/sap/zmmjf_503/400/zmmjf_503_service/zmmjf_503_soapbinding HTTP/1.1
    Content-Type: text/xml; charset=utf-8
    Authorization: Basic enpoZmhlOnBhc3N3b3Jk
    SOAPAction: ""
    Transfer-Encoding: chunked
    User-Agent: Java1.6.0_05
    Host: 10.208.1.100:8000
    Accept: text/html, image/gif, image/jpeg, */*; q=.2
    Connection: Keep-Alive
    016c
    <?xml version="1.0" encoding="UTF-8"?>
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soap:Header xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"/><soapenv:Body><urn:Zmmjf503 xmlns:urn="urn:sap-com:document:sap:soap:functions:mc-style">
    <ContractInfo>string</ContractInfo>
    </urn:Zmmjf503></soapenv:Body></soapenv:Envelope>
    0000
    Thing is that if i just use
    <soap:Header xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"></soap:Header>
    to replace (which means i just simply remove the carriage return)
    <soap:Header xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    </soap:Header>
    in the header field of OSB Test console, it can work!!!
    It's really a weird issue. and it bothers me so much ;)
    any suggestions?
    Regards
    Wen

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

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

Maybe you are looking for