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

Last change on this file since 836 was 836, checked in by slederer, on Mar 12, 2010 at 2:28:51 PM

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.