Issue Details (XML | Word | Printable)

Key: ODE-345
Type: New Feature New Feature
Status: Closed Closed
Resolution: Fixed
Priority: Major Major
Assignee: Karthick Sankarachary
Reporter: Karthick Sankarachary
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
ODE

Allow BPEL Processes To Be Provided Over JMS

Created: 23/Jul/08 12:04 AM   Updated: 13/May/09 07:09 PM
Return to search
Component/s: BPEL Runtime
Affects Version/s: 1.3.2
Fix Version/s: 1.3.2

Time Tracking:
Original Estimate: 168h
Original Estimate - 168h
Remaining Estimate: 168h
Remaining Estimate - 168h
Time Spent: Not Specified
Remaining Estimate - 168h

File Attachments:
  Size
Text File Licensed for inclusion in ASF works jms.txt 2008-08-18 11:10 PM Karthick Sankarachary 28 kB
Environment: This feature is platform-independent.
Issue Links:
Reference
 

Resolution Date: 23/Jul/08 03:46 PM


 Description  « Hide
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.

 All   Comments   Work Log   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
Karthick Sankarachary added a comment - 23/Jul/08 12:06 AM
Patch To Enable Process Provisioning Over JMS.

Matthieu Riou added a comment - 23/Jul/08 03:46 PM
Patch applied. Thanks Karthick!