Loading ...
Sorry, an error occurred while loading the content.

FW: At my wits end.

Expand Messages
  • Brian Gilman
    Hello, My name is Brian Gilman. I am currently writing a book on XML and BioInformatics for O Reilly that includes a section on SOAP::Lite and Apache Axis
    Message 1 of 4 , Jun 11, 2003
    • 0 Attachment
      Hello,

      My name is Brian Gilman. I am currently writing a book on XML and
      BioInformatics for O'Reilly that includes a section on SOAP::Lite and Apache
      Axis toolkits.

      I am also the Inventor of a BioInformatics Toolkit called OmniGene. This
      is a toolkit that exposes Bioinformatics services as web services. I am
      trying to write a simple Client for our analysis engine. The method
      signature in java is:

      public JobInfo submitJob(int taskID, ParameterInfo[] parameters,
      DataHandler[] files);

      This is serialized into the SOAP messages: request and response attached
      and shown below.

      I have read through the perdoc/your book/ and a few hundred other
      resources and do not quite know how to write the code to talk to this
      service. I would like to put this into the book but cannot due to this
      roadblock.

      Here is what I understand so far:

      In order to do attachments I use SOAP::MIME. I wrote the following code
      to handle this (please forgive the really bad Perl coding as this is not my
      native tongue):

      if(@Files){
      foreach my $file (@Files){
      my $fileCounter++;

      my $ent = build MIME::Entity
      Type => "text/plain",
      Encoding => "binary",
      Path => $file,
      'Content-Id' =>'<File' . $fileCounter . '>',
      Disposition => "attachment";

      push(@fileHolder, $ent);
      }
      }

      I pass this to a SOAP::Lite object using the ->parts(@fileHolder)
      method.

      Now here's where I get lost:

      I need to construct an array of objects called ParameterInfo and pass
      them to my service. How do I do this in SOAP::Lite? I've looked into
      SOAP::Data objects and they look promising but, I'm not sure how to get the
      SOAP::Lite toolkit to encode these as a Java Map (well in this case Axis
      serialized Map?). Do I need to make my own serializer here?

      I would really appreciate your help!

      Best,

      Brian Gilman




      ==============
      Listen Port: 9090
      Target Host: localhost
      Target Port: 8080
      ==== Request ====
      POST /axis/servlet/AxisServlet HTTP/1.0

      Content-Type: multipart/related; type="text/xml";
      start="<97C2115D38FF77499E2CA04BB838E901>";
      boundary="----=_Part_0_7089827.1055376896680"

      Accept: application/soap+xml, application/dime, multipart/related, text/*

      User-Agent: Axis/1.1RC2

      Host: localhost

      Cache-Control: no-cache

      Pragma: no-cache

      SOAPAction: ""

      Content-Length: 3796





      ------=_Part_0_7089827.1055376896680

      Content-Type: text/xml; charset=UTF-8

      Content-Transfer-Encoding: binary

      Content-Id: <97C2115D38FF77499E2CA04BB838E901>



      <?xml version="1.0" encoding="UTF-8"?>
      <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
      xmlns:xsd="http://www.w3.org/2001/XMLSchema"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <soapenv:Body>
      <ns1:submitJob
      soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
      xmlns:ns1="Analysis">
      <arg0 xsi:type="xsd:int">0</arg0>
      <arg1 xsi:type="soapenc:Array" soapenc:arrayType="ns1:ParmInfo[2]"
      xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
      <item href="#id0"/>
      <item href="#id1"/>
      </arg1>
      <arg2 href="#id2"/>
      </ns1:submitJob>
      <multiRef id="id0" soapenc:root="0"
      soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
      xsi:type="ns2:ParmInfo"
      xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
      xmlns:ns2="Analysis">
      <attributes href="#id3"/>
      <description xsi:type="xsd:string">input file 1</description>
      <inputFile xsi:type="xsd:boolean">true</inputFile>
      <label xsi:type="xsd:string"></label>
      <name xsi:type="xsd:string">-f1</name>
      <outputFile xsi:type="xsd:boolean">false</outputFile>
      <value xsi:type="xsd:string">test1.txt</value>
      </multiRef>
      <multiRef id="id2" soapenc:root="0"
      soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
      xsi:type="ns3:Map" xmlns:ns3="http://xml.apache.org/xml-soap"
      xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
      <item>
      <key xsi:type="xsd:string">test1.txt</key>
      <value href="cid:519D4713CAC92D0A55F7F849680F1D56"
      xmlns:ns4="Analysis"/>
      </item>
      <item>
      <key xsi:type="xsd:string">test2.txt</key>
      <value href="cid:4D580598F9E5C89FA1FD17407BADABF5"
      xmlns:ns5="Analysis"/>
      </item>
      </multiRef>
      <multiRef id="id1" soapenc:root="0"
      soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
      xsi:type="ns6:ParmInfo" xmlns:ns6="Analysis"
      xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
      <attributes href="#id4"/>
      <description xsi:type="xsd:string">input file 2</description>
      <inputFile xsi:type="xsd:boolean">true</inputFile>
      <label xsi:type="xsd:string"></label>
      <name xsi:type="xsd:string">-f2</name>
      <outputFile xsi:type="xsd:boolean">false</outputFile>
      <value xsi:type="xsd:string">test2.txt</value>
      </multiRef>
      <multiRef id="id3" soapenc:root="0"
      soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
      xsi:type="ns7:Map" xmlns:ns7="http://xml.apache.org/xml-soap"
      xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
      <item>
      <key xsi:type="xsd:string">MODE</key>
      <value xsi:type="xsd:string">IN</value>
      </item>
      <item>
      <key xsi:type="xsd:string">TYPE</key>
      <value xsi:type="xsd:string">FILE</value>
      </item>
      </multiRef>
      <multiRef id="id4" soapenc:root="0"
      soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
      xsi:type="ns8:Map" xmlns:ns8="http://xml.apache.org/xml-soap"
      xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
      <item>
      <key xsi:type="xsd:string">MODE</key>
      <value xsi:type="xsd:string">IN</value>
      </item>
      <item>
      <key xsi:type="xsd:string">TYPE</key>
      <value xsi:type="xsd:string">FILE</value>
      </item>
      </multiRef>
      </soapenv:Body>
      </soapenv:Envelope>

      ------=_Part_0_7089827.1055376896680

      Content-Type: text/plain

      Content-Transfer-Encoding: binary

      Content-Id: <519D4713CAC92D0A55F7F849680F1D56>



      >Test1
      aaaaaaaaggggggtttttttttccccccc


      ------=_Part_0_7089827.1055376896680

      Content-Type: text/plain

      Content-Transfer-Encoding: binary

      Content-Id: <4D580598F9E5C89FA1FD17407BADABF5>



      >Test2
      aaaaaaaatttttttggggggggggggggggccccccccccc


      ------=_Part_0_7089827.1055376896680--

      ==== Response ====
      HTTP/1.1 200 OK

      Set-Cookie: JSESSIONID=DAA82FFC4487D346BC5FFF90B8278066; Path=/axis

      Content-Type: text/xml; charset=utf-8

      Date: Thu, 12 Jun 2003 00:14:58 GMT

      Server: Apache Coyote/1.0

      Connection: close



      <?xml version="1.0" encoding="UTF-8"?>
      <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
      xmlns:xsd="http://www.w3.org/2001/XMLSchema"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <soapenv:Body>
      <ns1:submitJobResponse
      soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
      xmlns:ns1="Analysis">
      <submitJobReturn xsi:type="ns1:JobInfo">
      <dateCompleted xsi:type="xsd:dateTime" xsi:nil="true"/>
      <dateSubmitted
      xsi:type="xsd:dateTime">2003-06-12T00:14:57.876Z</dateSubmitted>
      <inputFileName xsi:type="xsd:string"></inputFileName>
      <jobNumber xsi:type="xsd:int">0</jobNumber>
      <parameterInfo xsi:type="xsd:string"><?xml version="1.0"
      encoding="UTF-8"?>

      <ANALYSISPARAMETERS>
      <PARAMETER name="-f1"
      value="/Users/gilmanb/sourceforge/omnigene2/omnigene-1.1.3/runtime/jaka
      rta-tomcat-4.1.24/webapps/axis/WEB-INF/attachments/Axis53370axis_test1.txt&q
      uot;>
      <DESCRIPTION>input file 1</DESCRIPTION>
      <ATTRIBUTE key="MODE">IN</ATTRIBUTE>
      <ATTRIBUTE key="TYPE">FILE</ATTRIBUTE>
      <ATTRIBUTE
      key="LABEL"></ATTRIBUTE></PARAMETER>
      <PARAMETER name="-f2"
      value="/Users/gilmanb/sourceforge/omnigene2/omnigene-1.1.3/runtime/jaka
      rta-tomcat-4.1.24/webapps/axis/WEB-INF/attachments/Axis53371axis_test2.txt&q
      uot;>
      <DESCRIPTION>input file 2</DESCRIPTION>
      <ATTRIBUTE key="MODE">IN</ATTRIBUTE>
      <ATTRIBUTE key="TYPE">FILE</ATTRIBUTE>
      <ATTRIBUTE
      key="LABEL"></ATTRIBUTE></PARAMETER></ANALYSISPA
      RAMETERS>
      </parameterInfo>
      <parameterInfoArray xsi:type="soapenc:Array"
      soapenc:arrayType="ns1:ParmInfo[2]"
      xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
      <item>
      <attributes xsi:type="ns2:Map"
      xmlns:ns2="http://xml.apache.org/xml-soap">
      <item>
      <key xsi:type="xsd:string">MODE</key>
      <value xsi:type="xsd:string">IN</value>
      </item>
      <item>
      <key xsi:type="xsd:string">TYPE</key>
      <value xsi:type="xsd:string">FILE</value>
      </item>
      <item>
      <key xsi:type="xsd:string">LABEL</key>
      <value xsi:type="xsd:string"></value>
      </item>
      </attributes>
      <description xsi:type="xsd:string">input file 1</description>
      <inputFile xsi:type="xsd:boolean">true</inputFile>
      <label xsi:type="xsd:string"></label>
      <name xsi:type="xsd:string">-f1</name>
      <outputFile xsi:type="xsd:boolean">false</outputFile>
      <value
      xsi:type="xsd:string">/Users/gilmanb/sourceforge/omnigene2/omnigene-1.1.3/ru
      ntime/jakarta-tomcat-4.1.24/webapps/axis/WEB-INF/attachments/Axis53370axis_t
      est1.txt</value>
      </item>
      <item>
      <attributes xsi:type="ns3:Map"
      xmlns:ns3="http://xml.apache.org/xml-soap">
      <item>
      <key xsi:type="xsd:string">MODE</key>
      <value xsi:type="xsd:string">IN</value>
      </item>
      <item>
      <key xsi:type="xsd:string">TYPE</key>
      <value xsi:type="xsd:string">FILE</value>
      </item>
      <item>
      <key xsi:type="xsd:string">LABEL</key>
      <value xsi:type="xsd:string"></value>
      </item>
      </attributes>
      <description xsi:type="xsd:string">input file 2</description>
      <inputFile xsi:type="xsd:boolean">true</inputFile>
      <label xsi:type="xsd:string"></label>
      <name xsi:type="xsd:string">-f2</name>
      <outputFile xsi:type="xsd:boolean">false</outputFile>
      <value
      xsi:type="xsd:string">/Users/gilmanb/sourceforge/omnigene2/omnigene-1.1.3/ru
      ntime/jakarta-tomcat-4.1.24/webapps/axis/WEB-INF/attachments/Axis53371axis_t
      est2.txt</value>
      </item>
      </parameterInfoArray>
      <resultFileName xsi:type="xsd:string" xsi:nil="true"/>
      <status xsi:type="xsd:string">Not Started</status>
      <taskID xsi:type="xsd:int">0</taskID>
      <userId xsi:type="xsd:string"></userId>
      </submitJobReturn>
      </ns1:submitJobResponse>
      </soapenv:Body>
      </soapenv:Envelope>
      ==============


      --
      Brian Gilman <gilmanb@...>
      Group Leader Medical & Population Genetics Dept.
      MIT/Whitehead Inst. Center for Genome Research
      One Kendall Square, Bldg. 300 / Cambridge, MA 02139-1561 USA
      phone +1 617 252 1069 / fax +1 617 252 1902

      ------ End of Forwarded Message
    • Byrne Reese
      The method signature you provide is helpful, but without knowing anything about the underlying data structures it is difficult to tell you what you need to do.
      Message 2 of 4 , Jun 12, 2003
      • 0 Attachment
        The method signature you provide is helpful, but without knowing
        anything about the underlying data structures it is difficult to tell
        you what you need to do. A custom serializer will certainly make things
        easier for you, but I am not sure if you want to go into that level of
        detail in your book. But who knows, maybe you do. :)

        The SOAP::MIME stuff looks good...

        As for constructing the ARRAY of objects, one can easily do that using
        SOAP::Data objects as you have already indicated, but again, what does
        the ParameterInfo and DataHandler objects "look like?"

        On Wed, 2003-06-11 at 20:31, Brian Gilman wrote:
        > Hello,
        >
        > My name is Brian Gilman. I am currently writing a book on XML and
        > BioInformatics for O'Reilly that includes a section on SOAP::Lite and
        > Apache
        > Axis toolkits.
        >
        > I am also the Inventor of a BioInformatics Toolkit called
        > OmniGene. This
        > is a toolkit that exposes Bioinformatics services as web services. I
        > am
        > trying to write a simple Client for our analysis engine. The method
        > signature in java is:
        >
        > public JobInfo submitJob(int taskID, ParameterInfo[] parameters,
        > DataHandler[] files);
        >
        > This is serialized into the SOAP messages: request and response
        > attached
        > and shown below.
        >
        > I have read through the perdoc/your book/ and a few hundred other
        > resources and do not quite know how to write the code to talk to this
        > service. I would like to put this into the book but cannot due to this
        > roadblock.
        >
        > Here is what I understand so far:
        >
        > In order to do attachments I use SOAP::MIME. I wrote the following
        > code
        > to handle this (please forgive the really bad Perl coding as this is
        > not my
        > native tongue):
        >
        > if(@Files){
        > foreach my $file (@Files){
        > my $fileCounter++;
        >
        > my $ent = build MIME::Entity
        > Type => "text/plain",
        > Encoding => "binary",
        > Path => $file,
        > 'Content-Id' =>'<File' . $fileCounter . '>',
        > Disposition => "attachment";
        >
        > push(@fileHolder, $ent);
        > }
        > }
        >
        > I pass this to a SOAP::Lite object using the ->parts(@fileHolder)
        > method.
        >
        > Now here's where I get lost:
        >
        > I need to construct an array of objects called ParameterInfo and
        > pass
        > them to my service. How do I do this in SOAP::Lite? I've looked into
        > SOAP::Data objects and they look promising but, I'm not sure how to
        > get the
        > SOAP::Lite toolkit to encode these as a Java Map (well in this case
        > Axis
        > serialized Map?). Do I need to make my own serializer here?
        >
        > I would really appreciate your help!
        >
        > Best,
        >
        > Brian Gilman
        >
        >
        >
        >
        > ==============
        > Listen Port: 9090
        > Target Host: localhost
        > Target Port: 8080
        > ==== Request ====
        > POST /axis/servlet/AxisServlet HTTP/1.0
        >
        > Content-Type: multipart/related; type="text/xml";
        > start="<97C2115D38FF77499E2CA04BB838E901>";
        > boundary="----=_Part_0_7089827.1055376896680"
        >
        > Accept: application/soap+xml, application/dime, multipart/related,
        > text/*
        >
        > User-Agent: Axis/1.1RC2
        >
        > Host: localhost
        >
        > Cache-Control: no-cache
        >
        > Pragma: no-cache
        >
        > SOAPAction: ""
        >
        > Content-Length: 3796
        >
        >
        >
        >
        >
        > ------=_Part_0_7089827.1055376896680
        >
        > Content-Type: text/xml; charset=UTF-8
        >
        > Content-Transfer-Encoding: binary
        >
        > Content-Id: <97C2115D38FF77499E2CA04BB838E901>
        >
        >
        >
        > <?xml version="1.0" encoding="UTF-8"?>
        > <soapenv:Envelope
        > xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
        > xmlns:xsd="http://www.w3.org/2001/XMLSchema"
        > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        > <soapenv:Body>
        > <ns1:submitJob
        > soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
        > xmlns:ns1="Analysis">
        > <arg0 xsi:type="xsd:int">0</arg0>
        > <arg1 xsi:type="soapenc:Array" soapenc:arrayType="ns1:ParmInfo[2]"
        > xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
        > <item href="#id0"/>
        > <item href="#id1"/>
        > </arg1>
        > <arg2 href="#id2"/>
        > </ns1:submitJob>
        > <multiRef id="id0" soapenc:root="0"
        > soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
        > xsi:type="ns2:ParmInfo"
        > xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
        > xmlns:ns2="Analysis">
        > <attributes href="#id3"/>
        > <description xsi:type="xsd:string">input file 1</description>
        > <inputFile xsi:type="xsd:boolean">true</inputFile>
        > <label xsi:type="xsd:string"></label>
        > <name xsi:type="xsd:string">-f1</name>
        > <outputFile xsi:type="xsd:boolean">false</outputFile>
        > <value xsi:type="xsd:string">test1.txt</value>
        > </multiRef>
        > <multiRef id="id2" soapenc:root="0"
        > soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
        > xsi:type="ns3:Map" xmlns:ns3="http://xml.apache.org/xml-soap"
        > xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
        > <item>
        > <key xsi:type="xsd:string">test1.txt</key>
        > <value href="cid:519D4713CAC92D0A55F7F849680F1D56"
        > xmlns:ns4="Analysis"/>
        > </item>
        > <item>
        > <key xsi:type="xsd:string">test2.txt</key>
        > <value href="cid:4D580598F9E5C89FA1FD17407BADABF5"
        > xmlns:ns5="Analysis"/>
        > </item>
        > </multiRef>
        > <multiRef id="id1" soapenc:root="0"
        > soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
        > xsi:type="ns6:ParmInfo" xmlns:ns6="Analysis"
        > xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
        > <attributes href="#id4"/>
        > <description xsi:type="xsd:string">input file 2</description>
        > <inputFile xsi:type="xsd:boolean">true</inputFile>
        > <label xsi:type="xsd:string"></label>
        > <name xsi:type="xsd:string">-f2</name>
        > <outputFile xsi:type="xsd:boolean">false</outputFile>
        > <value xsi:type="xsd:string">test2.txt</value>
        > </multiRef>
        > <multiRef id="id3" soapenc:root="0"
        > soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
        > xsi:type="ns7:Map" xmlns:ns7="http://xml.apache.org/xml-soap"
        > xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
        > <item>
        > <key xsi:type="xsd:string">MODE</key>
        > <value xsi:type="xsd:string">IN</value>
        > </item>
        > <item>
        > <key xsi:type="xsd:string">TYPE</key>
        > <value xsi:type="xsd:string">FILE</value>
        > </item>
        > </multiRef>
        > <multiRef id="id4" soapenc:root="0"
        > soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
        > xsi:type="ns8:Map" xmlns:ns8="http://xml.apache.org/xml-soap"
        > xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
        > <item>
        > <key xsi:type="xsd:string">MODE</key>
        > <value xsi:type="xsd:string">IN</value>
        > </item>
        > <item>
        > <key xsi:type="xsd:string">TYPE</key>
        > <value xsi:type="xsd:string">FILE</value>
        > </item>
        > </multiRef>
        > </soapenv:Body>
        > </soapenv:Envelope>
        >
        > ------=_Part_0_7089827.1055376896680
        >
        > Content-Type: text/plain
        >
        > Content-Transfer-Encoding: binary
        >
        > Content-Id: <519D4713CAC92D0A55F7F849680F1D56>
        >
        >
        >
        > >Test1
        > aaaaaaaaggggggtttttttttccccccc
        >
        >
        > ------=_Part_0_7089827.1055376896680
        >
        > Content-Type: text/plain
        >
        > Content-Transfer-Encoding: binary
        >
        > Content-Id: <4D580598F9E5C89FA1FD17407BADABF5>
        >
        >
        >
        > >Test2
        > aaaaaaaatttttttggggggggggggggggccccccccccc
        >
        >
        > ------=_Part_0_7089827.1055376896680--
        >
        > ==== Response ====
        > HTTP/1.1 200 OK
        >
        > Set-Cookie: JSESSIONID=DAA82FFC4487D346BC5FFF90B8278066; Path=/axis
        >
        > Content-Type: text/xml; charset=utf-8
        >
        > Date: Thu, 12 Jun 2003 00:14:58 GMT
        >
        > Server: Apache Coyote/1.0
        >
        > Connection: close
        >
        >
        >
        > <?xml version="1.0" encoding="UTF-8"?>
        > <soapenv:Envelope
        > xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
        > xmlns:xsd="http://www.w3.org/2001/XMLSchema"
        > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        > <soapenv:Body>
        > <ns1:submitJobResponse
        > soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
        > xmlns:ns1="Analysis">
        > <submitJobReturn xsi:type="ns1:JobInfo">
        > <dateCompleted xsi:type="xsd:dateTime" xsi:nil="true"/>
        > <dateSubmitted
        > xsi:type="xsd:dateTime">2003-06-12T00:14:57.876Z</dateSubmitted>
        > <inputFileName xsi:type="xsd:string"></inputFileName>
        > <jobNumber xsi:type="xsd:int">0</jobNumber>
        > <parameterInfo xsi:type="xsd:string"><?xml
        > version="1.0"
        > encoding="UTF-8"?>
        >
        > <ANALYSISPARAMETERS>
        > <PARAMETER name="-f1"
        > value="/Users/gilmanb/sourceforge/omnigene2/omnigene-1.1.3/runtime/jaka
        > rta-tomcat-4.1.24/webapps/axis/WEB-INF/attachments/Axis53370axis_test1.txt&q
        > uot;>
        > <DESCRIPTION>input file 1</DESCRIPTION>
        > <ATTRIBUTE key="MODE">IN</ATTRIBUTE>
        > <ATTRIBUTE key="TYPE">FILE</ATTRIBUTE>
        > <ATTRIBUTE
        > key="LABEL"></ATTRIBUTE></PARAMETER>
        > <PARAMETER name="-f2"
        > value="/Users/gilmanb/sourceforge/omnigene2/omnigene-1.1.3/runtime/jaka
        > rta-tomcat-4.1.24/webapps/axis/WEB-INF/attachments/Axis53371axis_test2.txt&q
        > uot;>
        > <DESCRIPTION>input file 2</DESCRIPTION>
        > <ATTRIBUTE key="MODE">IN</ATTRIBUTE>
        > <ATTRIBUTE key="TYPE">FILE</ATTRIBUTE>
        > <ATTRIBUTE
        > key="LABEL"></ATTRIBUTE></PARAMETER></ANALYSISPA
        > RAMETERS>
        > </parameterInfo>
        > <parameterInfoArray xsi:type="soapenc:Array"
        > soapenc:arrayType="ns1:ParmInfo[2]"
        > xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
        > <item>
        > <attributes xsi:type="ns2:Map"
        > xmlns:ns2="http://xml.apache.org/xml-soap">
        > <item>
        > <key xsi:type="xsd:string">MODE</key>
        > <value xsi:type="xsd:string">IN</value>
        > </item>
        > <item>
        > <key xsi:type="xsd:string">TYPE</key>
        > <value xsi:type="xsd:string">FILE</value>
        > </item>
        > <item>
        > <key xsi:type="xsd:string">LABEL</key>
        > <value xsi:type="xsd:string"></value>
        > </item>
        > </attributes>
        > <description xsi:type="xsd:string">input file 1</description>
        > <inputFile xsi:type="xsd:boolean">true</inputFile>
        > <label xsi:type="xsd:string"></label>
        > <name xsi:type="xsd:string">-f1</name>
        > <outputFile xsi:type="xsd:boolean">false</outputFile>
        > <value
        > xsi:type="xsd:string">/Users/gilmanb/sourceforge/omnigene2/omnigene-1.1.3/ru
        > ntime/jakarta-tomcat-4.1.24/webapps/axis/WEB-INF/attachments/Axis53370axis_t
        > est1.txt</value>
        > </item>
        > <item>
        > <attributes xsi:type="ns3:Map"
        > xmlns:ns3="http://xml.apache.org/xml-soap">
        > <item>
        > <key xsi:type="xsd:string">MODE</key>
        > <value xsi:type="xsd:string">IN</value>
        > </item>
        > <item>
        > <key xsi:type="xsd:string">TYPE</key>
        > <value xsi:type="xsd:string">FILE</value>
        > </item>
        > <item>
        > <key xsi:type="xsd:string">LABEL</key>
        > <value xsi:type="xsd:string"></value>
        > </item>
        > </attributes>
        > <description xsi:type="xsd:string">input file 2</description>
        > <inputFile xsi:type="xsd:boolean">true</inputFile>
        > <label xsi:type="xsd:string"></label>
        > <name xsi:type="xsd:string">-f2</name>
        > <outputFile xsi:type="xsd:boolean">false</outputFile>
        > <value
        > xsi:type="xsd:string">/Users/gilmanb/sourceforge/omnigene2/omnigene-1.1.3/ru
        > ntime/jakarta-tomcat-4.1.24/webapps/axis/WEB-INF/attachments/Axis53371axis_t
        > est2.txt</value>
        > </item>
        > </parameterInfoArray>
        > <resultFileName xsi:type="xsd:string" xsi:nil="true"/>
        > <status xsi:type="xsd:string">Not Started</status>
        > <taskID xsi:type="xsd:int">0</taskID>
        > <userId xsi:type="xsd:string"></userId>
        > </submitJobReturn>
        > </ns1:submitJobResponse>
        > </soapenv:Body>
        > </soapenv:Envelope>
        > ==============
        >
        >
        > --
        > Brian Gilman <gilmanb@...>
        > Group Leader Medical & Population Genetics Dept.
        > MIT/Whitehead Inst. Center for Genome Research
        > One Kendall Square, Bldg. 300 / Cambridge, MA 02139-1561 USA
        > phone +1 617 252 1069 / fax +1 617 252 1902
        >
        > ------ End of Forwarded Message
        >
        >
        > Yahoo! Groups Sponsor
        >
        >
        >
        > To unsubscribe from this group, send an email to:
        > soaplite-unsubscribe@yahoogroups.com
        >
        >
        >
        > Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service.
        --
        Byrne Reese
        Developer Program Manager
        Grand Central Communications
      • Brian Gilman
        On 6/12/03 11:13 AM, Byrne Reese wrote: Hey Byrne, I ve gotten a lot farther this morning! I read an article at:
        Message 3 of 4 , Jun 12, 2003
        • 0 Attachment
          On 6/12/03 11:13 AM, "Byrne Reese" <breese@...> wrote:

          Hey Byrne,

          I've gotten a lot farther this morning! I read an article at:

          http://soapenv.org/article.pl?sid=02/02/11/1740229&mode=thread

          Which helped me understand how SOAP::Lite handles complex data
          structures. But, I've hit two more walls:

          1) SOAP::Lite encodes arrays using it's own arrayType
          apache axis barfs on this

          2) Attachments don't work! or at least apache Axis dies when I try to
          use them.

          As for your questions about DataHandler: It get's serialized into a SOAP
          attachment

          Does it matter what ParameterInfo looks like in Java? Here's the SOAP
          structure that I want to build with corresponding SOAP::Lite code:

          <SOAP-ENV:Body><namesp1:submitJob xmlns:namesp1="Analysis"><name
          xsi:type="xsd:int">0</name><parameters xsi:type="SOAP-ENC:Array"
          SOAP-ENC:arrayType="xsd:ur-type[2]"><item><description
          xsi:type="xsd:string">input1</description><inputFile
          xsi:type="xsd:boolean">true</inputFile><label xsi:type="xsd:string"/><name
          xsi:type="xsd:string">-f1</name><outputFile
          xsi:type="xsd:boolean">false</outputFile><value
          xsi:type="xsd:string">/Users/gilmanb/mysql.html</value></item><item><descrip
          tion xsi:type="xsd:string">input1</description><inputFile
          xsi:type="xsd:boolean">true</inputFile><label xsi:type="xsd:string"/><name
          xsi:type="xsd:string">-f2</name><outputFile
          xsi:type="xsd:boolean">false</outputFile><value
          xsi:type="xsd:string">/Users/gilmanb/sourceforge/omnigene2/build.xml</value>
          </item></parameters></namesp1:submitJob></SOAP-ENV:Body>

          Here's the SOAP::Lite code that generates this:

          my $soap = SOAP::Lite
          ->uri("Analysis")
          ->on_action(sub {return "Analysis"})
          ->proxy("http://localhost:9090/axis/servlet/AxisServlet")
          #->parts([$ent1, $ent2])
          ->submitJob(SOAP::Data->name("name" => 0)
          ->type("xsd:int"),
          SOAP::Data->name("parameters" =>[

          \SOAP::Data->value(SOAP::Data->name("description"
          => "input1"),
          SOAP::Data->name("inputFile" =>
          "true")->type("xsd:boolean"),
          SOAP::Data->name("label" => ""),
          SOAP::Data->name("name" => "-f1"),
          SOAP::Data->name("outputFile" =>
          "false")->type("xsd:boolean"),
          SOAP::Data->name("value" => $file1)),

          \SOAP::Data->value(SOAP::Data->name("description"
          => "input1"),
          SOAP::Data->name("inputFile" =>
          "true")->type("xsd:boolean"),
          SOAP::Data->name("label" => ""),
          SOAP::Data->name("name" => "-f2"),
          SOAP::Data->name("outputFile" =>
          "false")->type("xsd:boolean"),
          SOAP::Data->name("value" => $file2))
          ])


          );


          Now here's what Apache Axis generates:

          I've cut and pasted this so that the superfluous stuff has been left
          out.

          <arg1 xsi:type="soapenc:Array" soapenc:arrayType="ns1:ParmInfo[2]"
          xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
          <item href="#id0"/>
          <item href="#id1"/>
          </arg1>
          <multiRef id="id0" soapenc:root="0"
          soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
          xsi:type="ns2:ParmInfo"
          xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
          xmlns:ns2="Analysis">
          <attributes href="#id3"/>
          <description xsi:type="xsd:string">input file 1</description>
          <inputFile xsi:type="xsd:boolean">true</inputFile>
          <label xsi:type="xsd:string"></label>
          <name xsi:type="xsd:string">-f1</name>
          <outputFile xsi:type="xsd:boolean">false</outputFile>
          <value xsi:type="xsd:string">test1.txt</value>
          </multiRef>
          <multiRef id="id2" soapenc:root="0"
          soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
          xsi:type="ns3:Map" xmlns:ns3="http://xml.apache.org/xml-soap"
          xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
          <item>
          <key xsi:type="xsd:string">test1.txt</key>
          <value href="cid:519D4713CAC92D0A55F7F849680F1D56"
          xmlns:ns4="Analysis"/>
          </item>
          <item>
          <key xsi:type="xsd:string">test2.txt</key>
          <value href="cid:4D580598F9E5C89FA1FD17407BADABF5"
          xmlns:ns5="Analysis"/>
          </item>
          </multiRef>
          <multiRef id="id1" soapenc:root="0"
          soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
          xsi:type="ns6:ParmInfo" xmlns:ns6="Analysis"
          xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
          <attributes href="#id4"/>
          <description xsi:type="xsd:string">input file 2</description>
          <inputFile xsi:type="xsd:boolean">true</inputFile>
          <label xsi:type="xsd:string"></label>
          <name xsi:type="xsd:string">-f2</name>
          <outputFile xsi:type="xsd:boolean">false</outputFile>
          <value xsi:type="xsd:string">test2.txt</value>
          </multiRef>
          <multiRef id="id3" soapenc:root="0"
          soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
          xsi:type="ns7:Map" xmlns:ns7="http://xml.apache.org/xml-soap"
          xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
          <item>
          <key xsi:type="xsd:string">MODE</key>
          <value xsi:type="xsd:string">IN</value>
          </item>
          <item>
          <key xsi:type="xsd:string">TYPE</key>
          <value xsi:type="xsd:string">FILE</value>
          </item>
          </multiRef>
          <multiRef id="id4" soapenc:root="0"
          soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
          xsi:type="ns8:Map" xmlns:ns8="http://xml.apache.org/xml-soap"
          xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
          <item>
          <key xsi:type="xsd:string">MODE</key>
          <value xsi:type="xsd:string">IN</value>
          </item>
          <item>
          <key xsi:type="xsd:string">TYPE</key>
          <value xsi:type="xsd:string">FILE</value>
          </item>
          </multiRef>



          Now the problem is that SOAP::Lite has decided to use the following
          arrayType attribute:

          SOAP-ENC:arrayType="xsd:ur-type[2]

          I need this:

          SOAP-ENC:arrayType"namesp1:ParmInfo[2]

          Apache seems to choke on the "xsd:ur-type[2]"

          I'm thinking that I need a custom serializer here but, I don't have a
          clue where to start!

          Also, do you know if SOAP::Lite supports DIME? Or if there's a DIME
          library I can use? If so, where can I find it?

          I've attached the ParameterInfo class per your request.

          Thanks for the help!!

          > The method signature you provide is helpful, but without knowing
          > anything about the underlying data structures it is difficult to tell
          > you what you need to do. A custom serializer will certainly make things
          > easier for you, but I am not sure if you want to go into that level of
          > detail in your book. But who knows, maybe you do. :)
          >
          > The SOAP::MIME stuff looks good...
          >
          > As for constructing the ARRAY of objects, one can easily do that using
          > SOAP::Data objects as you have already indicated, but again, what does
          > the ParameterInfo and DataHandler objects "look like?"
          >
          > On Wed, 2003-06-11 at 20:31, Brian Gilman wrote:
          >> Hello,
          >>
          >> My name is Brian Gilman. I am currently writing a book on XML and
          >> BioInformatics for O'Reilly that includes a section on SOAP::Lite and
          >> Apache
          >> Axis toolkits.
          >>
          >> I am also the Inventor of a BioInformatics Toolkit called
          >> OmniGene. This
          >> is a toolkit that exposes Bioinformatics services as web services. I
          >> am
          >> trying to write a simple Client for our analysis engine. The method
          >> signature in java is:
          >>
          >> public JobInfo submitJob(int taskID, ParameterInfo[] parameters,
          >> DataHandler[] files);
          >>
          >> This is serialized into the SOAP messages: request and response
          >> attached
          >> and shown below.
          >>
          >> I have read through the perdoc/your book/ and a few hundred other
          >> resources and do not quite know how to write the code to talk to this
          >> service. I would like to put this into the book but cannot due to this
          >> roadblock.
          >>
          >> Here is what I understand so far:
          >>
          >> In order to do attachments I use SOAP::MIME. I wrote the following
          >> code
          >> to handle this (please forgive the really bad Perl coding as this is
          >> not my
          >> native tongue):
          >>
          >> if(@Files){
          >> foreach my $file (@Files){
          >> my $fileCounter++;
          >>
          >> my $ent = build MIME::Entity
          >> Type => "text/plain",
          >> Encoding => "binary",
          >> Path => $file,
          >> 'Content-Id' =>'<File' . $fileCounter . '>',
          >> Disposition => "attachment";
          >>
          >> push(@fileHolder, $ent);
          >> }
          >> }
          >>
          >> I pass this to a SOAP::Lite object using the ->parts(@fileHolder)
          >> method.
          >>
          >> Now here's where I get lost:
          >>
          >> I need to construct an array of objects called ParameterInfo and
          >> pass
          >> them to my service. How do I do this in SOAP::Lite? I've looked into
          >> SOAP::Data objects and they look promising but, I'm not sure how to
          >> get the
          >> SOAP::Lite toolkit to encode these as a Java Map (well in this case
          >> Axis
          >> serialized Map?). Do I need to make my own serializer here?
          >>
          >> I would really appreciate your help!
          >>
          >> Best,
          >>
          >> Brian Gilman
          >>
          >>
          >>
          >>
          >> ==============
          >> Listen Port: 9090
          >> Target Host: localhost
          >> Target Port: 8080
          >> ==== Request ====
          >> POST /axis/servlet/AxisServlet HTTP/1.0
          >>
          >> Content-Type: multipart/related; type="text/xml";
          >> start="<97C2115D38FF77499E2CA04BB838E901>";
          >> boundary="----=_Part_0_7089827.1055376896680"
          >>
          >> Accept: application/soap+xml, application/dime, multipart/related,
          >> text/*
          >>
          >> User-Agent: Axis/1.1RC2
          >>
          >> Host: localhost
          >>
          >> Cache-Control: no-cache
          >>
          >> Pragma: no-cache
          >>
          >> SOAPAction: ""
          >>
          >> Content-Length: 3796
          >>
          >>
          >>
          >>
          >>
          >> ------=_Part_0_7089827.1055376896680
          >>
          >> Content-Type: text/xml; charset=UTF-8
          >>
          >> Content-Transfer-Encoding: binary
          >>
          >> Content-Id: <97C2115D38FF77499E2CA04BB838E901>
          >>
          >>
          >>
          >> <?xml version="1.0" encoding="UTF-8"?>
          >> <soapenv:Envelope
          >> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
          >> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
          >> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
          >> <soapenv:Body>
          >> <ns1:submitJob
          >> soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
          >> xmlns:ns1="Analysis">
          >> <arg0 xsi:type="xsd:int">0</arg0>
          >> <arg1 xsi:type="soapenc:Array" soapenc:arrayType="ns1:ParmInfo[2]"
          >> xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
          >> <item href="#id0"/>
          >> <item href="#id1"/>
          >> </arg1>
          >> <arg2 href="#id2"/>
          >> </ns1:submitJob>
          >> <multiRef id="id0" soapenc:root="0"
          >> soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
          >> xsi:type="ns2:ParmInfo"
          >> xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
          >> xmlns:ns2="Analysis">
          >> <attributes href="#id3"/>
          >> <description xsi:type="xsd:string">input file 1</description>
          >> <inputFile xsi:type="xsd:boolean">true</inputFile>
          >> <label xsi:type="xsd:string"></label>
          >> <name xsi:type="xsd:string">-f1</name>
          >> <outputFile xsi:type="xsd:boolean">false</outputFile>
          >> <value xsi:type="xsd:string">test1.txt</value>
          >> </multiRef>
          >> <multiRef id="id2" soapenc:root="0"
          >> soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
          >> xsi:type="ns3:Map" xmlns:ns3="http://xml.apache.org/xml-soap"
          >> xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
          >> <item>
          >> <key xsi:type="xsd:string">test1.txt</key>
          >> <value href="cid:519D4713CAC92D0A55F7F849680F1D56"
          >> xmlns:ns4="Analysis"/>
          >> </item>
          >> <item>
          >> <key xsi:type="xsd:string">test2.txt</key>
          >> <value href="cid:4D580598F9E5C89FA1FD17407BADABF5"
          >> xmlns:ns5="Analysis"/>
          >> </item>
          >> </multiRef>
          >> <multiRef id="id1" soapenc:root="0"
          >> soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
          >> xsi:type="ns6:ParmInfo" xmlns:ns6="Analysis"
          >> xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
          >> <attributes href="#id4"/>
          >> <description xsi:type="xsd:string">input file 2</description>
          >> <inputFile xsi:type="xsd:boolean">true</inputFile>
          >> <label xsi:type="xsd:string"></label>
          >> <name xsi:type="xsd:string">-f2</name>
          >> <outputFile xsi:type="xsd:boolean">false</outputFile>
          >> <value xsi:type="xsd:string">test2.txt</value>
          >> </multiRef>
          >> <multiRef id="id3" soapenc:root="0"
          >> soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
          >> xsi:type="ns7:Map" xmlns:ns7="http://xml.apache.org/xml-soap"
          >> xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
          >> <item>
          >> <key xsi:type="xsd:string">MODE</key>
          >> <value xsi:type="xsd:string">IN</value>
          >> </item>
          >> <item>
          >> <key xsi:type="xsd:string">TYPE</key>
          >> <value xsi:type="xsd:string">FILE</value>
          >> </item>
          >> </multiRef>
          >> <multiRef id="id4" soapenc:root="0"
          >> soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
          >> xsi:type="ns8:Map" xmlns:ns8="http://xml.apache.org/xml-soap"
          >> xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
          >> <item>
          >> <key xsi:type="xsd:string">MODE</key>
          >> <value xsi:type="xsd:string">IN</value>
          >> </item>
          >> <item>
          >> <key xsi:type="xsd:string">TYPE</key>
          >> <value xsi:type="xsd:string">FILE</value>
          >> </item>
          >> </multiRef>
          >> </soapenv:Body>
          >> </soapenv:Envelope>
          >>
          >> ------=_Part_0_7089827.1055376896680
          >>
          >> Content-Type: text/plain
          >>
          >> Content-Transfer-Encoding: binary
          >>
          >> Content-Id: <519D4713CAC92D0A55F7F849680F1D56>
          >>
          >>
          >>
          >>> Test1
          >> aaaaaaaaggggggtttttttttccccccc
          >>
          >>
          >> ------=_Part_0_7089827.1055376896680
          >>
          >> Content-Type: text/plain
          >>
          >> Content-Transfer-Encoding: binary
          >>
          >> Content-Id: <4D580598F9E5C89FA1FD17407BADABF5>
          >>
          >>
          >>
          >>> Test2
          >> aaaaaaaatttttttggggggggggggggggccccccccccc
          >>
          >>
          >> ------=_Part_0_7089827.1055376896680--
          >>
          >> ==== Response ====
          >> HTTP/1.1 200 OK
          >>
          >> Set-Cookie: JSESSIONID=DAA82FFC4487D346BC5FFF90B8278066; Path=/axis
          >>
          >> Content-Type: text/xml; charset=utf-8
          >>
          >> Date: Thu, 12 Jun 2003 00:14:58 GMT
          >>
          >> Server: Apache Coyote/1.0
          >>
          >> Connection: close
          >>
          >>
          >>
          >> <?xml version="1.0" encoding="UTF-8"?>
          >> <soapenv:Envelope
          >> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
          >> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
          >> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
          >> <soapenv:Body>
          >> <ns1:submitJobResponse
          >> soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
          >> xmlns:ns1="Analysis">
          >> <submitJobReturn xsi:type="ns1:JobInfo">
          >> <dateCompleted xsi:type="xsd:dateTime" xsi:nil="true"/>
          >> <dateSubmitted
          >> xsi:type="xsd:dateTime">2003-06-12T00:14:57.876Z</dateSubmitted>
          >> <inputFileName xsi:type="xsd:string"></inputFileName>
          >> <jobNumber xsi:type="xsd:int">0</jobNumber>
          >> <parameterInfo xsi:type="xsd:string"><?xml
          >> version="1.0"
          >> encoding="UTF-8"?>
          >>
          >> <ANALYSISPARAMETERS>
          >> <PARAMETER name="-f1"
          >> value="/Users/gilmanb/sourceforge/omnigene2/omnigene-1.1.3/runtime/jaka
          >> rta-tomcat-4.1.24/webapps/axis/WEB-INF/attachments/Axis53370axis_test1.txt&q
          >> uot;>
          >> <DESCRIPTION>input file 1</DESCRIPTION>
          >> <ATTRIBUTE key="MODE">IN</ATTRIBUTE>
          >> <ATTRIBUTE key="TYPE">FILE</ATTRIBUTE>
          >> <ATTRIBUTE
          >> key="LABEL"></ATTRIBUTE></PARAMETER>
          >> <PARAMETER name="-f2"
          >> value="/Users/gilmanb/sourceforge/omnigene2/omnigene-1.1.3/runtime/jaka
          >> rta-tomcat-4.1.24/webapps/axis/WEB-INF/attachments/Axis53371axis_test2.txt&q
          >> uot;>
          >> <DESCRIPTION>input file 2</DESCRIPTION>
          >> <ATTRIBUTE key="MODE">IN</ATTRIBUTE>
          >> <ATTRIBUTE key="TYPE">FILE</ATTRIBUTE>
          >> <ATTRIBUTE
          >> key="LABEL"></ATTRIBUTE></PARAMETER></ANALYSISPA
          >> RAMETERS>
          >> </parameterInfo>
          >> <parameterInfoArray xsi:type="soapenc:Array"
          >> soapenc:arrayType="ns1:ParmInfo[2]"
          >> xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
          >> <item>
          >> <attributes xsi:type="ns2:Map"
          >> xmlns:ns2="http://xml.apache.org/xml-soap">
          >> <item>
          >> <key xsi:type="xsd:string">MODE</key>
          >> <value xsi:type="xsd:string">IN</value>
          >> </item>
          >> <item>
          >> <key xsi:type="xsd:string">TYPE</key>
          >> <value xsi:type="xsd:string">FILE</value>
          >> </item>
          >> <item>
          >> <key xsi:type="xsd:string">LABEL</key>
          >> <value xsi:type="xsd:string"></value>
          >> </item>
          >> </attributes>
          >> <description xsi:type="xsd:string">input file 1</description>
          >> <inputFile xsi:type="xsd:boolean">true</inputFile>
          >> <label xsi:type="xsd:string"></label>
          >> <name xsi:type="xsd:string">-f1</name>
          >> <outputFile xsi:type="xsd:boolean">false</outputFile>
          >> <value
          >> xsi:type="xsd:string">/Users/gilmanb/sourceforge/omnigene2/omnigene-1.1.3/ru
          >> ntime/jakarta-tomcat-4.1.24/webapps/axis/WEB-INF/attachments/Axis53370axis_t
          >> est1.txt</value>
          >> </item>
          >> <item>
          >> <attributes xsi:type="ns3:Map"
          >> xmlns:ns3="http://xml.apache.org/xml-soap">
          >> <item>
          >> <key xsi:type="xsd:string">MODE</key>
          >> <value xsi:type="xsd:string">IN</value>
          >> </item>
          >> <item>
          >> <key xsi:type="xsd:string">TYPE</key>
          >> <value xsi:type="xsd:string">FILE</value>
          >> </item>
          >> <item>
          >> <key xsi:type="xsd:string">LABEL</key>
          >> <value xsi:type="xsd:string"></value>
          >> </item>
          >> </attributes>
          >> <description xsi:type="xsd:string">input file 2</description>
          >> <inputFile xsi:type="xsd:boolean">true</inputFile>
          >> <label xsi:type="xsd:string"></label>
          >> <name xsi:type="xsd:string">-f2</name>
          >> <outputFile xsi:type="xsd:boolean">false</outputFile>
          >> <value
          >> xsi:type="xsd:string">/Users/gilmanb/sourceforge/omnigene2/omnigene-1.1.3/ru
          >> ntime/jakarta-tomcat-4.1.24/webapps/axis/WEB-INF/attachments/Axis53371axis_t
          >> est2.txt</value>
          >> </item>
          >> </parameterInfoArray>
          >> <resultFileName xsi:type="xsd:string" xsi:nil="true"/>
          >> <status xsi:type="xsd:string">Not Started</status>
          >> <taskID xsi:type="xsd:int">0</taskID>
          >> <userId xsi:type="xsd:string"></userId>
          >> </submitJobReturn>
          >> </ns1:submitJobResponse>
          >> </soapenv:Body>
          >> </soapenv:Envelope>
          >> ==============
          >>
          >>
          >> --
          >> Brian Gilman <gilmanb@...>
          >> Group Leader Medical & Population Genetics Dept.
          >> MIT/Whitehead Inst. Center for Genome Research
          >> One Kendall Square, Bldg. 300 / Cambridge, MA 02139-1561 USA
          >> phone +1 617 252 1069 / fax +1 617 252 1902
          >>
          >> ------ End of Forwarded Message
          >>
          >>
          >> Yahoo! Groups Sponsor
          >>
          >>
          >>
          >> To unsubscribe from this group, send an email to:
          >> soaplite-unsubscribe@yahoogroups.com
          >>
          >>
          >>
          >> Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service.

          --
          Brian Gilman <gilmanb@...>
          Group Leader Medical & Population Genetics Dept.
          MIT/Whitehead Inst. Center for Genome Research
          One Kendall Square, Bldg. 300 / Cambridge, MA 02139-1561 USA
          phone +1 617 252 1069 / fax +1 617 252 1902
        • Byrne Reese
          ... I love it when people read articles I write. :) ... Yes - it does, you have to either write your own serializer, or manually build the SOAP::Data
          Message 4 of 4 , Jun 12, 2003
          • 0 Attachment
            On Thu, 2003-06-12 at 09:00, Brian Gilman wrote:
            > I've gotten a lot farther this morning! I read an article at:
            >
            > http://soapenv.org/article.pl?sid=02/02/11/1740229&mode=thread

            I love it when people read articles I write. :)

            > Which helped me understand how SOAP::Lite handles complex data
            > structures. But, I've hit two more walls:
            >
            > 1) SOAP::Lite encodes arrays using it's own arrayType
            > apache axis barfs on this

            Yes - it does, you have to either write your own serializer, or manually
            build the SOAP::Data structure. I have attached a server-side stub of
            the WS-I Supplier Interop Demo written in Perl - it only implements two
            methods, but it does show how to compose arrays of complex types that
            Axis can understand. <attached file: ISupplier.pm>

            >
            > 2) Attachments don't work! or at least apache Axis dies when I try to
            > use them.

            Correct - you will need to download and install MIME::tools version
            6.106 alpha. Then you will need to enter the following code into your
            script:

            BEGIN {
            $MIME::Entity::BOUNDARY_DELIMITER = "\r\n";
            }

            That will fix the SOAP::Lite and Axis MIME interop bug. Soon this will
            be fixed in a new version of SOAP::Lite...

            >
            > As for your questions about DataHandler: It get's serialized into a SOAP
            > attachment
            >
            > Does it matter what ParameterInfo looks like in Java? Here's the SOAP
            > structure that I want to build with corresponding SOAP::Lite code:

            Try looking at my ISupplier.pm sample code and see if that helps... if
            not, let me know and we can go from there.

            > <SOAP-ENV:Body><namesp1:submitJob xmlns:namesp1="Analysis"><name
            > xsi:type="xsd:int">0</name><parameters xsi:type="SOAP-ENC:Array"
            > SOAP-ENC:arrayType="xsd:ur-type[2]"><item><description
            > xsi:type="xsd:string">input1</description><inputFile
            > xsi:type="xsd:boolean">true</inputFile><label xsi:type="xsd:string"/><name
            > xsi:type="xsd:string">-f1</name><outputFile
            > xsi:type="xsd:boolean">false</outputFile><value
            > xsi:type="xsd:string">/Users/gilmanb/mysql.html</value></item><item><descrip
            > tion xsi:type="xsd:string">input1</description><inputFile
            > xsi:type="xsd:boolean">true</inputFile><label xsi:type="xsd:string"/><name
            > xsi:type="xsd:string">-f2</name><outputFile
            > xsi:type="xsd:boolean">false</outputFile><value
            > xsi:type="xsd:string">/Users/gilmanb/sourceforge/omnigene2/build.xml</value>
            > </item></parameters></namesp1:submitJob></SOAP-ENV:Body>
            >
            > Here's the SOAP::Lite code that generates this:
            >
            > my $soap = SOAP::Lite
            > ->uri("Analysis")
            > ->on_action(sub {return "Analysis"})
            > ->proxy("http://localhost:9090/axis/servlet/AxisServlet")
            > #->parts([$ent1, $ent2])
            > ->submitJob(SOAP::Data->name("name" => 0)
            > ->type("xsd:int"),
            > SOAP::Data->name("parameters" =>[
            >
            > \SOAP::Data->value(SOAP::Data->name("description"
            > => "input1"),
            > SOAP::Data->name("inputFile" =>
            > "true")->type("xsd:boolean"),
            > SOAP::Data->name("label" => ""),
            > SOAP::Data->name("name" => "-f1"),
            > SOAP::Data->name("outputFile" =>
            > "false")->type("xsd:boolean"),
            > SOAP::Data->name("value" => $file1)),
            >
            > \SOAP::Data->value(SOAP::Data->name("description"
            > => "input1"),
            > SOAP::Data->name("inputFile" =>
            > "true")->type("xsd:boolean"),
            > SOAP::Data->name("label" => ""),
            > SOAP::Data->name("name" => "-f2"),
            > SOAP::Data->name("outputFile" =>
            > "false")->type("xsd:boolean"),
            > SOAP::Data->name("value" => $file2))
            > ])
            >
            >
            > );
            >
            >
            > Now here's what Apache Axis generates:
            >
            > I've cut and pasted this so that the superfluous stuff has been left
            > out.
            >
            > <arg1 xsi:type="soapenc:Array" soapenc:arrayType="ns1:ParmInfo[2]"
            > xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
            > <item href="#id0"/>
            > <item href="#id1"/>
            > </arg1>
            > <multiRef id="id0" soapenc:root="0"
            > soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
            > xsi:type="ns2:ParmInfo"
            > xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
            > xmlns:ns2="Analysis">
            > <attributes href="#id3"/>
            > <description xsi:type="xsd:string">input file 1</description>
            > <inputFile xsi:type="xsd:boolean">true</inputFile>
            > <label xsi:type="xsd:string"></label>
            > <name xsi:type="xsd:string">-f1</name>
            > <outputFile xsi:type="xsd:boolean">false</outputFile>
            > <value xsi:type="xsd:string">test1.txt</value>
            > </multiRef>
            > <multiRef id="id2" soapenc:root="0"
            > soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
            > xsi:type="ns3:Map" xmlns:ns3="http://xml.apache.org/xml-soap"
            > xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
            > <item>
            > <key xsi:type="xsd:string">test1.txt</key>
            > <value href="cid:519D4713CAC92D0A55F7F849680F1D56"
            > xmlns:ns4="Analysis"/>
            > </item>
            > <item>
            > <key xsi:type="xsd:string">test2.txt</key>
            > <value href="cid:4D580598F9E5C89FA1FD17407BADABF5"
            > xmlns:ns5="Analysis"/>
            > </item>
            > </multiRef>
            > <multiRef id="id1" soapenc:root="0"
            > soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
            > xsi:type="ns6:ParmInfo" xmlns:ns6="Analysis"
            > xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
            > <attributes href="#id4"/>
            > <description xsi:type="xsd:string">input file 2</description>
            > <inputFile xsi:type="xsd:boolean">true</inputFile>
            > <label xsi:type="xsd:string"></label>
            > <name xsi:type="xsd:string">-f2</name>
            > <outputFile xsi:type="xsd:boolean">false</outputFile>
            > <value xsi:type="xsd:string">test2.txt</value>
            > </multiRef>
            > <multiRef id="id3" soapenc:root="0"
            > soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
            > xsi:type="ns7:Map" xmlns:ns7="http://xml.apache.org/xml-soap"
            > xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
            > <item>
            > <key xsi:type="xsd:string">MODE</key>
            > <value xsi:type="xsd:string">IN</value>
            > </item>
            > <item>
            > <key xsi:type="xsd:string">TYPE</key>
            > <value xsi:type="xsd:string">FILE</value>
            > </item>
            > </multiRef>
            > <multiRef id="id4" soapenc:root="0"
            > soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
            > xsi:type="ns8:Map" xmlns:ns8="http://xml.apache.org/xml-soap"
            > xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
            > <item>
            > <key xsi:type="xsd:string">MODE</key>
            > <value xsi:type="xsd:string">IN</value>
            > </item>
            > <item>
            > <key xsi:type="xsd:string">TYPE</key>
            > <value xsi:type="xsd:string">FILE</value>
            > </item>
            > </multiRef>
            >
            >
            >
            > Now the problem is that SOAP::Lite has decided to use the following
            > arrayType attribute:
            >
            > SOAP-ENC:arrayType="xsd:ur-type[2]
            >
            > I need this:
            >
            > SOAP-ENC:arrayType"namesp1:ParmInfo[2]
            >
            > Apache seems to choke on the "xsd:ur-type[2]"
            >
            > I'm thinking that I need a custom serializer here but, I don't have a
            > clue where to start!
            >
            > Also, do you know if SOAP::Lite supports DIME? Or if there's a DIME
            > library I can use? If so, where can I find it?
            >
            > I've attached the ParameterInfo class per your request.
            >
            > Thanks for the help!!
            >
            > > The method signature you provide is helpful, but without knowing
            > > anything about the underlying data structures it is difficult to tell
            > > you what you need to do. A custom serializer will certainly make things
            > > easier for you, but I am not sure if you want to go into that level of
            > > detail in your book. But who knows, maybe you do. :)
            > >
            > > The SOAP::MIME stuff looks good...
            > >
            > > As for constructing the ARRAY of objects, one can easily do that using
            > > SOAP::Data objects as you have already indicated, but again, what does
            > > the ParameterInfo and DataHandler objects "look like?"
            > >
            > > On Wed, 2003-06-11 at 20:31, Brian Gilman wrote:
            > >> Hello,
            > >>
            > >> My name is Brian Gilman. I am currently writing a book on XML and
            > >> BioInformatics for O'Reilly that includes a section on SOAP::Lite and
            > >> Apache
            > >> Axis toolkits.
            > >>
            > >> I am also the Inventor of a BioInformatics Toolkit called
            > >> OmniGene. This
            > >> is a toolkit that exposes Bioinformatics services as web services. I
            > >> am
            > >> trying to write a simple Client for our analysis engine. The method
            > >> signature in java is:
            > >>
            > >> public JobInfo submitJob(int taskID, ParameterInfo[] parameters,
            > >> DataHandler[] files);
            > >>
            > >> This is serialized into the SOAP messages: request and response
            > >> attached
            > >> and shown below.
            > >>
            > >> I have read through the perdoc/your book/ and a few hundred other
            > >> resources and do not quite know how to write the code to talk to this
            > >> service. I would like to put this into the book but cannot due to this
            > >> roadblock.
            > >>
            > >> Here is what I understand so far:
            > >>
            > >> In order to do attachments I use SOAP::MIME. I wrote the following
            > >> code
            > >> to handle this (please forgive the really bad Perl coding as this is
            > >> not my
            > >> native tongue):
            > >>
            > >> if(@Files){
            > >> foreach my $file (@Files){
            > >> my $fileCounter++;
            > >>
            > >> my $ent = build MIME::Entity
            > >> Type => "text/plain",
            > >> Encoding => "binary",
            > >> Path => $file,
            > >> 'Content-Id' =>'<File' . $fileCounter . '>',
            > >> Disposition => "attachment";
            > >>
            > >> push(@fileHolder, $ent);
            > >> }
            > >> }
            > >>
            > >> I pass this to a SOAP::Lite object using the ->parts(@fileHolder)
            > >> method.
            > >>
            > >> Now here's where I get lost:
            > >>
            > >> I need to construct an array of objects called ParameterInfo and
            > >> pass
            > >> them to my service. How do I do this in SOAP::Lite? I've looked into
            > >> SOAP::Data objects and they look promising but, I'm not sure how to
            > >> get the
            > >> SOAP::Lite toolkit to encode these as a Java Map (well in this case
            > >> Axis
            > >> serialized Map?). Do I need to make my own serializer here?
            > >>
            > >> I would really appreciate your help!
            > >>
            > >> Best,
            > >>
            > >> Brian Gilman
            > >>
            > >>
            > >>
            > >>
            > >> ==============
            > >> Listen Port: 9090
            > >> Target Host: localhost
            > >> Target Port: 8080
            > >> ==== Request ====
            > >> POST /axis/servlet/AxisServlet HTTP/1.0
            > >>
            > >> Content-Type: multipart/related; type="text/xml";
            > >> start="<97C2115D38FF77499E2CA04BB838E901>";
            > >> boundary="----=_Part_0_7089827.1055376896680"
            > >>
            > >> Accept: application/soap+xml, application/dime, multipart/related,
            > >> text/*
            > >>
            > >> User-Agent: Axis/1.1RC2
            > >>
            > >> Host: localhost
            > >>
            > >> Cache-Control: no-cache
            > >>
            > >> Pragma: no-cache
            > >>
            > >> SOAPAction: ""
            > >>
            > >> Content-Length: 3796
            > >>
            > >>
            > >>
            > >>
            > >>
            > >> ------=_Part_0_7089827.1055376896680
            > >>
            > >> Content-Type: text/xml; charset=UTF-8
            > >>
            > >> Content-Transfer-Encoding: binary
            > >>
            > >> Content-Id: <97C2115D38FF77499E2CA04BB838E901>
            > >>
            > >>
            > >>
            > >> <?xml version="1.0" encoding="UTF-8"?>
            > >> <soapenv:Envelope
            > >> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
            > >> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            > >> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            > >> <soapenv:Body>
            > >> <ns1:submitJob
            > >> soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
            > >> xmlns:ns1="Analysis">
            > >> <arg0 xsi:type="xsd:int">0</arg0>
            > >> <arg1 xsi:type="soapenc:Array" soapenc:arrayType="ns1:ParmInfo[2]"
            > >> xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
            > >> <item href="#id0"/>
            > >> <item href="#id1"/>
            > >> </arg1>
            > >> <arg2 href="#id2"/>
            > >> </ns1:submitJob>
            > >> <multiRef id="id0" soapenc:root="0"
            > >> soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
            > >> xsi:type="ns2:ParmInfo"
            > >> xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
            > >> xmlns:ns2="Analysis">
            > >> <attributes href="#id3"/>
            > >> <description xsi:type="xsd:string">input file 1</description>
            > >> <inputFile xsi:type="xsd:boolean">true</inputFile>
            > >> <label xsi:type="xsd:string"></label>
            > >> <name xsi:type="xsd:string">-f1</name>
            > >> <outputFile xsi:type="xsd:boolean">false</outputFile>
            > >> <value xsi:type="xsd:string">test1.txt</value>
            > >> </multiRef>
            > >> <multiRef id="id2" soapenc:root="0"
            > >> soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
            > >> xsi:type="ns3:Map" xmlns:ns3="http://xml.apache.org/xml-soap"
            > >> xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
            > >> <item>
            > >> <key xsi:type="xsd:string">test1.txt</key>
            > >> <value href="cid:519D4713CAC92D0A55F7F849680F1D56"
            > >> xmlns:ns4="Analysis"/>
            > >> </item>
            > >> <item>
            > >> <key xsi:type="xsd:string">test2.txt</key>
            > >> <value href="cid:4D580598F9E5C89FA1FD17407BADABF5"
            > >> xmlns:ns5="Analysis"/>
            > >> </item>
            > >> </multiRef>
            > >> <multiRef id="id1" soapenc:root="0"
            > >> soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
            > >> xsi:type="ns6:ParmInfo" xmlns:ns6="Analysis"
            > >> xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
            > >> <attributes href="#id4"/>
            > >> <description xsi:type="xsd:string">input file 2</description>
            > >> <inputFile xsi:type="xsd:boolean">true</inputFile>
            > >> <label xsi:type="xsd:string"></label>
            > >> <name xsi:type="xsd:string">-f2</name>
            > >> <outputFile xsi:type="xsd:boolean">false</outputFile>
            > >> <value xsi:type="xsd:string">test2.txt</value>
            > >> </multiRef>
            > >> <multiRef id="id3" soapenc:root="0"
            > >> soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
            > >> xsi:type="ns7:Map" xmlns:ns7="http://xml.apache.org/xml-soap"
            > >> xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
            > >> <item>
            > >> <key xsi:type="xsd:string">MODE</key>
            > >> <value xsi:type="xsd:string">IN</value>
            > >> </item>
            > >> <item>
            > >> <key xsi:type="xsd:string">TYPE</key>
            > >> <value xsi:type="xsd:string">FILE</value>
            > >> </item>
            > >> </multiRef>
            > >> <multiRef id="id4" soapenc:root="0"
            > >> soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
            > >> xsi:type="ns8:Map" xmlns:ns8="http://xml.apache.org/xml-soap"
            > >> xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
            > >> <item>
            > >> <key xsi:type="xsd:string">MODE</key>
            > >> <value xsi:type="xsd:string">IN</value>
            > >> </item>
            > >> <item>
            > >> <key xsi:type="xsd:string">TYPE</key>
            > >> <value xsi:type="xsd:string">FILE</value>
            > >> </item>
            > >> </multiRef>
            > >> </soapenv:Body>
            > >> </soapenv:Envelope>
            > >>
            > >> ------=_Part_0_7089827.1055376896680
            > >>
            > >> Content-Type: text/plain
            > >>
            > >> Content-Transfer-Encoding: binary
            > >>
            > >> Content-Id: <519D4713CAC92D0A55F7F849680F1D56>
            > >>
            > >>
            > >>
            > >>> Test1
            > >> aaaaaaaaggggggtttttttttccccccc
            > >>
            > >>
            > >> ------=_Part_0_7089827.1055376896680
            > >>
            > >> Content-Type: text/plain
            > >>
            > >> Content-Transfer-Encoding: binary
            > >>
            > >> Content-Id: <4D580598F9E5C89FA1FD17407BADABF5>
            > >>
            > >>
            > >>
            > >>> Test2
            > >> aaaaaaaatttttttggggggggggggggggccccccccccc
            > >>
            > >>
            > >> ------=_Part_0_7089827.1055376896680--
            > >>
            > >> ==== Response ====
            > >> HTTP/1.1 200 OK
            > >>
            > >> Set-Cookie: JSESSIONID=DAA82FFC4487D346BC5FFF90B8278066; Path=/axis
            > >>
            > >> Content-Type: text/xml; charset=utf-8
            > >>
            > >> Date: Thu, 12 Jun 2003 00:14:58 GMT
            > >>
            > >> Server: Apache Coyote/1.0
            > >>
            > >> Connection: close
            > >>
            > >>
            > >>
            > >> <?xml version="1.0" encoding="UTF-8"?>
            > >> <soapenv:Envelope
            > >> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
            > >> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            > >> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            > >> <soapenv:Body>
            > >> <ns1:submitJobResponse
            > >> soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
            > >> xmlns:ns1="Analysis">
            > >> <submitJobReturn xsi:type="ns1:JobInfo">
            > >> <dateCompleted xsi:type="xsd:dateTime" xsi:nil="true"/>
            > >> <dateSubmitted
            > >> xsi:type="xsd:dateTime">2003-06-12T00:14:57.876Z</dateSubmitted>
            > >> <inputFileName xsi:type="xsd:string"></inputFileName>
            > >> <jobNumber xsi:type="xsd:int">0</jobNumber>
            > >> <parameterInfo xsi:type="xsd:string"><?xml
            > >> version="1.0"
            > >> encoding="UTF-8"?>
            > >>
            > >> <ANALYSISPARAMETERS>
            > >> <PARAMETER name="-f1"
            > >> value="/Users/gilmanb/sourceforge/omnigene2/omnigene-1.1.3/runtime/jaka
            > >> rta-tomcat-4.1.24/webapps/axis/WEB-INF/attachments/Axis53370axis_test1.txt&q
            > >> uot;>
            > >> <DESCRIPTION>input file 1</DESCRIPTION>
            > >> <ATTRIBUTE key="MODE">IN</ATTRIBUTE>
            > >> <ATTRIBUTE key="TYPE">FILE</ATTRIBUTE>
            > >> <ATTRIBUTE
            > >> key="LABEL"></ATTRIBUTE></PARAMETER>
            > >> <PARAMETER name="-f2"
            > >> value="/Users/gilmanb/sourceforge/omnigene2/omnigene-1.1.3/runtime/jaka
            > >> rta-tomcat-4.1.24/webapps/axis/WEB-INF/attachments/Axis53371axis_test2.txt&q
            > >> uot;>
            > >> <DESCRIPTION>input file 2</DESCRIPTION>
            > >> <ATTRIBUTE key="MODE">IN</ATTRIBUTE>
            > >> <ATTRIBUTE key="TYPE">FILE</ATTRIBUTE>
            > >> <ATTRIBUTE
            > >> key="LABEL"></ATTRIBUTE></PARAMETER></ANALYSISPA
            > >> RAMETERS>
            > >> </parameterInfo>
            > >> <parameterInfoArray xsi:type="soapenc:Array"
            > >> soapenc:arrayType="ns1:ParmInfo[2]"
            > >> xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
            > >> <item>
            > >> <attributes xsi:type="ns2:Map"
            > >> xmlns:ns2="http://xml.apache.org/xml-soap">
            > >> <item>
            > >> <key xsi:type="xsd:string">MODE</key>
            > >> <value xsi:type="xsd:string">IN</value>
            > >> </item>
            > >> <item>
            > >> <key xsi:type="xsd:string">TYPE</key>
            > >> <value xsi:type="xsd:string">FILE</value>
            > >> </item>
            > >> <item>
            > >> <key xsi:type="xsd:string">LABEL</key>
            > >> <value xsi:type="xsd:string"></value>
            > >> </item>
            > >> </attributes>
            > >> <description xsi:type="xsd:string">input file 1</description>
            > >> <inputFile xsi:type="xsd:boolean">true</inputFile>
            > >> <label xsi:type="xsd:string"></label>
            > >> <name xsi:type="xsd:string">-f1</name>
            > >> <outputFile xsi:type="xsd:boolean">false</outputFile>
            > >> <value
            > >> xsi:type="xsd:string">/Users/gilmanb/sourceforge/omnigene2/omnigene-1.1.3/ru
            > >> ntime/jakarta-tomcat-4.1.24/webapps/axis/WEB-INF/attachments/Axis53370axis_t
            > >> est1.txt</value>
            > >> </item>
            > >> <item>
            > >> <attributes xsi:type="ns3:Map"
            > >> xmlns:ns3="http://xml.apache.org/xml-soap">
            > >> <item>
            > >> <key xsi:type="xsd:string">MODE</key>
            > >> <value xsi:type="xsd:string">IN</value>
            > >> </item>
            > >> <item>
            > >> <key xsi:type="xsd:string">TYPE</key>
            > >> <value xsi:type="xsd:string">FILE</value>
            > >> </item>
            > >> <item>
            > >> <key xsi:type="xsd:string">LABEL</key>
            > >> <value xsi:type="xsd:string"></value>
            > >> </item>
            > >> </attributes>
            > >> <description xsi:type="xsd:string">input file 2</description>
            > >> <inputFile xsi:type="xsd:boolean">true</inputFile>
            > >> <label xsi:type="xsd:string"></label>
            > >> <name xsi:type="xsd:string">-f2</name>
            > >> <outputFile xsi:type="xsd:boolean">false</outputFile>
            > >> <value
            > >> xsi:type="xsd:string">/Users/gilmanb/sourceforge/omnigene2/omnigene-1.1.3/ru
            > >> ntime/jakarta-tomcat-4.1.24/webapps/axis/WEB-INF/attachments/Axis53371axis_t
            > >> est2.txt</value>
            > >> </item>
            > >> </parameterInfoArray>
            > >> <resultFileName xsi:type="xsd:string" xsi:nil="true"/>
            > >> <status xsi:type="xsd:string">Not Started</status>
            > >> <taskID xsi:type="xsd:int">0</taskID>
            > >> <userId xsi:type="xsd:string"></userId>
            > >> </submitJobReturn>
            > >> </ns1:submitJobResponse>
            > >> </soapenv:Body>
            > >> </soapenv:Envelope>
            > >> ==============
            > >>
            > >>
            > >> --
            > >> Brian Gilman <gilmanb@...>
            > >> Group Leader Medical & Population Genetics Dept.
            > >> MIT/Whitehead Inst. Center for Genome Research
            > >> One Kendall Square, Bldg. 300 / Cambridge, MA 02139-1561 USA
            > >> phone +1 617 252 1069 / fax +1 617 252 1902
            > >>
            > >> ------ End of Forwarded Message
            > >>
            > >>
            > >> Yahoo! Groups Sponsor
            > >>
            > >>
            > >>
            > >> To unsubscribe from this group, send an email to:
            > >> soaplite-unsubscribe@yahoogroups.com
            > >>
            > >>
            > >>
            > >> Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service.
            --
            Byrne Reese <breese@...>
            Grand Central Communications
          Your message has been successfully submitted and would be delivered to recipients shortly.