The company I work for has a large webapp written in C++ as an ISAPI extension (not a filter). We’re currently enhancing our system to integrate with several 3rd party tools that have SOAP interfaces. Rather than roll our own, I think it would probably be best if we used some SOAP library. Ideally, it would be free and open source, but have a license compatible with closed-source commercial software. We also need to support SSL for both incoming and outgoing SOAP messages.

One of the biggest concerns I have is that every SOAP library that I’ve looked at seems to have 2 modes of operation: standalone server and server module (either Apache module or ISAPI filter). Obviously, we can’t use the standalone server. It seems to me that if it is running as a module, it won’t be part of my app — it won’t have access to the rest of my code, so it won’t be able to share data structures, etc. Is that a correct assumption? Each HTTP request processed by our app is handled by a separate thread (we manage our own thread pool), but we have lots of persistent data that is shared between those threads. I think the type of integration I’m looking for is to add some code to my app that looks at the request URL, sees that it is trying to access a SOAP service, and calls some function like soapService.handleRequest(). I’m not aware of anything that offers this sort of integration. We must be able to utilize data structures from our main app in the SOAP handler functions.

In addition to handling incoming SOAP requests, we’re also going to be generating them (bi-directional communication with the 3rd parties). I assume pretty much any SOAP library will fulfill that purpose, right?

Can anyone suggest a SOAP library that is capable of this, or offer a suggestion on how to use a different paradigm? I’ve already looked at Apache Axis2, gSOAP and AlchemySOAP, but perhaps there’s some feature of these that I overlooked. Thanks.

3 Responses to “choosing a SOAP library to integrate with ISAPI webapp”