4 Replies Latest reply: Jul 10, 2012 9:49 AM by Gerhard Drasch (Oracle) RSS

    SOA Server Downtime and Composite Dependency

      We have an integration between two EBiz systems. We have a typical sequence of composites where a transport adapter will dequeue a message then it will call a requestor ABCS which will call an EBS, etc.
      We are in the testing stage and we are doing tests where we switch off the SOA layer and at a later stage switch it on again. While it is off the number of records in our wf_bpel_qtab with a ready state increases. When we start the SOA server the integration should come up and start processing these messages.
      At the start a few of the messages will error.
      When the SOA server starts it will load and start running each composite in a random order. However if the requestor transport loads and starts running before the ABCS is loaded and running it will immediately error when it tries to call the ABCS.
      How does everyone deal with this situation?
        • 1. Re: SOA Server Downtime and Composite Dependency
          Ziaur Rahuman
          Hi Robert,

          I'm not having solution, but having suggestion. To solve this problem you can start the applications one by one. For example start the ApplicationServer first then BPEL Engine and then EBS. You need to start your dequeing application at last. By doing this all your applications will be ready to serve before consuming the message.

          Second suggestion is to disable dequeue message from the queue. AQ provides option to disable dequeing the message(may be other queuing technology might have similar settings), temporarily set the property to disable dequeue. Once all the applications are up then enable the dequeue property.

          • 2. Re: SOA Server Downtime and Composite Dependency
            Gerhard Drasch (Oracle)
            A slightly different approach would be to disable the relevant consumer SOA composites before you shut down the SOA server and re-start them after the SOA server is fully initialised after a startup. This can be scripted using WLST, see e.g. http://docs.oracle.com/cd/E15586_01/web.1111/e13813/custom_soa.htm#CIHJIDEA . The advantage of this approach would be to avoid exceptions due to disabled AQs that you would see otherwise in the SOA logs. Furthermore, I would prefer to deal with this on the application server level rather than in the database.

            • 3. Re: SOA Server Downtime and Composite Dependency
              Neeraj Sehgal
              Hi Gerhard,

              But what if the server crashes and is required to be restarted manually.

              - Will it be able to Shut down the composites while server being in the shutdown state/before restart? The documentation says that command can be run offiline but not sure if it will actually shut the composite state failing which composites will start in random order.
              - As the development progresses, more and more composite names will get appended to the script to manage them. Would it be good idea then considering the maintenance of the startWeblogic script with a boundary between DBAs who start the servers and Developers who develop the composites ?

              Neeraj Sehgal
              • 4. Re: SOA Server Downtime and Composite Dependency
                Gerhard Drasch (Oracle)
                Valid concerns. I am pretty sure the WLST script would not work offlne.

                In the case of a crash I would assume there is one or several other nodes in the same cluster continuing the business. In a non-clustered environment it would be indeed the case that the composite couldn't be stopped ahead of the server start. Disabling the queue would still work in that (corner) case.

                On the operational aspect I am not sure this would be a problem. The development team would have to share such operational details along with their code anyway, but that does not necessarily mean that they take ownership of any infrastructure start/stop scripts.