<?xml version="1.0"?>
<!--
 ! AXIS deployment file for TOPCAT's SOAP web services.
 !-->
<deployment xmlns="http://xml.apache.org/axis/wsdd/"
            xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"
            xmlns:votable="http://www.ivoa.net/xml/VOTable/v1.1">

  <!--
     <handler name="loghandler"
              type="java:org.apache.axis.handlers.LogHandler"/>
   !-->

  <!-- According to the documentation, this element ought to dissuade 
   !   AXIS from using 'multiRefs' to send elements; this is a practice
   !   in which only a reference is put into the argument elements which
   !   form the RPC part of the SOAP message, and makes sense if what's
   !   being serialized is a network of objects with multiple internal 
   !   references.  It's not required for our purposes, and it seems
   !   likely that that sort of game could inhibit SAX-like streaming of 
   !   the XML rather than turning it all into a DOM before/after sending it.
   !   However, (a) it seems to get turned into a DOM in any case and
   !   (b) this element doesn't seem to have the advertised effect, so
   !   probably it's a no-op.  Doesn't seem to be doing any harm here
   !   in any case, so leave it for now. -->
  <globalConfiguration>
    <parameter name="sendMultiRefs" value="false"/>
  </globalConfiguration>

  <!-- The streaming="on" attribute here probably has no effect at AXIS 1.1,
   !   but I'm led to believe that at AXIS 1.2 it causes the XML in the
   !   SOAP message to get streamed using SAX rather than all read into a
   !   DOM and replayed - this will make it possible to pass large tables. -->
  <service name="TopcatSOAPServices" provider="java:RPC" streaming="on">

    <!-- <requestFlow><handler type="loghandler"/></requestFlow>   -->
    <!-- <responseFlow><handler type="loghandler"/></responseFlow> -->

    <!-- TypeMapping element controls serialization of StarTable objects
     !   in conjunction with the named votable.soap factory classes.
     !   The qname attribute must match the one used in those classes
     !   (currently the value of 
     !   uk.ac.starlink.votable.soap.VOTableSerialization.QNAME_VOTABLE). -->
    <typeMapping
         qname="votable:VOTABLE"
         languageSpecificType="java:uk.ac.starlink.table.StarTable"
         serializer="uk.ac.starlink.votable.soap.AxisTableSerializerFactory"
         deserializer="uk.ac.starlink.votable.soap.AxisTableDeserializerFactory"
         encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

    <parameter name="className" 
               value="uk.ac.starlink.topcat.soap.TopcatSOAPServices"/>
    <parameter name="allowedMethods"
               value="displayTable displayTableByLocation"/>
  </service>
</deployment>
