Hi,

I am new to web services and axis.  I am trying to host a web service in
axis using RPC pattern and document binding.  When I run the test client
I get a "serializer not found" exception.  I tried specifying a
beanMapping and typeMapping but still got the same error.  I have copied
the java files and the WSDD.  Could someone help?

Thanks,
Rajagopal

My JAXM servlet
===============
package com.dnb.edms.servlet;

import javax.xml.messaging.JAXMServlet;
import javax.xml.messaging.ReqRespListener;
import javax.xml.soap.SOAPMessage;

public class MyService
 extends JAXMServlet
 implements ReqRespListener {
    public SOAPMessage onMessage(SOAPMessage oMessage) {
        return oMessage;
    }
}

WSDD
====
<deployment xmlns="http://xml.apache.org/axis/wsdd/";
            xmlns:java="http://xml.apache.org/axis/wsdd/providers/java";>
 <service name="MyService" provider="java:RPC" style="document"
 use="literal">
  <parameter name="className" value="MyService"/>
  <parameter name="allowedMethods" value="*"/>
 </service>
</deployment>

WSDL generated by Axis
======================
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions 
 targetNamespace="http://localhost:8080/testaxis/services/MyService"; 
 xmlns="http://schemas.xmlsoap.org/wsdl/"; 
 xmlns:apachesoap="http://xml.apache.org/xml-soap"; 
 xmlns:impl="http://localhost:8080/testaxis/services/MyService"; 
 xmlns:intf="http://localhost:8080/testaxis/services/MyService"; 
 xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"; 
 xmlns:tns1="http://"; 
 xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"; 
 xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"; 
 xmlns:xsd="http://www.w3.org/2001/XMLSchema";>
  <wsdl:types/>
  <wsdl:message name="onMessageRequest">
    <wsdl:part name="oMessage" type="xsd:anyType"/>
  </wsdl:message>
  <wsdl:message name="onMessageResponse">
    <wsdl:part name="onMessageReturn" type="xsd:anyType"/>
  </wsdl:message>
  <wsdl:portType name="MyService">
    <wsdl:operation name="onMessage" parameterOrder="oMessage">
      <wsdl:input message="impl:onMessageRequest"
      name="onMessageRequest"/>
      <wsdl:output message="impl:onMessageResponse"
      name="onMessageResponse"/>
    </wsdl:operation>
  </wsdl:portType>
  <wsdl:binding name="MyServiceSoapBinding" type="impl:MyService">
    <wsdlsoap:binding style="document"
    transport="http://schemas.xmlsoap.org/soap/http"/>
    <wsdl:operation name="onMessage">
      <wsdlsoap:operation soapAction=""/>
      <wsdl:input name="onMessageRequest">
        <wsdlsoap:body
        namespace="http://localhost:8080/testaxis/services/MyService";
        use="literal"/>
      </wsdl:input>
      <wsdl:output name="onMessageResponse">
        <wsdlsoap:body
        namespace="http://localhost:8080/testaxis/services/MyService";
        use="literal"/>
      </wsdl:output>
    </wsdl:operation>
  </wsdl:binding>
  <wsdl:service name="MyServiceService">
    <wsdl:port binding="impl:MyServiceSoapBinding" name="MyService">
      <wsdlsoap:address
      location="http://localhost:8080/testaxis/services/MyService"/>
    </wsdl:port>
  </wsdl:service>
</wsdl:definitions>

My Test Client
==============
package com.dnb.edms.test;

import java.net.URL;

import javax.xml.soap.MessageFactory;
import javax.xml.soap.SOAPBody;
import javax.xml.soap.SOAPBodyElement;
import javax.xml.soap.SOAPElement;
import javax.xml.soap.SOAPEnvelope;
import javax.xml.soap.SOAPHeader;
import javax.xml.soap.SOAPMessage;
import javax.xml.soap.SOAPPart;

import org.apache.axis.client.Service;

import com.dnb.edms.client.MyServiceSoapBindingStub;

class TestService {
 public static void main(String args[]) throws Exception {
  MyServiceSoapBindingStub oStub = new MyServiceSoapBindingStub(new
  URL("http://localhost:8080/testaxis/services/MyService";), new
  Service());
  //MyServiceSoapBindingStub oStub = new MyServiceSoapBindingStub();
  
  MessageFactory oMsgFactory = MessageFactory.newInstance();

  // Create a message from the message factory.
  SOAPMessage oRequest = oMsgFactory.createMessage();
  
  // Get the SOAP part.
  SOAPPart sp = oRequest.getSOAPPart();

  // Retrieve the oSOAPEnv from the soap part to start building
  // the SOAP message.
  SOAPEnvelope oSOAPEnv = sp.getEnvelope();

  // Create a soap header from the oSOAPEnv.
  SOAPHeader hdr = oSOAPEnv.getHeader();

  // Create a soap body from the oSOAPEnv.
  SOAPBody oSOAPBody = oSOAPEnv.getBody();

  // Add a soap body element to the soap body
  SOAPBodyElement customerDetails =
  oSOAPBody.addBodyElement(oSOAPEnv.createName("customer"));
  SOAPElement oCust =
  customerDetails.addChildElement(oSOAPEnv.createName("Name"));
  oCust.addTextNode("RG");
  
  System.out.println("Request:");
  oRequest.writeTo(System.out);
  
  SOAPMessage oReply = (SOAPMessage) oStub.onMessage(oRequest);
  
  System.out.println("Response:");
  oReply.writeTo(System.out); 
 }
}

The stack trace of the error I get
==================================
AxisFault
 faultCode: {http://xml.apache.org/axis/}Server.userException
 faultString: java.io.IOException: No serializer found for class
 org.apache.axis.Message in registry
 [EMAIL PROTECTED]
 faultActor: null
 faultDetail: 
 stackTrace: java.io.IOException: No serializer found for class
 org.apache.axis.Message in registry
 [EMAIL PROTECTED]
 at
 
org.apache.axis.encoding.SerializationContextImpl.serializeActual(SerializationContextImpl.java:1235)
 at
 
org.apache.axis.encoding.SerializationContextImpl.serialize(SerializationContextImpl.java:756)
 at org.apache.axis.message.RPCParam.serialize(RPCParam.java:224)
 at org.apache.axis.message.RPCElement.outputImpl(RPCElement.java:305)
 at
 org.apache.axis.message.MessageElement.output(MessageElement.java:746)
 at org.apache.axis.message.SOAPBody.outputImpl(SOAPBody.java:142)
 at
 org.apache.axis.message.SOAPEnvelope.outputImpl(SOAPEnvelope.java:401)
 at
 org.apache.axis.message.MessageElement.output(MessageElement.java:746)
 at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:273)
 at org.apache.axis.SOAPPart.getAsString(SOAPPart.java:488)
 at org.apache.axis.SOAPPart.getAsBytes(SOAPPart.java:379)
 at org.apache.axis.Message.getContentType(Message.java:400)
 at
 org.apache.axis.transport.http.HTTPSender.writeToSocket(HTTPSender.java:345)
 at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:127)
 at
 org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:71)
 at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:156)
 at org.apache.axis.SimpleChain.invoke(SimpleChain.java:126)
 at org.apache.axis.client.AxisClient.invoke(AxisClient.java:182)
 at org.apache.axis.client.Call.invokeEngine(Call.java:2113)
 at org.apache.axis.client.Call.invoke(Call.java:2102)
 at org.apache.axis.client.Call.invoke(Call.java:1851)
 at org.apache.axis.client.Call.invoke(Call.java:1777)
 at org.apache.axis.client.Call.invoke(Call.java:1315)
 at
 
com.dnb.edms.client.MyServiceSoapBindingStub.onMessage(MyServiceSoapBindingStub.java:85)
 at com.dnb.edms.test.TestService.main(TestService.java:62)


java.io.IOException: No serializer found for class
org.apache.axis.Message in registry
[EMAIL PROTECTED]
 at org.apache.axis.AxisFault.makeFault(AxisFault.java:120)
 at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:275)
 at org.apache.axis.SOAPPart.getAsString(SOAPPart.java:488)
 at org.apache.axis.SOAPPart.getAsBytes(SOAPPart.java:379)
 at org.apache.axis.Message.getContentType(Message.java:400)
 at
 org.apache.axis.transport.http.HTTPSender.writeToSocket(HTTPSender.java:345)
 at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:127)
 at
 org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:71)
 at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:156)
 at org.apache.axis.SimpleChain.invoke(SimpleChain.java:126)
 at org.apache.axis.client.AxisClient.invoke(AxisClient.java:182)
 at org.apache.axis.client.Call.invokeEngine(Call.java:2113)
 at org.apache.axis.client.Call.invoke(Call.java:2102)
 at org.apache.axis.client.Call.invoke(Call.java:1851)
 at org.apache.axis.client.Call.invoke(Call.java:1777)
 at org.apache.axis.client.Call.invoke(Call.java:1315)
 at
 
com.dnb.edms.client.MyServiceSoapBindingStub.onMessage(MyServiceSoapBindingStub.java:85)
 at com.dnb.edms.test.TestService.main(TestService.java:62)
Caused by: java.io.IOException: No serializer found for class
org.apache.axis.Message in registry
[EMAIL PROTECTED]
 at
 
org.apache.axis.encoding.SerializationContextImpl.serializeActual(SerializationContextImpl.java:1235)
 at
 
org.apache.axis.encoding.SerializationContextImpl.serialize(SerializationContextImpl.java:756)
 at org.apache.axis.message.RPCParam.serialize(RPCParam.java:224)
 at org.apache.axis.message.RPCElement.outputImpl(RPCElement.java:305)
 at
 org.apache.axis.message.MessageElement.output(MessageElement.java:746)
 at org.apache.axis.message.SOAPBody.outputImpl(SOAPBody.java:142)
 at
 org.apache.axis.message.SOAPEnvelope.outputImpl(SOAPEnvelope.java:401)
 at
 org.apache.axis.message.MessageElement.output(MessageElement.java:746)
 at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:273)
 ... 16 more
Exception in thread "main" 

Reply via email to