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

Re: WSDL::Generator

Expand Messages
  • ritun2000
    Hello Pierre & others, I just tried implementing the below for generating a wsdl for a service that has been implemented using SOAP::Lite without Apache mod
    Message 1 of 4 , Jun 4, 2002
    • 0 Attachment
      Hello Pierre & others,

      I just tried implementing the below for generating a wsdl for a
      service that has been implemented using SOAP::Lite without Apache mod
      perl support.
      I feel the wsdl generated is a little buggy. This is one of such areas:
      <port
      name="http://dd.netcore.co.in/OutlinerServicehttp://dd.netcore.co.in/Outli
      nerServicePort"
      binding="tns:http://dd.netcore.co.in/OutlinerServicehttp://dd.netcore.co.in/Outl
      inerServiceBinding">

      Here is the info provided to WSDL::Generator:

      my $init = {

      'schema_namesp' => 'http://dd.netcore.co.in/OutlinerService.xsd',

      'services' => 'http://dd.netcore.co.in/OutlinerService',

      'service_name' => 'http://dd.netcore.co.in/OutlinerService',

      'target_namesp' =>
      'http://dd.netcore.co.in/outlinerbin/webservices/outliner.cgi',

      'documentation' => 'Simple SOAP Service to render an outline to html.',

      'location' =>
      'http://dd.netcore.co.in/outlinerbin/webservices/outliner.cgi'

      };

      Any pointers on what is going wrong. Any changes required apart from
      the ones listed in the below HOW-TO??

      Regards,
      Ritu
      --- In soaplite@y..., "Pierre Denis" <pdenis@f...> wrote:
      > Here is a mini-How to done by Joe Breeden [jbreeden@e...]:
      >
      >
      > How To
      > Produce a WSDL schema from a SOAP::Lite/Apache/mod_perl web service.
      >
      > In this example a web service that exposes two methods - Hello and
      > GoodBye (Could you respect example that did include Hello World
      as the
      > basis?). One method, Hello, accepts a string as an argument
      (presumably
      > the first name of the person to greet) and returns a string with
      "Hello,
      > " prepended to the argument and "\n" added to the end. The other,
      > GoodBye, accepts a string as an argument (presumably the first
      name of
      > the person to greet) and returns a string with "Goodbye, "
      prepended to
      > the argument and "\n" added to the end.
      >
      > Because these examples are so short and so you will know exactly
      what is
      > going on, the complete setup including source code is included here
      > before WSDL::Generator is used to build a WSDL schema.
      >
      > Configuration
      >
      > In your perl.conf file you should see the following directive:
      >
      > <Location /world> SetHandler perl-script PerlHandler CLASS::World
      > </Location>
      >
      > Which will point the appropriate CLASS::World.pm file on you
      system. You
      > could include this module in one of the standard directories
      searchable
      > by @INC or you could add a "use lib" statement to your
      startup.pl script
      > to add the directory containing the module to @INC.
      >
      > CLASS::World.pm
      >
      > package CLASS::World;
      >
      > use SOAP::Transport::HTTP;
      >
      > my $server = SOAP::Transport::HTTP::Apache ->
      > dispatch_to('WorldFunctions');
      >
      > sub handler { $server->handler(@_); }
      >
      > package WorldFunctions;
      >
      > sub new { bless {}, shift; }
      >
      > sub Hello { my ($s, $name) = @_;
      >
      > return 'Hello, ' . $name . "\n";
      > }
      >
      > sub GoodBye { my ($s, $name) = @_;
      >
      > return 'Goodbye, ' . $name . "\n";
      > }
      >
      > 1;
      >
      > As you can see this is a really generic and straightforward
      service. If
      > everything is configured correctly and you get no errors when
      you start
      > Apache, you should be able to access the methods in this service
      with
      > the following client script. Replace *host.your.domain* with the
      > hostname of your SOAP server.
      >
      > world_client.pl
      >
      > #!/usr/bin/perl
      >
      > use SOAP::Lite +autodispatch => uri=>"WorldFunctions",
      > proxy=>'http://host.your.domain/world';
      >
      > print Hello('Joe');
      >
      > print GoodBye('Joe');
      >
      > Generating the WSDL schema.
      >
      > Using WSDL::Generator, one can quickly generate the WSDL schema
      for a
      > particular SOAP service. You will need to copy the Perl module
      for the
      > service to a directory and modify it as follows.
      >
      > SOAP Service Perl module
      >
      > # package CLASS::World;
      >
      > # use SOAP::Transport::HTTP;
      >
      > # my $server = SOAP::Transport::HTTP::Apache
      >
      > # -> dispatch_to('WorldFunctions');
      >
      > # sub handler {
      >
      > # $server->handler(@_);
      >
      > # }
      >
      > package WorldFunctions;
      >
      > sub new { bless {}, shift; }
      >
      > sub Hello { my ($s, $name) = @_;
      >
      > return 'Hello, ' . $name . "\n";
      > }
      >
      > sub GoodBye { my ($s, $name) = @_;
      >
      > return 'Goodbye, ' . $name . "\n";
      > }
      >
      > 1;
      >
      > Save this file as WorldFunctions.pm. The following script will call
      > WSDL::Generator, build the WSDL schema and output it to the screen.
      >
      > #!/usr/bin/perl
      >
      > use WSDL::Generator;
      >
      > my $init = {
      >
      > 'schema_namesp' =>
      > 'http://host.your.domain/world/WorldFunctions.xsd',
      >
      > 'services' => 'WorldFunctions',
      >
      > 'service_name' => 'WorldFunctions',
      >
      > 'target_namesp' => 'http://host.your.domain/world/',
      >
      > 'documentation' => 'Simple Hello World SOAP Service.',
      >
      > 'location' => 'http://host.your.domain/world'
      >
      > };
      >
      > my $w = WSDL::Generator->new($init);
      >
      > WorldFunctions->Hello('Joe');
      >
      > WorldFunctions->GoodBye('Joe');
      >
      > print $w->get(WorldFunctions);
      >
      > You should save this script in the same directory as the
      > WorldFunctions.pm Perl module file. The $init hash reference
      above looks
      > a little confusing for those used to SOAP::Lite. That is because
      > SOAP::Lite save the programmer from having to know these types
      of things
      > in order to build a working SOAP service and/or client. Where to
      plug
      > the components of the SOAP::Lite constructor into the keys of
      the $init
      > hashref are explained below:
      >
      > * 'schema_namesp' => This is URL of where the WSDL schema will
      > eventually live.
      > * 'services' => This is the uri portion of the SOAP::Lite
      constructor.
      > * 'service_name' => This is the uri portion of the SOAP::Lite
      > constructor.
      > * 'target_namesp' => This is the proxy portion of the SOAP::Lite
      > constructor.
      > * 'documentation' => A scalar or literal that contains the
      documentation
      > for your exposed services.
      > * 'location' => This is the proxy portion of the SOAP::Lite
      constructor.
      > Conclusion
      >
      > With a little work, it is possible to build web services with
      > SOAP::Lite/Apache/mod_perl that can be utilized by programming
      languages
      > other than Perl.
      >
      > Regards
      >
      > -----Original Message-----
      > From: NinoSavatte [mailto:ninosavatte@y...]
      > Sent: 29 May 2002 18:04
      > To: soaplite@y...
      > Subject: [soaplite] WSDL::Generator
      >
      >
      > I'm playing around with SOAP::Lite and WSDL::Generator and I must
      > admit I'm in over my head. Still, I managed to create a server and
      > client that lookup our Primary and Secondary on-call analysts names
      > and numbers. I'd like to generate the WSDL for the service but I'm
      > not quite understanding the usage of the module as explained in the
      > POD.
      >
      > Assuming a client that looks like this...
      >
      > my $result = SOAP::Lite
      > -> uri('http://dsmqsupport-test/OnCall')
      > -> proxy('http://dsmqsupport-test/cgi-bin/oncall-lookup.pl')
      > -> Lookup();
      >
      > print $result->valueof
      > ('//Envelope/Body/LookupResponse/OnCall/Primary/First'), "\n";
      > print $result->valueof
      > ('//Envelope/Body/LookupResponse/OnCall/Secondary/First'), "\n";
      > print "\n";
      >
      > ...what would the code to execute WSDL::Generator look like?
      >
      > Thanks -- T.Rob
      >
      >
      >
      > To unsubscribe from this group, send an email to:
      > soaplite-unsubscribe@y...
      >
      >
      >
      > Your use of Yahoo! Groups is subject to
      http://docs.yahoo.com/info/terms/
    Your message has been successfully submitted and would be delivered to recipients shortly.