Hi

I am having problems accessing the Biomart SOAP services programtically
(using JAVA) and would appreciate anyone's helpful opinion as to where
the problem might lie, e.g. with the XFIRE code generation from the WSDL
and XSD schema, with the composition of the query, with namespaces or
referencing the schema types.... etc

I *CAN* access the query service fine through Taverna by pointing
Taverna at the www.biomart.org/biomart/martwsdl , and constructing an
appropriate query according to the wsdl + xsd - if I grap the parameters
that are generated to be added to the soap request - they look like
this....

<parameters xmlns="http://www.biomart.org:80/MartServiceSoap";>
        <virtualSchemaName xmlns="">default</virtualSchemaName>
        <header xmlns="">0</header>
        <count xmlns=""/>
        <uniqueRows xmlns="">0</uniqueRows>
        <Dataset>
                <name xmlns="">ggallus_gene_ensembl</name>
                <Filter xmlns="">
                        <name>end</name>
                        <value>160000000</value>
                </Filter>
                <Filter xmlns="">
                        <name>start</name>
                        <value>156471905</value>
                </Filter>
                <Filter xmlns="">
                        <name>chromosome_name</name>
                        <value>1</value>
                </Filter>
                <Attribute xmlns="">
                        <name>end_position</name>
                </Attribute>
                <Attribute xmlns="">
                        <name>ensembl_gene_id</name>
                </Attribute>
                <Attribute xmlns="">
                        <name>start_position</name>
                </Attribute>
        </Dataset>
</parameters>

However, I have been trying to write JAVA code to call the services,
using code generated from the WSDL using the Xfire tool
org.codehaus.xfire.gen.WsGen:  using the generated code to paramterise
and invoke the query service I can't seem to access the service...

I get the following error returned

<?xml version="1.0" encoding="UTF-8"?>
   <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/";
xmlns:xsd="http://www.w3.org/2001/XMLSchema";
soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/";>
      <soap:Body>
         <soap:Fault>
            <faultcode>soap:Client</faultcode>
            <faultstring>Denied access to method (query) in class (main)
at /ebi/www/biomart/perl/lib/perl5/site_perl/5.8.5//SOAP/Lite.pm line
2678.</faultstring>
         </soap:Fault>
      </soap:Body>
   </soap:Envelope>

[I get a similar error if I try one of the metadata queries such as
'getAttributes'.]

The request that is being sent over the wire, which is built using the
XFIRE autogenerated code is...

[I get something very similar if I try to use CXF wsdl2java
autogenerated code instead of Xfire code ...]  

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/";
xmlns:xsd="http://www.w3.org/2001/XMLSchema";
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
   <soap:Body>
      <ns1:query xmlns:ns1="http://autoclient.biomart.org";>
         <ns1:in0>default</ns1:in0>
         <ns1:in1>0</ns1:in1>
         <ns1:in2>0</ns1:in2>
         <ns1:in3>0</ns1:in3>
         <ns1:in4>
            <ns2:Dataset
xmlns:ns2="http://martservicesoap._80.biomart.org";>
               <attribute
xmlns="http://martservicesoap._80.biomart.org";>
                  <Attribute>
                     <name>ensembl_gene_id</name>
                  </Attribute>
                  <Attribute>
                     <name>start_position</name>
                  </Attribute>
                  <Attribute>
                     <name>end_position</name>
                  </Attribute>
               </attribute>
               <filter xmlns="http://martservicesoap._80.biomart.org";>
                  <Filter>
                     <name>start</name>
                     <value>156471905</value>
                  </Filter>
                  <Filter>
                     <name>end</name>
                     <value>160000000</value>
                  </Filter>
                  <Filter>
                     <name>chromosome_name</name>
                     <value>1</value>
                  </Filter>
               </filter>
               <name
xmlns="http://martservicesoap._80.biomart.org";>ggallus_gene_ensembl</nam
e>
            </ns2:Dataset>
         </ns1:in4>
      </ns1:query>
   </soap:Body></soap:Envelope>

To me this looks pretty malformed, Whilst all the elements of the query
seem to be there, it looks like there might be something wrong with the
ns1:namespace as the parameters are unnamed here, whereas the parameter
elements have names in the WSDL. Also there are nesting <filter> and
<attribute> elements. I have a suspicion that the  import of the xsd
schema to the wsdl is somehow underlying these problems... 

Does anyone have any tips for successfully autogenerating service code -
with XFIRE, CXF or an alternative. 


thanks

Trevor Paterson PhD
new email [email protected]
<mailto:[email protected]> 

Bioinformatics 
The Roslin Institute
Edinburgh University
Scotland EH25 9PS
phone +44 (0)131 5274477
http://www.roslin.ed.ac.uk <http://www.roslin.ed.ac.uk/> 
http://www.comparagrid.org <http://www.comparagrid.org/> 
http://www.thearkdb.org <http://www.thearkdb.org/> 

Please consider the environment before printing this e-mail

The University of Edinburgh is a charitable body, registered in Scotland
with registration number SC005336
Disclaimer:This e-mail and any attachments are confidential and intended
solely for the use of the recipient(s) to whom they are addressed. If
you have received it in error, please destroy all copies and inform the
sender. 

Reply via email to