views:

151

answers:

1

I am writing an interface for our VXML application that will allow access to a SOAP service. Because of the difficulties inherent in trying to use javascript to make SOAP calls and the limitations of VXML, as in making external resource calls are pretty much limited to HTTP requests, GET and POST.

I designed a java servlet that would act as a service provider to the VXML application. It can call this servlet with arguments indicating the web service type, the method name to invoke and the arguments to pass to it. The servlet then makes the appropriate web service call and returns the response in a standardized VXML document response.

The issue is I severely underestimated how difficult SOAP really is. I thought I could just simply construct the soap call and do it in java, however its looking to me like this is something a little more involved, requiring things like Apache Axis2.

I read somewhere that listeners for Axis could be HTTP servlets, which sounds a lot like what I am doing already. Am I re-inventing the wheel here? Is there any suggestion out there for me as to how to do this better? I am pretty invested in the way im doing it now and so would be very receptive to an easy way to accomplish the SOAP call and process the response from a java/jsp servlet.

EDIT - After taking the advice here I've delved a little further into Axis. As it turns out, Axis2 is Apache's third generation of 'ApacheSOAP'. Whats unfortunate about this is that after extensive searching I cannot find a single solitary place where the original Apache SOAP implementation can be downloaded. I might not care if A) Axis would allow me to integrate a few jars and jsp files rolled into a standalone war app or B) everything .. i mean everything up to this point has been done using examples from ApacheSOAP (the book i was using, the code i've written thus far .. everything).

So I google some more thinking .. hey, there has to be some kind of stand alone library for Java that would just simply allow me to make a single solitary simple SOAP call and parse the results. But no, no such luck. Apparently if you want to use Java and SOAP you have either the gigantic incomprehensibly thick and complicated axis or .. you roll your own soap implementation from the ground up. I am so burned on this. I dont get why soap is so wonderful given the last 7 13 hour days ive spent just trying to get a simple hello world request to work from JSP.

+1  A: 

A library like Axis is definitely the solution, you do not want to attempt to build/parse SOAP messages on your own.

Look at using wsdl2java (another link, and another) to create client proxies for which you can invoke the web services. This will generate a bunch of Java code which you can call into from your code, and then Axis will handle packaging your arguments into XML messages, sending it across the wire to the server, de-serializing the response, etc.

matt b
Thank you. I recently cleared up a few misconceptions I had with this and with talking with others. SOAP is not as bloated as I thought, even though I still think it is ... bloated. ;0)
Matt1776