Hi Ron,
Good questions!
>> I can Set the path with the login by the company name.
yes, step 1 is to match the user to a data set. The most obvious way of doing this is via the login.
>> I am trying to understand how the server handles each file request.
>> Does the server keep the files open ?
no.
>> Are they opened on a thread for each session?
no.
>> Are they open and closed for each request?
yes. (conditionally of course - ie it doesn't open _all_ the files, only the ones which are needed.)
>> DO I need to store the fully qualified file name in a session variable and send it with each request?
no. what you do, in the WebHandler, in the ProcessLink method, BEFORE the parent call, is set ALL your file path names. You don't open the file or anything, just set the name.
Of course the variable you use for full path names MUST (I repeat MUST) be threaded.
Then when (if) the file is opened later on, the full path name is set.
Incidentally, you should set it from a SessionQueue variable, ideally not a GetValue setting. If you are passing in some stuff via the URL, then ideall use StoreValue to store this in the SessionQueue, before then using the SessionQueue variable when setting the file's path.
ie
self.StoreValue('dataset')
customersfilename = p_web.GSV('dataset')
This works better for those (possibly dynamic ajax) requests where the dataset is not passed. In that case the user gets their "most recently used" dataset.
Cheers
Bruce