hey folks,

I think I know what the problem is. Its the URLClassLoader. My service
method does the following

Class.forName("...ApiResponse", urlClassLoader);

where urlClassLoader has been instantiated with a set of URL's to look for
the classes. The service method uses the above to create the response and
send the response out. That seems to be the problem. Once I got rid of the
urlClassLoader and simply did a new ApiResponse(), everything worked fine.

Is there a dependency for the type mapping on the class loader?

Ram



hey,

I guess this is the most looked for topic in the list. I 've gone through
all the posting and I still am not able to solve this issue. Am deploying
my service in Tomcat. My wsdd looks like this

<deployment xmlns="http://xml.apache.org/axis/wsdd/"; xmlns:java="
http://xml.apache.org/axis/wsdd/providers/java";>
      <service name="AdminService" provider="java:MSG">
        <parameter name="className" value="org.apache.axis.utils.Admin"/>
        <parameter name="allowedMethods" value="*"/>
        <parameter name="enableRemoteAdmin" value="false"/>
      </service>
      <!-- SOAP Monitoring service -->
      <handler name="soapmonitor" type="
java:org.apache.axis.handlers.SOAPMonitorHandler">
        <parameter name="wsdlURL"
value="/api/SOAPMonitorService-impl.wsdl"/>
        <parameter name="namespace" value="
http://tempuri.org/wsdl/2001/12/SOAPMonitorService-impl.wsdl"/>
        <parameter name="serviceName" value="SOAPMonitorService"/>
        <parameter name="portName" value="8888"/>
      </handler>
      <service name="SOAPMonitorService" provider="java:RPC">
        <parameter name="allowedMethods" value="publishMessage"/>
        <parameter name="className"
value="org.apache.axis.monitor.SOAPMonitorService"/>
        <parameter name="scope" value="Application"/>
      </service>
      <!-- END SOAP Monitoring service -->
      <service name="urn:API_MSGService" provider="java:MSG">
        <parameter name="className"
value="com.api.common.services.MessageServiceImpl"/>
        <parameter name="allowedMethods" value="corrRequest
hierarchyBrowseRequest"/>
      </service>
      <service name="urn:API_RPCService" provider="java:RPC" use="encoded"
style="rpc">
        <requestFlow>
          <handler type="soapmonitor"/>
        </requestFlow>
        <responseFlow>
          <handler type="soapmonitor"/>
        </responseFlow>
        <parameter name="className"
value="com.api.common.services.RPCServiceImpl"/>
        <parameter name="allowedMethods" value="corrRequest"/>
        <typeMapping encoding="http://schemas.xmlsoap.org/soap/encoding/";
xmlns:rpcNS="urn:API_RPCService" qname="rpcNS:apiResponse"
languageSpecificType="java:com.databean.impl.ApiResponse"
serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"/>
        <typeMapping encoding="http://schemas.xmlsoap.org/soap/encoding/";
xmlns:rpcNS="urn:API_RPCService" qname="rpcNS:apiResponseChoice"
languageSpecificType="java:com.databean.impl.ApiResponseChoice"
serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"/>
        <typeMapping encoding="http://schemas.xmlsoap.org/soap/encoding/";
xmlns:rpcNS="urn:API_RPCService" qname="rpcNS:authentication"
languageSpecificType="java:com.databean.impl.Authentication"
serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"/>
        <typeMapping encoding="http://schemas.xmlsoap.org/soap/encoding/";
xmlns:rpcNS="urn:API_RPCService" qname="rpcNS:breadcrumb"
languageSpecificType="java:com.databean.impl.Breadcrumb"
serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"/>
        <typeMapping encoding="http://schemas.xmlsoap.org/soap/encoding/";
xmlns:rpcNS="urn:API_RPCService" qname="rpcNS:breadcrumbElem"
languageSpecificType="java:com.databean.impl.BreadcrumbElem"
serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"/>
    </service>
</deployment>

My client does set the typeMapping in the call. The method on my service
looks like this

public Object corrRequest(CorrelationRequest req)

The service gets called without any issues from the client. When my service
returns I get a "No Serializer Found" exception for class ApiResponse
(which is the object returned by the method). This is happening in the
server side.

Any ideas what could be going wrong? I should also mention that the
databean.impl.* classes on the client and the service are being loaded
through a URLClassLoader.

Thanks
Ram


Reply via email to