Skip Menu |

This queue is for tickets about the SOAP-WSDL CPAN distribution.

Report information
The Basics
Id: 35873
Status: resolved
Priority: 0/
Queue: SOAP-WSDL

People
Owner: Nobody in particular
Requestors: ian.sillitoe [...] googlemail.com
Cc:
AdminCc:

Bug Information
Severity: (no value)
Broken in: (no value)
Fixed in: 2.00.04



CC: bug-SOAP-WSDL [...] rt.cpan.org
Subject: SOAP::WSDL -- Can't locate object method "set_Action" via package "SOAP::WSDL::OpMessage"
Date: Wed, 14 May 2008 11:50:21 +0100
To: martin.kutter [...] fen-net.de
From: "Ian Sillitoe" <ian.sillitoe [...] googlemail.com>
Hi Martin, Thanks for all your work on SOAP::WSDL - you're doing an excellent job. I got your email address from CPAN docs - if you prefer some other mode of communication (mailing-list, forum?) please let me know. I'm trying to use SOAP::WSDL to test some webservices that I have set up (and to provide a perl example of "how to set up WS client" on our web pages). My problem: when connecting to my WSDL, I get the following error from wsdl2perl (and when using SOAP::WSDL directly): % wsdl2perl.pl -b CathG3D 'http://ws.cathdb.info/services/CathG3D?wsdl' Can't locate object method "set_Action" via package "SOAP::WSDL::OpMessage" at /opt/perl-5.8.8/lib/site_perl/5.8.8/SOAP/WSDL/Base.pm line 123 at line 525 at /opt/perl-5.8.8/lib/site_perl/5.8.8/SOAP/WSDL/Expat/Base.pm line 76 SOAP::WSDL version 2.00.01 perl v5.8.8 Linux bsmlx43 2.6.18-53.1.14.el5 #1 SMP Wed Mar 5 11:37:38 EST 2008 x86_64 x86_64 x86_64 GNU/Linux The WSDL is automatically generated by WebServices Application Server from wso2 (http://www.wso2.org/wsas) so I don't have much control of exactly what syntax is used. However, I've run tests on this WSDL with SOAPui ( www.soapui.com) and I can query the server via this WSDL without any problems. So I'm trying to work out whether the problem is down to the WSDL or SOAP::WSDL. Based on the error, it seems this is caused by the "Action" attribute in the operation message: <wsdl:portType name="CathG3DPortType"> <wsdl:operation name="get_PdbSuperfamilies_for_GoTerm"> <wsdl:input message="ns1:get_PdbSuperfamilies_for_GoTermRequest" * wsaw:Action*="urn:get_PdbSuperfamilies_for_GoTerm"/> <wsdl:output message="ns1:get_PdbSuperfamilies_for_GoTermResponse" * wsaw:Action*="urn:get_PdbSuperfamilies_for_GoTermResponse"/> </wsdl:operation> ... </wsdl:portType> I'm not sure whether this comes down to a missing attribute in SOAP::WSDL::OpMessage or a non-standard WSDL. I'm really no WSDL expert, but the page at http://www.w3.org/TR/ws-addr-wsdl/#explicitaction *seems* to suggest this syntax is valid. So, assuming this WSDL syntax is valid, then I "fixed" my local copy of SOAP::WSDL with the following patch: diff -u /home/bsm3/sillitoe/lib/perl5/SOAP/WSDL/OpMessage.pm /opt/perl-5.8.8/lib/site_perl/5.8.8/SOAP/WSDL/OpMessage.pm --- /home/bsm3/sillitoe/lib/perl5/SOAP/WSDL/OpMessage.pm 2008-05-14 11:16:43.000000000 +0100 +++ /opt/perl-5.8.8/lib/site_perl/5.8.8/SOAP/WSDL/OpMessage.pm 2008-05-14 11:26:15.000000000 +0100 @@ -10,6 +10,5 @@ my %header_of :ATTR(:name<header> :default<[]>); my %headerfault_of :ATTR(:name<headerfault> :default<[]>); my %message_of :ATTR(:name<message> :default<()>); -my %action_of :ATTR(:name<Action> :default<[]>); 1; On the surface, this seems to work fine now (although I'm still checking). % wsdl2perl.pl -b CathG3D 'http://ws.cathdb.info/services/CathG3D?wsdl' Creating typemap class MyTypemaps/CathG3D.pm Creating interface class MyInterfaces/CathG3D/CathG3DSOAP11port_https.pm Creating interface class MyInterfaces/CathG3D/CathG3DSOAP11port_http1.pm If you agree with this patch, then it would be great if it could be pushed out into the next version as this means that I can include SOAP::WSDL as an example client in my documentation. I would be grateful if you could let me know what you decide either way as I'm desperately trying to get all this documentation together for an upcoming release. Best wishes, Ian Sillitoe CATH Team, UCL
From: kutterma [...] users.sourceforge.net
Hi Ian, as you have guessed, the non-standard XML attributes cause the error. I don't think the patch attached is an appropriate solution - it would probably be better to ignore all non-standard attributes (possibly with a warning of them being ignored). I'll add ignoring (and warning about) unknown attributes in the next release. Martin
Subject: Re: [rt.cpan.org #35873] SOAP::WSDL -- Can't locate object method "set_Action" via package "SOAP::WSDL::OpMessage"
Date: Thu, 22 May 2008 13:21:01 +0100
To: bug-SOAP-WSDL [...] rt.cpan.org
From: "Ian Sillitoe" <ian.sillitoe [...] googlemail.com>
Hi Martin, Thanks for the reply. Yup, sorry - I realised my patch wasn't a terribly good solution shortly after I sent it. Providing warnings sounds like an excellent plan though (perhaps with a config option on being strict to upgrade the warnings to errors?). Cheers, Ian On Thu, May 22, 2008 at 1:02 PM, Martin Kutter via RT < bug-SOAP-WSDL@rt.cpan.org> wrote: Show quoted text
> > <URL: http://rt.cpan.org/Ticket/Display.html?id=35873 > > > Hi Ian, > > as you have guessed, the non-standard XML attributes cause the error. > > I don't think the patch attached is an appropriate solution - it would > probably be better to ignore all non-standard attributes (possibly with > a warning of them being ignored). > > I'll add ignoring (and warning about) unknown attributes in the next > release. > > Martin > > > > >