axis-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alex Bond" <ajm_b...@hotmail.com>
Subject Exception: org.xml.sax.SAXException: No deserializer defined for array type {htt
Date Thu, 27 Nov 2003 15:38:48 GMT
Hi,

I am implementing a connector to the KEGGAPI web service using JAVA and 
APACHE AXIS 1.1.  However I am getting the following error when I get back 
data other than a String eg, SSDBResult object or GENESResult object.

Exception:
org.xml.sax.SAXException: No deserializer defined for array type 
{http://xml.apache.org/xml-soap}SOAPStruct
        at 
org.apache.axis.encoding.ser.ArrayDeserializer.onStartElement(ArrayDeserializer.java:304)
        at 
org.apache.axis.encoding.DeserializerImpl.startElement(DeserializerImpl.java:428)
        at 
org.apache.axis.encoding.DeserializationContextImpl.startElement(DeserializationContextImpl.java:976)
        at 
org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:198)
        at 
org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:722)
        at 
org.apache.axis.message.RPCElement.deserialize(RPCElement.java:233)
        at org.apache.axis.message.RPCElement.getParams(RPCElement.java:347)
        at org.apache.axis.client.Call.invoke(Call.java:2272)
        at org.apache.axis.client.Call.invoke(Call.java:2171)
        at org.apache.axis.client.Call.invoke(Call.java:1691)
        at 
org.apache.axis.client.AxisClientProxy.invoke(AxisClientProxy.java:186)
        at $Proxy0.get_all_neighbors_by_gene(Unknown Source)
        at 
KEGG.KEGGConnector.get_all_neighbors_by_gene(KEGGConnector.java:75)
        at KEGG.KEGGConnectorTest.main(KEGGConnectorTest.java:87)
; nested exception is:
        org.xml.sax.SAXException: No deserializer defined for array type 
{http://xml.apache.org/xml-soap}SOAPStruct

I was wondering if you know what is causing this error.  The code 
implementation is below.

KEGGConnector class:

public class KEGGConnector implements KEGGPortType{

    private KEGGPortType dynamicProxy;

    /** Creates a new instance of KEGGConnector */
    public KEGGConnector()
    {
        dynamicProxy = createDynamicProxy();
    }

    private KEGGPortType createDynamicProxy()
    {
        String urlString;
        String nameSpaceURI;
        String serviceName;
        String portName;
        URL keggWSDLURL;
        ServiceFactory serviceFactory;
        Service keggService;
        KEGGPortType proxy;

        urlString = "http://soap.genome.ad.jp/KEGG.wsdl";
        nameSpaceURI = "SOAP/KEGG";
        serviceName = "KEGG";
        portName = "KEGGPort";
        keggWSDLURL = null;
        serviceFactory = null;
        keggService = null;
        proxy = null;
        try
        {
            keggWSDLURL = new URL(urlString);
            serviceFactory = serviceFactory.newInstance();
            keggService = serviceFactory.createService
                (keggWSDLURL, new QName(nameSpaceURI, serviceName));
            proxy = (KEGGPortType) keggService.getPort
                (new QName(nameSpaceURI, portName), KEGGPortType.class);

        }
        catch (MalformedURLException murle)
        {
            System.out.println(murle.getMessage());
        }
        catch (ServiceException se)
        {
            System.out.println(se.getMessage());
        }

        return proxy;
    }

    public SSDBResult[] get_all_neighbors_by_gene
        (String kid, int threshold, String[] orgs) throws RemoteException
    {
        return dynamicProxy.get_all_neighbors_by_gene(kid, threshold, orgs);
    }
}

KEGGConnectorTest class:

public class KEGGConnectorTest {

    /** Creates a new instance of KEGGMain */
    public KEGGConnectorTest()
    {

    }

    static private void printSSDBResults(SSDBResult[] ssdbResults)
    {
        for (int i = 0; i < ssdbResults.length; i++)
        {
            System.out.println("SSDB Result " + i + ":\tkid1 -\t" + 
ssdbResults[i].getKid1());
            System.out.println("             \tkid2 -\t" + 
ssdbResults[i].getKid2());
            System.out.println("             \tsw_score -\t" + 
ssdbResults[i].getSw_score());
            System.out.println("             \tident -\t" + 
ssdbResults[i].getIdent());
            System.out.println("             \toverlap -\t" + 
ssdbResults[i].getOverlap());
            System.out.println("             \ts1_start -\t" + 
ssdbResults[i].getS1_start());
            System.out.println("             \ts1_end -\t" + 
ssdbResults[i].getS1_end());
            System.out.println("             \ts2_start -\t" + 
ssdbResults[i].getS2_start());
            System.out.println("             \ts2_end -\t" + 
ssdbResults[i].getS2_end());
            System.out.println("             \tb1 -\t" + 
ssdbResults[i].getB1());
            System.out.println("             \tb2 -\t" + 
ssdbResults[i].getB2());
            System.out.println("             \tdefinition1 -\t" + 
ssdbResults[i].getDefinition1());
            System.out.println("             \tdefinition2 -\t" + 
ssdbResults[i].getDefinition2());
            System.out.println("             \tlength1 -\t" + 
ssdbResults[i].getLength1());
            System.out.println("             \tlength2 -\t" + 
ssdbResults[i].getLength2());
         }
    }

public static void main(String[] args)
    {
        KEGGConnector keggConnector;
        SSDBResult[] ssdbResults;
        String databases;
        String dbinfo;
        String[] genes;
        String[] enzymes;
        String[] pathways;
        String[] organisms;

        keggConnector =  new KEGGConnector();
        try
        {
            System.out.println("TEST :");
            System.out.println("Search all the homologous genes for E. coli 
gene 'b0002', over the default threshold score 100.");
            
System.out.println("keggConnector.get_all_neighbors_by_gene(\"eco:b0002\", 
100, null)\n");
            System.out.println("RESULTS:");
            organisms = new String[2];
            organisms[0] = "ece";
            organisms[1] = "hin";
            ssdbResults = 
keggConnector.get_all_neighbors_by_gene("eco:b0002", 500, organisms);
            printSSDBResults(ssdbResults);

I would be grateful if you could give me some help on this.

Thanks,

Alex Bond

_________________________________________________________________
Use MSN Messenger to send music and pics to your friends 
http://www.msn.co.uk/messenger


Mime
View raw message