bdn.borland.com

Article #28773: Error "No invokable class registered..." in Midas/Soap app after installing Delphi 6 update pack 2.

Question:

Why am I getting the error No invokable class registered that implements interface SOAPMidas.IAppSOAP of (soap action/path) "http://www.borland.com/namespaces/Types-IAppServerSOAP" after installing Delphi 6 update pack 2?

Answer:

There is a new property added to TSoapConnection called UseSOAPAdapter. This property should be True if the backend is a C++ service and false if it is a Delphi service. The default in Delphi is true. If you are getting this error you should change this property to false.

Explanation from Borland R&D:
Delphi SOAP remotes IAppServer 'as-is'. This interface uses the safecall calling convention that is only available in Delphi. More specifically, safecall is not available in C++. In order to have C++ and Delphi interop we needed to expose SoapDM via a different interface. That new interface is IAppServerSOAP. The latter is essentially IAppServer except that the methods utilize the stdcall instead of safecall convention. This interface is used by C++Builder SOAP DataModules.

We struggled with whether Delphi SOAP Modules should be moved to IAppServerSOAP too. There were several reasons for and against. Eventually, we settled on leaving Delphi SOAP DM with IAppServer (for now) — mainly for compatibility reasons.

This means that TSoapConnection can talk to either interface. The useSOAPAdapter should be true if the backend is a C++ service and false if it is a Delphi one.

Last Modified: 17-JUN-02