XML & Web services: C++ access JMS Messages
- Posted by: suhas shahapurkar
- Posted on: September 08 2004 09:53 EDT
Can any body tell me .. if I can access the JMS messages using the Web Services.
- Could you be a bit more specific by Max Kington on September 10 2004 11:02 EDT
Web Service access is not a standard mandated piece of functionality of JMS 1.1. Alot of messaging vendors have connection libraries for other languages like C++/C#/Perl, who is your messaging vendor? You could always write a daemon that provided you with that sort of access.
ActiveMQ (activemq.codehaus.org) has an http (REST) based api for accessing the broker which is worth exploring if you haven't yet selected a messaging vendor.
Thanks for the reply!!
I have some messages in my Weblogic JMS server. I want to access those Messages from the C++ code.
The first thing came in my mind is Web Services. I am thinking to publish MDB to Web services and then access that Web services from C++ code.
But i do not know how to access the Weblogic Web Services from the C++ code.
Am I thinking in right direction?
Ok, you have a few options,
Firstly, I'd make a judgement call, do you invisage sticking with Weblogic JMS? If you do, then just write a native client using the C API (http://dev2dev.bea.com/resourcelibrary/utilitiestools/environment.jsp#jmscapi). In my experience your JMS provider is the most often changed component as your messaging needs tend to evolve, typically you'll use one provider to prototype, then you'll elect for something cheap in production initially and then step upto a more scaleable or clusterable solution as your message load warrents.
Secondly, if your messages are received into an MDB, where are you going to store the data until the WebService request is made to retrieve your data? What happens when your server fails, remember that once your MDB finishs executing any transaction will get comitted with the message no longer on the queue. What I'd be
inclined to do to make the most portable solution is to create a service in your C++ application and call it from your bean whenever your receive a message. See (http://ws.apache.org/axis/cpp/index.html).
If your C++ application is a client application and may be one of many or have no fixed location then I'd just create a service in WebLogic which in turns receieves messages from your queue but only when the service is invoked, not via an MDB which is driven by the message arriving.
Answer your question(s)?
Thanks for the reply..
Suppose I create a web services in the Weblogic that captures the messages from my queue, then how my C++ Client will access those messages.
I have read the Axis docs. THere they have given the example on the Apache Server. I have not found any on Weblogic 7.0
(http://dev2dev.bea.com/resourcelibrary/utilitiestools/environment.jsp#jmscapi)is indeed a use full link.
Thank you for your support