[Catalyst] Catalyst::Controller::SOAP "no operation `index' for portType" error

Zbigniew Lukasiak zzbbyy at gmail.com
Fri Nov 28 09:46:36 GMT 2008


On Thu, Nov 27, 2008 at 10:10 PM, Ian Sillitoe <ian at sillit.com> wrote:
> I've been playing with this recently. What have you actually defined your
> endpoint to be in the WSDL?
>
>   <definition>
>
>       ...
>
>     <service name="MyService">
>         <port name="MyServicePort" binding="tns:MyServiceBinding">
>            <soap:address location="http://example.com/service"/>
>
>         </port>
>     </service>
>   </definition>

Here is the definition:


<service name="SMS">
 <documentation>gSOAP 2.7.12 generated service definition</documentation>
 <port name="SMS" binding="tns:SMS">
     <SOAP:address location="http://localhost:1234/sms/"/>
 </port>
</service>


>
> I think the example in the synopsis shows you how to set up an endpoint for:
>
>    /service/index
>
> Which then dispatches to, e.g.
>
>    /service/operation1
>    /service/operation2
>
> Did you mean that? The usual behaviour is for the endpoint to be set to the
> root path - e.g.
>
>    /service
>
> If this is what you meant then:
>
>    sub index :Path('') SOAP('RPCEndpoint') {}
>
> or just use one of the subclassed controllers which sets this default
> behaviour for you (depending on your style of WSDL)
>
>    use base qw/C::C::SOAP::RPC/;
>    # or
>    use base qw/C::C::SOAP::DocumentLiteralWrapped/;
>

Hmm - the subclassed controllers work, but the original one with 'sub
index' does not, no matter what I try (:Local, :Path('')).

When I read the code for C::C::SOAP::DLW it has:

sub rpc_endpoint :Path('') :ActionClass('SOAP::DocumentLiteralWrapped') { };

instead of index.


-- 
Zbigniew Lukasiak
http://brudnopis.blogspot.com/
http://perlalchemy.blogspot.com/



More information about the Catalyst mailing list