An iceLogo SOAP (Simple Object Access Protocol) server can be accessed via This SOAP server provides access to the different iceLogo visualization options, see below for the different methods. These different methods all create a string of SVG content as a result. The iceLogo server and SOAP client examples can be found here.


A WS-I compliant document/literal-wrapped WSDL (Web Services Description Language) can be found here. This file defines the different services and methods.

Creating a client, a java example

Different methods exist for creating SOAP client applications in java. The wsdl2java tool is an easy and useful tool for the fast creation of a java client. However, a client call can also manually be created. Here we will give an example on how to create a client that gets a filled logo (the code can be found here). More examples can be found in the iceLogo server source.

  • First, we will create the url.
// Create the url, this url point to the location of the webservice
URL lIcelogoUrl = new URL("");
  • Next, a String deserializer will be set to the created SOAPMappingRegistry.
  • // Set a String Deserializer for the Responsee ("getFilledLogoReturn")
    SOAPMappingRegistry smr = new SOAPMappingRegistry();
    Deserializer stringDser = new StringDeserializer();
    smr.mapTypes(Constants.NS_URI_SOAP_ENC,new QName("urn:IceLogoFetcher","getFilledLogoReturn"),null,null,stringDser);
  • Now we will create the call.
  • // Create and build the call.
    Call call = new Call();
  • Next, the different parameters will be added to the call.
    // Create the parameters
    VectorParameter params = new VectorParameter();
    params.addElement(new Parameter("lExperimentalSet", String[].class,lHumanGranzymeBSubstrates,null));
    params.addElement(new Parameter("lStartPosition", Integer.class, new Integer(0),null));
    params.addElement(new Parameter("lHeight", Integer.class, new Integer(600), null));
    params.addElement(new Parameter("lWidth", Integer.class, new Integer(800), null));
  • Finally, we will invoke the call and get the Responsee.
    // Invoke the call ...
    Response lIceLogoResponse;
        // ... and get the Response
        lIceLogoResponsee = call.invoke(lIcelogoUrl, "");
    } catch (SOAPException e) {
        // ... or print an error if something went wrong
        System.err.println("Caught SOAPException (" + e.getFaultCode() + "): " +
  • At this point, we should have a correct Response. This Response is used to extract a String with the SVG.
  • //get the result
    Parameter ret = lIceLogoResponse.getReturnValue();
    String lSVGResult = (String) ret.getValue();
  • This String with the svg content can be converted to images via the apache batik library. Here we will give a brief example of how the result can be converted to a jpeg image. More different image types are covered in the icelogoserver code.
  • //create an svg document
    String parser = XMLResourceDescriptor.getXMLParserClassName();
    SAXSVGDocumentFactory f = new SAXSVGDocumentFactory(parser);
    InputStream is = new ByteArrayInputStream(lSVGResult.getBytes("UTF-8"));
    SVGDocument lSVGDocument = (SVGDocument) f.createDocument(null, is);
    //create the input
    TranscoderInput input = new TranscoderInput(lSVGDocument);
    //create an output and an outputstream
    OutputStream lOutstream = new FileOutputStream(lFilename);
    TranscoderOutput lOutput = new TranscoderOutput(lOutstream);
    //do the transcoding
    //we need a jpeg figure
    Transcoder lJPEGTranscoder = new JPEGTranscoder();
    lJPEGTranscoder.addTranscodingHint(JPEGTranscoder.KEY_QUALITY, new Float(1.0));
    lJPEGTranscoder.transcode(input, lOutput);
    //close the stream


    For the full list of all possible methods and their parameters, please refer to the wsdl file.