Allow BPEL Processes To Be Provided Over JMS
--------------------------------------------

                 Key: ODE-345
                 URL: https://issues.apache.org/jira/browse/ODE-345
             Project: ODE
          Issue Type: New Feature
          Components: BPEL Runtime
    Affects Versions: 1.3
         Environment: This feature is platform-independent.
            Reporter: Karthick Sankarachary
             Fix For: 1.3


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.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to