Your service class is written to use the messaging API:

   public void SubmitReq(Envelope envelope, SOAPContext soapcontext, 
SOAPContext soapcontext1)

Your deployment descriptor should read

   <isd:service xmlns:isd="http://xml.apache.org/xml-soap/deployment";
     
id="http://www.3gpp.org/ftp/Specs/archive/23_series/23.140/schema/REL-5-MM7-1-2";
     type="message"
     > 

You do not need the type mappings in the deployment descriptor, since your code 
will be responsible for interpretting the XML.

Scott Nichol

Do not send e-mail directly to this e-mail address,
because it is filtered to accept only mail from
specific mail lists.
----- Original Message ----- 
From: "Vladimir Brezhnev" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Tuesday, November 09, 2004 9:12 AM
Subject: Re[2]: please, help with "no deserializer found ..." message


> Hello Scott,
> 
> Tuesday, November 9, 2004, 4:36:15 PM, you wrote:
> 
> SN> When a service uses the RPC API, the SOAP request is parsed
> SN> into parameters for the service method call.  Each parameter has a
> SN> Java type specified by the method signature.  Apache SOAP normally
> SN> uses the XML Schema type of an element in the request to determine
> SN> the Java type of the parameter using a type map defined in the
> SN> Apache SOAP code, but which the programmer can also extend.  In
> SN> your case, the parameters do not have an XML Schema type
> SN> specified, so Apache SOAP uses the element name instead.  However,
> SN> you have not specified a mapping for this type.  For the service,
> SN> Apache SOAP type mapping are specified in the deployment
> SN> descriptor.
> 
> SN> The Apache SOAP 2.3.1 documentation for type mapping is at
> SN> http://ws.apache.org/soap/docs/guide/serializer.html.
> 
> I specify type mappings in a deployment descriptor.
> But i get now this error:
> 
> "
> <?xml version='1.0' encoding='UTF-8'?>
> <SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"; 
> xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/";>
> <SOAP-ENV:Body>
> <SOAP-ENV:Fault>
> <faultcode>SOAP-ENV:Server</faultcode>
> <faultstring>Exception while handling service request: 
> com.ericsson.services.mms.sdk.vasp.samples.sim.MMCRelay.SubmitReq(java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,javax.activation.DataHandler)
>  -- no signature match</faultstring>
> <faultactor>/vaspsubmit/servlet/rpcrouter</faultactor>
> <detail>
> <stackTrace>java.lang.NoSuchMethodException: 
> com.ericsson.services.mms.sdk.vasp.samples.sim.MMCRelay.SubmitReq(java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,javax.activation.DataHandler)
>  -- no signature match
> 
>   at org.apache.soap.util.MethodUtils.getEntryPoint(MethodUtils.java:154)
> [...skipped...]"
> 
> SOAP tries to call method with many java.lang.String parameters.
> 
> There is the deploy.xml:
> <?xml version="1.0"?>
>   <isd:service xmlns:isd="http://xml.apache.org/xml-soap/deployment";
>     
> id="http://www.3gpp.org/ftp/Specs/archive/23_series/23.140/schema/REL-5-MM7-1-2";
>     > 
> 
>       <isd:provider type="java"
>                     scope="Application"
>         methods="SubmitReq CancelReq">
>         <isd:java 
> class="com.ericsson.services.mms.sdk.vasp.samples.sim.MMCRelay"
>                          static="false"/>
>       </isd:provider>
>       
> <isd:faultListener>org.apache.soap.server.DOMFaultListener</isd:faultListener>
>   <isd:mappings>
>                 {skipped}
>   </isd:mappings>
>   </isd:service>
> 
> 
> 
> What i must change in the client code or in the deploy.xml to get success
> answer? I could not change server code (MMCRelay).
> 
> There is a class, which was set in deploy.xml.
>                          
> MMCRelay class:
> 
> package com.ericsson.services.mms.sdk.vasp.samples.sim;
> 
> import com.ericsson.services.mms.sdk.vasp.api.*;
> import java.io.*;
> import java.util.*;
> import javax.mail.MessagingException;
> import javax.xml.parsers.DocumentBuilder;
> import javax.xml.parsers.DocumentBuilderFactory;
> import org.apache.soap.*;
> import org.apache.soap.encoding.SOAPMappingRegistry;
> import org.apache.soap.rpc.SOAPContext;
> import org.w3c.dom.*;
> 
> // Referenced classes of package 
> com.ericsson.services.mms.sdk.vasp.samples.sim:
> //            VASPSenderThread
> 
> public class MMCRelay
> {
> 
>     public MMCRelay()
>     {
>     }
> 
>     private MultiMediaSubmitResponse 
> MultiMediaSubmitProcess(MultiMediaApplication multimediaapplication, 
> MultiMediaMessage multimediamessage)
>         throws SOAPException
>     {
>         String s = TransactionManager.genTransactionID();
>         MultiMediaSubmitResponse multimediasubmitresponse = null;
>         try
>         {
>             if(multimediamessage.getSubject() != null && 
> multimediamessage.getSubject().length() > 32)
>             {
>                 multimediasubmitresponse = new MultiMediaSubmitResponse(2001, 
> "Subject Too Long");
>                 throw new IllegalArgumentException();
>             }
>             Date date = new Date();
>             if(multimediamessage.getTimeofExpiry() == null && 
> multimediamessage.getRelativeTimeofExpiry() != 0L)
>                 multimediamessage.setTimeofExpiry(new Date(date.getTime() + 
> 1000L * multimediamessage.getRelativeTimeofExpiry()));
>             if(multimediamessage.getTimeofExpiry() != null && 
> date.after(multimediamessage.getTimeofExpiry()))
>             {
>                 multimediasubmitresponse = new MultiMediaSubmitResponse(2002, 
> "Invalid Expiry");
>                 throw new IllegalArgumentException();
>             }
>             if(multimediamessage.getEarliestDeliveryTime() == null && 
> multimediamessage.getRelativeEarliestDeliveryTime() != 0L)
>                 multimediamessage.setEarliestDeliveryTime(new 
> Date(date.getTime() + 1000L * 
> multimediamessage.getRelativeEarliestDeliveryTime()));
>             if(multimediamessage.getEarliestDeliveryTime() != null && 
> multimediamessage.getTimeofExpiry() != null && 
> multimediamessage.getEarliestDeliveryTime().after(multimediamessage.getTimeofExpiry()))
>             {
>                 multimediasubmitresponse = new MultiMediaSubmitResponse(2004, 
> "Earliest Delivery clashed with Expiry");
>                 throw new IllegalArgumentException();
>             }
>             if(multimediamessage.getFrom() != null && 
> multimediamessage.getFrom().length() > 12)
>             {
>                 multimediasubmitresponse = new MultiMediaSubmitResponse(2002, 
> "Origination address error");
>                 throw new IllegalArgumentException();
>             }
>             if(multimediamessage.getNumberDestinationAddress() > 10)
>             {
>                 multimediasubmitresponse = new MultiMediaSubmitResponse(2002, 
> "Invalid Number of Destinationsr");
>                 throw new IllegalArgumentException();
>             }
>             multimediasubmitresponse = new MultiMediaSubmitResponse(s);
>         }
>         catch(IllegalArgumentException illegalargumentexception)
>         {
>             throw new SOAPException(Constants.FAULT_CODE_CLIENT, 
> multimediasubmitresponse == null ? "Submit" : 
> multimediasubmitresponse.getSubmitResultDescription());
>         }
>         if(multimediasubmitresponse != null && 
> multimediasubmitresponse.isSuccess())
>         {
>             MultiMediaApplication multimediaapplication1 = new 
> MultiMediaApplication();
>             ArrayList arraylist = new ArrayList();
>             arraylist.addAll(multimediamessage.getAllDestination());
>             for(int i = 0; i < arraylist.size(); i++)
>             {
>                 Object obj = null;
>                 Address address = (Address)arraylist.get(i);
>                 if(multimediamessage.getDeliveryReport())
>                 {
>                     MultiMediaDeliveryReport multimediadeliveryreport = new 
> MultiMediaDeliveryReport();
>                     multimediadeliveryreport.setRecipient(address.toString());
>                     
> multimediadeliveryreport.setFrom(multimediamessage.getFrom());
>                     multimediadeliveryreport.setReportStatus("Delivered");
>                     
> multimediadeliveryreport.setMessageID(multimediasubmitresponse.getMessageID());
>                     multimediadeliveryreport.setReportTime(new Date());
>                     VASPSenderThread vaspsenderthread = new 
> VASPSenderThread(multimediamessage.getReportAddress(), 
> multimediaapplication1, multimediadeliveryreport);
>                     vaspsenderthread.start();
>                     vaspsenderthread = null;
>                 }
>                 if(multimediamessage.getReadReport())
>                 {
>                     MultiMediaReadReport multimediareadreport = new 
> MultiMediaReadReport();
>                     multimediareadreport.setRecipient(address.toString());
>                     multimediareadreport.setFrom(multimediamessage.getFrom());
>                     
> multimediareadreport.setMessageID(multimediasubmitresponse.getMessageID());
>                     multimediareadreport.setReportTime(new Date());
>                     VASPSenderThread vaspsenderthread1 = new 
> VASPSenderThread(multimediamessage.getReportAddress(), 
> multimediaapplication1, multimediareadreport);
>                     vaspsenderthread1.start();
>                     vaspsenderthread1 = null;
>                 }
>             }
> 
>         }
>         return multimediasubmitresponse;
>     }
> 
>     public void SubmitReq(Envelope envelope, SOAPContext soapcontext, 
> SOAPContext soapcontext1)
>         throws SOAPException
>     {
>         System.out.println("SubmitReq Entered");
>         MultiMediaMessage multimediamessage = new MultiMediaMessage();
>         try
>         {
>             multimediamessage.unmarshall(envelope);
>             MultiMediaSubmitResponse multimediasubmitresponse = new 
> MultiMediaSubmitResponse(1000, "Successfull message submission");
>             multimediasubmitresponse.setMessageID("1");
>             multimediasubmitresponse.setSubmitResultDescription("Successfull 
> message submission");
>             multimediasubmitresponse.setTransactionId("12345");
>             
> multimediasubmitresponse.setTransactionID(multimediamessage.getTransactionId());
>             Envelope envelope1 = multimediasubmitresponse.marshall();
>             StringWriter stringwriter = new StringWriter();
>             envelope1.marshall(stringwriter, new SOAPMappingRegistry(), 
> soapcontext1);
>             soapcontext1.setRootPart(stringwriter.toString(), "text/xml");
>         }
>         catch(Exception exception)
>         {
>             throw new SOAPException(Constants.FAULT_CODE_SERVER, 
> exception.getMessage(), exception);
>         }
>         finally
>         {
>             System.out.println("SubmitReq Exited");
>         }
>     }
> 
>     /**
>      * @deprecated Method MultiMediaSubmit is deprecated
>      */
> 
>     public void MultiMediaSubmit(Envelope envelope, SOAPContext soapcontext, 
> SOAPContext soapcontext1)
>         throws SOAPException, MessagingException, IOException
>     {
>         System.out.println("MultiMediaSubmit Entered");
>         MultiMediaMessage multimediamessage = new MultiMediaMessage();
>         try
>         {
>             multimediamessage.unmarshall(envelope);
>             MultiMediaSubmitResponse multimediasubmitresponse = new 
> MultiMediaSubmitResponse(1000, "Successfull message submission");
>             multimediasubmitresponse.setMessageID("1");
>             multimediasubmitresponse.setSubmitResultDescription("Successfull 
> message submission");
>             multimediasubmitresponse.setTransactionId("12345");
>             
> multimediasubmitresponse.setTransactionID(multimediamessage.getTransactionId());
>             Envelope envelope1 = marshall(multimediasubmitresponse);
>             StringWriter stringwriter = new StringWriter();
>             envelope1.marshall(stringwriter, new SOAPMappingRegistry(), 
> soapcontext1);
>             soapcontext1.setRootPart(stringwriter.toString(), "text/xml");
>         }
>         catch(Exception exception)
>         {
>             throw new SOAPException(Constants.FAULT_CODE_SERVER, 
> exception.getMessage(), exception);
>         }
>         finally
>         {
>             System.out.println("MultiMediaSubmit Exited");
>         }
>     }
> 
>     [some code skipped]
> }
> 
>   
>   
> -- 
> Best regards,
>  Vladimir
> 
>

Reply via email to