Help!
I'm trying to use a web service that returns a complex object, and I'm getting a "could not find deserializer for type" error. As per the numerous posts, I implemented a new PortProxyFactoryBean (extended JaxRpxPortProxyFactoryBean) and implemented postProcessJaxRpcService, which calls registerBeanMapping (see code).
After setting up my mappings for the missing types and running again, I am still getting the same error. I've stepped through the code, and the mapping doesn't contain my new entries. Placing a breakpoint at the start of postProcessJaxRpxService never breaks...
Any ideas?
Kyle Mallory
Code:public class AxisTLRPortProxyFactoryBean extends JaxRpcPortProxyFactoryBean { protected void postProcessJaxRpcService(Service service) { TypeMappingRegistry registry = (TypeMappingRegistry) service.getTypeMappingRegistry(); TypeMapping mapping = (TypeMapping) registry.createTypeMapping(); registerBeanMapping(mapping, TLRResponse.class, "TLRResponse"); registerBeanMapping(mapping, NameQueryResponse.class, "NameQueryResponse"); registerBeanMapping(mapping, NameQueryRow.class, "NameQueryRow"); registry.register("http://schemas.xmlsoap.org/soap/encoding/", mapping); } protected void registerBeanMapping(TypeMapping mapping, Class type, String name) { QName qName = new QName("http://shared.tlr.service.uii.org", name); mapping.register(type, qName, new BeanSerializerFactory(type, qName), new BeanDeserializerFactory(type, qName)); } }
HTML Code:<?xml version="1.0" ?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean name="/query/index.html" class="org.uii.app.tlr.controllers.QueryController"> <property name="tlrService" ref="tlrClient"/> </bean> <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"> <property name="basename"><value>messages</value></property> </bean> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass"><value>org.springframework.web.servlet.view.JstlView</value></property> <property name="prefix"><value>/WEB-INF/jsp/</value></property> <property name="suffix"><value>.jsp</value></property> </bean> <bean id="tlrClient" class="org.uii.app.tlr.client.AxisTLRPortProxyFactoryBean"> <property name="serviceFactoryClass"><value>org.apache.axis.client.ServiceFactory</value></property> <property name="serviceInterface"><value>org.uii.service.tlr.client.ITLRWebService</value></property> <property name="serviceName"><value>TLRWebService</value></property> <property name="wsdlDocumentUrl"><value>http://localhost/tlr-service/ws/tlr?wsdl</value></property> <property name="namespaceUri"><value>http://mydomain.tld/tlr/service</value></property> <property name="portName"><value>tlr</value></property> </bean> </beans>


Reply With Quote