attempting a few answers (if you look at the sources, you probably can answer most of your answers yourself) ...
A BSFManager allows the invocation of multiple engines, whereby it caches each engine.1) Is BSFManager thread safe? Are there any rules the BSFEngines have to adhere to with regards to the thread model? Do seperate threads get seperate stack frames or seperate global variable declarations?
You can create multiple BSFManagers which would have their own cached engine instances.
You can create BSFEngine-instances individually.
3) What happens if two threads run the following code at the same time?If working with the same instance of BSFManager they would overwrite each other.
String language = manager.getLangFromFilename( scriptFile.getName() ); manager.declareBean( "request", request, request.getClass() ); manager.declareBean( "response", response, response.getClass() ); manager.exec( language, scriptFile.getPath(), 0, 0, script );
Will calling declareBean() result in two different instance variables, or will they overwrite each other?
4) Calling exec() twice retains state from theHave you tried different instances of BSFManagers or BSFEngine for that matter?
previous run.
BSFManager.exec( "jython", "", 0, 0, "i = 3" ); BSFManager.exec( "jython", "", 0, 0, "print i" );
That will print out 3. In a server application you
don't really want retention of state since it could
result in unpredictable behavior. Are exec() and
eval() the same? The exec() method I expect to simply
fire off a script and not retain state between calls
or threads, but eval() I expect should retain state. Sort of like interactive programs would use eval(),
but users who want to run a script and retain no state
could use exec().
Hope that helps a little,
---rony
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
