source: vanHelsing/trunk/src/VanHelsingServer.py @ 836

Last change on this file since 836 was 836, checked in by slederer, 13 years ago

Funktionierender SOAP-Server mit einer Methode

File size: 1.9 KB
Line 
1from ZSI.ServiceContainer import ServiceContainer, SOAPRequestHandler
2from ZSI.schema import LocalElementDeclaration, ElementDeclaration, TypeDefinition, GTD, GED
3from VanHelsing_server import VanHelsing
4from VanHelsing_types import ns0
5import VanHelsingWrapper
6import sys
7
8ResourceInfo= GTD("http://www.dass-it.de/VanHelsing/", "ResourceInfo")(None).pyclass()
9listResourcesType= GTD("http://www.dass-it.de/VanHelsing/", "listResourcesType")(None).pyclass()
10#print dir(ResourceInfo)
11
12class VanSOAPRequestHandler(SOAPRequestHandler):
13    def do_GET(self):
14        wsdl=open("VanHelsing.wsdl").read()
15        self.send_xml(wsdl)
16
17def AsServer(port=80, services=(), RequestHandlerClass=SOAPRequestHandler):
18    address = ("127.0.0.1",port)
19    sc = ServiceContainer(address, RequestHandlerClass=RequestHandlerClass)
20    for service in services:
21        path = service.getPost()
22        sc.setNode(service,path)
23    sc.serve_forever()
24
25
26class RealVanHelsing(VanHelsing):
27    def soap_listResources(self, ps, **kw):
28        request,response=VanHelsing.soap_listResources(self,ps)
29
30        resType=request.get_element_resourceType()
31        resDirector=request.get_element_director()
32       
33        result=VanHelsingWrapper.getResources(resDirector,resType)
34
35        rList=[]
36
37        for rid,name in result:
38
39            resInf=response.new_resourceList()
40            resInf.set_element_director(resDirector)
41            resInf.set_element_resId(rid)
42            resInf.set_element_resType(resType)
43            resInf.set_element_resName(name)
44            rList.append(resInf)
45
46        response.set_element_resourceList(rList)
47
48        return request,response
49
50if 1:
51    if len(sys.argv) < 2:
52        filename="test.conf"
53    else:
54        filename=sys.argv[1]   
55
56    VanHelsingWrapper.loadDirectorConfig(filename)
57
58    AsServer(port=8080,services=[ RealVanHelsing() ], RequestHandlerClass=VanSOAPRequestHandler)
59
Note: See TracBrowser for help on using the repository browser.