Arie,

The four valid signatures for message-style service methods are:

public Element[] method(Element [] bodies)  ;
public SOAPBodyElement [] method (SOAPBodyElement [] bodies) ;
public Document method(Document body) ;
public void method(SOAPEnvelope req, SOAPEnvelope resp) ;

Check Axis User's Guide Service Styles - RPC, Document, Wrapped and Message
for details

As your method signiture is,

 public Element[] publishCatalog(MessageContext context, Vector
soapBodyElements) throws Exception ;

it doesn't match. You could use the second signature if you replace the
Vector with an array and get rid of the Message Context parameter - you
don't need to pass MessageContext as a parameter since it is always
available via the static method MessageContext.getCurrentContext() .





----- Original Message -----
From: "Ghershony, Arie" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Monday, March 03, 2003 3:46 PM
Subject: axis message error


> I receive the following error when trying to view the the wsdll file.  I
> thought that signature rule is being followed correctly.  can any one
point
> out what Is wrong with the code?
> Thanks,
> Aria
>
> -AXIS error
> Sorry, something seems to have gone wrong... here are the details:
>
> Fault - org.apache.axis.InternalException: java.lang.Exception: Method
> 'publishCatalog' does not match any of the valid signatures for
> message-style service methods
> AxisFault
>  faultCode:
{http://schemas.xmlsoap.org/soap/envelope/}Server.userException
>  faultSubcode:
>  faultString: org.apache.axis.InternalException: java.lang.Exception:
Method
> 'publishCatalog' does not match any of the valid signatures for
> message-style service methods
>  faultActor: null
>  faultNode: null
>  faultDetail:
> stackTrace: org.apache.axis.InternalException: java.lang.Exception:
> Method 'publishCatalog' does not match any of the valid signatures for
> message-style service methods
> at
>
org.apache.axis.description.ServiceDesc.checkMessageMethod(ServiceDesc.java:
> 726)
> at
>
org.apache.axis.description.ServiceDesc.createOperationForMethod(ServiceDesc
> .java:1058
>
>
> here is the code:
>
> package clientaxis.Battle.message;
>
> import javax.xml.parsers.DocumentBuilderFactory;
> import javax.xml.parsers.DocumentBuilder;
> import org.w3c.dom.Document;
> import org.w3c.dom.Element;
> import org.w3c.dom.NodeList;
> import org.w3c.dom.Node;
> import org.w3c.dom.Text;
> import java.util.Vector;
> import java.util.Date;
> import java.text.SimpleDateFormat;
> import org.apache.axis.MessageContext ;
> import org.apache.axis.utils.XMLUtils;
> import org.apache.axis.message.SOAPBodyElement;
>
> import java.io.*;
>
> public class CatalogPublisherService {
>   public Element[] publishCatalog(MessageContext context,
>     Vector soapBodyElements) throws Exception {
>     Element soapBody = (Element) soapBodyElements.get(0);
>     NodeList productList = soapBody.getElementsByTagName("PRODUCT");
>     //Get the count of <PRODUCT> elements in the NodeList
>     int productCount = productList.getLength();
>     //Call back-end code
>
>
>     //Start Building Response Document
>     //Get a DocumentBuilder objec
>     DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
>     factory.setNamespaceAware(true);
>     DocumentBuilder builder = factory.newDocumentBuilder();
>     //Start creating the Response
>     //Creat a new DOM Document
>     Document responseDoc = builder.newDocument();
>
>     //Create the namespace aware root Element <CATALOGUPDATE>
>     Element resRoot = responseDoc.createElementNS("http://
>
> www.wrox.com/axis/catalogupdate","CATALOGUPDATE");
>     resRoot.setPrefix("CU");
>
>     //Create the ITEMCOUNT element
>     Element itemCount = responseDoc.createElement("ITEMCOUNT");
>     Text itemCountText = responseDoc.createTextNode(String.valueOf
> (productCount));
>
>     //Create the DATE RECEIVED element
>     Element dateReceived = responseDoc.createElement("DATERECEIVED");
>     SimpleDateFormat fmt = new SimpleDateFormat("MM/dd/yyyy");
>     String date = fmt.format(new Date());
>     Text dateReceivedText = responseDoc.createTextNode(date);
>
>     //Append the child elements appropriately
>     resRoot.appendChild(itemCount);
>     itemCount.appendChild(itemCountText);
>     resRoot.appendChild(dateReceived);
>     dateReceived.appendChild(dateReceivedText);
>
>     Element[] result = new Element[1];
>     result[0] = resRoot;
>
>     return(result);
>   }
> }

Reply via email to