PDA

View Full Version : WebServiceProxFactory doesn't support interface extensions?


Alistair
08-18-2005, 03:31 AM
Hi

We've been using the WebServiceProxyFactory for a while now without problems.

However, recently one of our project teams attempted to extend an existing service interface (and the corresponding Web Service) but when they reconfigured Spring to map the extended interface to the regenerated WSDL generated proxy class, Spring started throwing exceptions:


Type : System.TypeLoadException, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
Message : Method RetrieveReferenceType in type XXX.Example.Delegates.Proxies.ReferenceDataService .ReferenceDataService from assembly Spring.WebServices.Client, Version=0.0.0.0 does not have an implementation.
Source : mscorlib
Help link :
TypeName : XXX.Example.Delegates.Proxies.ReferenceDataService .ReferenceDataService
TargetSite : System.Type TermCreateClass(System.Reflection.Emit.TypeToken, System.Reflection.Module)
Stack Trace : at System.Reflection.Emit.TypeBuilder.TermCreateClass (TypeToken handle, Module module)
at System.Reflection.Emit.TypeBuilder.CreateType()
at Spring.Web.Services.WebServiceClientProxyTypeBuild er.BuildProxy()
at Spring.Web.Services.WebServiceProxyFactory.Generat eProxyWrapper()
at Spring.Web.Services.WebServiceProxyFactory.AfterPr opertiesSet()
at Spring.Objects.Factory.Support.AbstractAutowireCap ableObjectFactory.InvokeInitMethods(Object target, String name, IConfigurableObjectDefinition definition)
at Spring.Objects.Factory.Support.AbstractAutowireCap ableObjectFactory.CreateObject(String name, RootObjectDefinition definition, Object[] arguments, Boolean allowEagerCaching)


The RetrieveReferenceType method is defined in the parent interface of actual service interface listed in the Spring config file. If I copy the methods from the base interface into the new extended interface it works fine - but if they're defined in the parent Spring throws this exception.

I'm using the latest (Aug 15th?) build of Spring.

The Spring config looks like this:


<objec! id="referenceDataService" type="Spring.Web.Services.WebServiceProxyFactory, Spring.Services">
<property name="ProxyClass"><value>XXX.Example.Delegates.Proxies.ReferenceDataService .ReferenceDataService, XXX.Example.Delegates.Proxies</value></property>
<property name="ServiceInterface"><value>XXX.Example.Services.IGeneralDataService, XXX.Example.Services</value></property>
</object>


In this case the IGeneralDataService interface extends the IReferenceDataService interface which is where the RetrieveReferenceType method is defined.

Can anyone shed anylight on this?

Regards
Alistair

p.s. Congrats on the 1.0 RC 1 release!

Mark Pollack
08-20-2005, 04:43 PM
Hi,

This smells like a bug - I'll look into it on Sunday.

Cheers,
Mark

Aleks Seovic
08-24-2005, 06:06 AM
I logged issue in JIRA (http://opensource2.atlassian.com/projects/spring/browse/SPRNET-169) and implemented a fix.

Please get the latest code from CVS and let me know if your problem is solved.

Regards,

Aleks

Alistair
08-24-2005, 06:11 AM
Ok, thanks very much. I'll let you know once I've had a chance to test it.

Regards
Alistair

Mark Pollack
08-24-2005, 03:26 PM
Thanks Aleks 8)