> It also means you need a different WSDL file per database you want
> to talk. Many clients pre-compile the WSDL file. The SOAP-Action is
> normally taken from the WSDL file.
A complete WSDL description also includes the servers IP Address so in
practice you need slightly different ones or to make use of the schema
includes.
> So using SOAP-Action to pick
> the database means you cannot write a generic library (using some
> of the SOAP toolkits) that takes database name as an argument.
But the whole point is that we do not want to pass the database name as
an argument.
> But then what about server name - should you be able to select
> a server and database to search? Should these be parameters to
requests
> too? Or hard coded into a client library? My current implementation
> ended up getting the Z39.50 server name and database name from the
> end point URL.
No - we shouldn't be passing Z39.50 database name or server in a ZNG
request anywhere!!! Remember that some maybe putting ZNG directly onto a
database rather than a ZNG gateway to Z39.50.
To search a ZNG datasource you need to connect to a specific Web
Service. In SOAP over HTTP terms, the Web Service you connect to is
identified by the URL endpoint and the HTTP SOAP-Action header. Either
of these or both can be used to point to an appropriate instance of the
ZNG server code which has the Z39.50 server and database name hardcoded
or read from configuration. This code should never need to parse the URL
or SOAP-Action header. The toolkit will do this and call the appropriate
code.
Matthew
|