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!
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!