why,aMethod's transaction attribute is REQUIRED ?
It indicates 3 instances of the servlet will get create on the loading of servlet
The element load-on-startup
indicates that this servlet should be loaded (instantiated and have its init() called) on
the startup of the Web application. The element content of this element must be an
integer indicating the order in which the servlet should be loaded. If the value is a
negative integer, or the element is not present, the container is free to load the servlet
whenever it chooses. If the value is a positive integer or 0, the container must load
and initialize the servlet as the application is deployed. The container must
guarantee that servlets marked with lower integers are loaded before servlets
marked with higher integers. The container may choose the order of loading of
servlets with the same load-on-startup value.
Just install a little hook which will provide unique user agent for every instance of a browser.
So, whether there is one browser instance or multiple browser instances for a session, it is still the same session as all the browser instances share the same cookie.
I haven't tried it, but I would think that to get a separate session per browser would require the user to log in again using a separate browser instance.