Uploaded image for project: 'ODE'
  1. ODE
  2. ODE-345

Allow BPEL Processes To Be Provided Over JMS

    XMLWordPrintableJSON

Details

    • New Feature
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 1.3.2
    • 1.3.2
    • BPEL Runtime
    • None
    • This feature is platform-independent.

    Description

      In general, the requirements as follows:

      a) Allow two or more processes to provide the same service over (the same) JMS Queue endpoint.
      b) Allow two or more processes to provide the same port type (but different service) over (the same) JMS Queue endpoint.
      c) Allow two or more processes to provide the same service over (the same) JMS Topic endpoint.
      d) Allow two or more processes to provide the same port type (but different service) over (the same) JMS Topic endpoint.
      e) Allow a process to invoke a service (or process) over a JMS endpoint.

      We work with the following assumptions:
      a) Operations provided over JMS Topics must be one-way (to avoid multiple responses per request)
      b) Operations provided over JMS queues may be either one-way or two-way.
      c) As per Axis2 protocol, non-durable or non-existent destination names will be qualified with either dynamicQueues or dynamicTopics.

      The limitations in the existing code base are:
      a) The name that we assign to axis services is derived from the soap:location endpoint, which is assumed to follow an HTTP scheme.
      b) It is not possible to have two processes provide the same service, as that leads to naming conflicts.
      c) By default, the JMS transport is not enabled in Axis2.

      The proposed (verified) solution is:
      a) For testing purposes, enable the JMS transport in axis2.xml. Note that by default, this will be not be turned on. The configuration of JMS in Axis2, and setup of the JMS broker is left as an exercise for the user/developer.
      b) Derive service names from jms endpoints, without making the assumptions made for HTTP endpoints. Further, qualify the JMS endpoint with the bundle, diagram and process name, so as to make it unique (this is necessary to avoid the naming conflict). To be precise, the JMS URI template is as follows:
      ${deploy_serverUrl}${deploy_baseSoapServicesUrl}/${deploy_bundleNcName}/${diagram_relativeURL}/${processLocalName}/${jmsDestinationName}
      c) Extract the jms destination name from the service name, and set it as the value of the JMSConstants.DEST_PARAM of the axis service (this is required so that the JMS Connection Factory creates the right destination for that endpoint)
      d) Store the axis service in ODEServer against the unique name as was derived above. Use that name while destroying that service as well.
      e) As far as requirement (e), I believe this works out of the box.
      f) As far as assumption (a), I believe this constraint should be enforced by the modeler. Also, the modeler should enforce assumption (c) for proper provisioning of processes over JMS.

      Attachments

        1. jms.txt
          28 kB
          Karthick Sankarachary

        Issue Links

          Activity

            People

              karthick Karthick Sankarachary
              karthick Karthick Sankarachary
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - 168h
                  168h
                  Remaining:
                  Remaining Estimate - 168h
                  168h
                  Logged:
                  Time Spent - Not Specified
                  Not Specified