from ZSI.ServiceContainer import ServiceContainer, SOAPRequestHandler from ZSI.schema import LocalElementDeclaration, ElementDeclaration, TypeDefinition, GTD, GED from VanHelsing_server import VanHelsing from VanHelsing_types import ns0 import VanHelsingWrapper import sys ResourceInfo= GTD("http://www.dass-it.de/VanHelsing/", "ResourceInfo")(None).pyclass() listResourcesType= GTD("http://www.dass-it.de/VanHelsing/", "listResourcesType")(None).pyclass() #print dir(ResourceInfo) class VanSOAPRequestHandler(SOAPRequestHandler): def do_GET(self): wsdl=open("VanHelsing.wsdl").read() self.send_xml(wsdl) def AsServer(port=80, services=(), RequestHandlerClass=SOAPRequestHandler): address = ("127.0.0.1",port) sc = ServiceContainer(address, RequestHandlerClass=RequestHandlerClass) for service in services: path = service.getPost() sc.setNode(service,path) sc.serve_forever() class RealVanHelsing(VanHelsing): def soap_listResources(self, ps, **kw): request,response=VanHelsing.soap_listResources(self,ps) resType=request.get_element_resourceType() resDirector=request.get_element_director() result=VanHelsingWrapper.getResources(resDirector,resType) rList=[] for rid,name in result: resInf=response.new_resourceList() resInf.set_element_director(resDirector) resInf.set_element_resId(rid) resInf.set_element_resType(resType) resInf.set_element_resName(name) rList.append(resInf) response.set_element_resourceList(rList) return request,response if 1: if len(sys.argv) < 2: filename="test.conf" else: filename=sys.argv[1] VanHelsingWrapper.loadDirectorConfig(filename) AsServer(port=8080,services=[ RealVanHelsing() ], RequestHandlerClass=VanSOAPRequestHandler)