#!/usr/bin/perl use soap::transport::http; use world; soap::transport::http::cgi dispatch_to('world') -> handle;
我们要做的就只有这些,剩下的部分全都交给soap模块来处理就行了。你必须为每个你打算呼叫的soap类别都分别写一个类似上面的cgi程序。此外要注意的是,在上面的 dispatch_to() 方法里面所用到的参数就是你想要连结的soap类别的名称。在编写soap类别的时候要注意这些类别必须和其它类别一样,一定要有一个名为 new 的方法(method)$self来做为呼叫其它方法时所使用的第一个参数。把包装名称(package name)放在程序代码的第一行,然后把这个模块以 .pm 做为扩展名储存起来(请参考前面提到的world类别范例程序)。
soap::lite 也可以根据所要求的名称来动态加载不同的模块,这项功能可以让我们编写一个能够加载某个目录中任何一个模块的cgi程序。这种做法比较缺乏安全性,而且也比较不容易控制究竟要加载哪个模块,不过把各个soap模块统一放置在同一个目录下,在档案管理上的确会比较方便。要动态加载不同的soap模块,我们必须把相关的 use 叙述拿掉,并且把存放soap模块档案的目录路径当成dispatch_to() 方法的第一个参数:
#!/usr/bin/perl use soap::transport::http; soap::transport::http::cgi dispatch_to('/home/httpd/soap_modules/') -> handle;