I\'ve been designing web services for quite a while now but never had to expose a \'complicated\' WCF service until recently. I was baffled at the apparent lack of \"proper
The attribute "abstract=true" on abstract types as well as a type's inheritance is preserved in the WSDL when you use Java EE. Any use of traditional Java keywords like "abstract" or "extends" in object models is preserved in the WSDL and the XSDs. No special attributes or mangling required.
WCF services fail to generate the abstract attribute in the WSDL. WCF also fails to traverse object model inheritance, requiring the KnownTypeAttribute to be used in order for the proper XSD inheritance to result in the WSDL.
WCF clients however will generate abstract types off the WSDL from a service that describes some types as abstract as well as preserve the inheritance for any type (using the "Service Reference" in Visual Studio to setup a client to a Java EE service for example).
So WCF honors abstract types defined in a WSDL for the client proxy but it does not create the abstract types in the service for WSDL creation (without some special attention perhaps, like the KnownTypeAttribute needed for inheritance).