[MOBY-dev] Perl API and BioMOBY Central WSDL: BioMOBY with new "stable" SOAP::Lite broken...

Pieter Neerincx Pieter.Neerincx at wur.nl
Mon Jan 30 13:32:04 UTC 2006


Hi all,

After quite some time there is finally an updated SOAP::Lite. I never  
got the BioMOBY stuff working with the previous beta's, so I was  
stuck on S::L 0.60. But now there is 0.66 and 0.67 was already  
submitted to CPAN. And 0.68 might be there by the time you read this.  
It's been a while since the last "stable" versions of S::L and now  
they are popping up like mushrooms :). Unfortunately they don't work  
with BioMOBY. I found 2 issues. One of them is clearly a S::L  
problem, so I mailed to the corresponding list (And for those who are  
interested, there's a temporary fix in that post as well). For the  
other one I'm not sure, but I do now it can be fixed easily by a  
small change in ~moby-live/Perl/MOBY/Central.pm. There is a problem  
with the WSDL that BioMOBY Central generates. There are several  
namespaces in this WSDL and on them is prefixed with "soap":

$WSDL_TEMPLATE = <<END;
<?xml version="1.0"?>
<wsdl:definitions name="MOBY_Central_Generated_WSDL"
                 targetNamespace="http://biomoby.org/Central.wsdl"
                 xmlns:tns="http://biomoby.org/Central.wsdl"
                 xmlns:xsd1="http://biomoby.org/CentralXSDs.xsd"
                 xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
                 xmlns:xsd="http://www.w3.org/1999/XMLSchema"
                 xmlns="http://schemas.xmlsoap.org/wsdl/"
                 xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
etc.

As far as I understand it (after browsing the specs for the different  
versions of WSDL, SOAP, WSDL SOAP binding etc. that drove me nuts)  
the "soap" prefixed namespace is for the SOAP binding described by  
the WSDL document. Unfortunately when S::L is processing the response  
from BioMOBY Central it thinks the "soap" prefixed namespace is for  
the SOAP message eventhough the WSDL is wrapped in a CDATA block.  
Since this namespace is not the valid one for SOAP version 1.1 or 1.2  
S::L complains that the entire response is in an unsupported version  
of SOAP :(. Either something has to change in S::L, or we change the  
prefix of the namespace. As far as I understand the prefixes for  
namespaces are not standardised and could be anything. In lots of  
examples I found on the net I saw:
xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/",
xmlns:soapwsdl="http://schemas.xmlsoap.org/wsdl/soap/" or
xmlns:wsoap="http://schemas.xmlsoap.org/wsdl/soap/"
instead of:
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"

So what do the others think. Should this be patched in S::L or can we  
change the prefix for this namespace from soap to for example wsoap?

Cheers,

Pieter



Wageningen University and Research centre (WUR)
Laboratory of Bioinformatics
Transitorium (building 312) room 1034
Dreijenlaan 3
6703 HA Wageningen
The Netherlands
phone: 0317-483 060
fax: 0317-483 584
mobile: 06-143 66 783
pieter.neerincx at wur.nl






More information about the MOBY-dev mailing list