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