# jeder request eigener Thread ?



## Grasstampfer (19. Mai 2008)

Hi,

versuche gerade das servlet konzept zu verstehen... ich hoffe ihr koennt mir hier helfen.

Ich habe verschiedene Servlets als war aufm Jboss deployed. Meine Frage ist - hat jeder Request an das selbe bzw an unterschiedliche Servlets seinen eigenen Thread ?

Soviel ich weiss gibt es pro Session stehts eine Instanz eines Servlets - richtig ? 

Was ist wenn ich nun ueber versch. Http Requests zwei servlets anspreche - laufen die in untersch. Threads oder teilen sie sich einen ? 

Das ist in der hinsicht fuer mich interessant, als dass ich ueber ajax request an die servlets schicke und ich ungern will, dass diese sich gegenseitig lahmlegen.

Danke euch.


----------



## maki (19. Mai 2008)

> Ich habe verschiedene Servlets als war aufm Jboss deployed.


Wenn du keine EJBs hast, brauchst du keinen JBoss, der normale Tomcat reicht und ist dann die viel bessere Alternative.



> Soviel ich weiss gibt es pro Session stehts eine Instanz eines Servlets - richtig ?


Falsch.
Ein Thread pro Request, aber nur ein einziges Servlet, Sessions haben da nix mit zu tun.



> Was ist wenn ich nun ueber versch. Http Requests zwei servlets anspreche - laufen die in untersch. Threads oder teilen sie sich einen ?


Jeweils ein eigener Thread.



> Das ist in der hinsicht fuer mich interessant, als dass ich ueber ajax request an die servlets schicke und ich ungern will, dass diese sich gegenseitig lahmlegen.


Tja, so ist das in einem Multithreaded Environment, musst threadsicher programmieren.


----------



## Grasstampfer (20. Mai 2008)

maki hat gesagt.:
			
		

> > Ich habe verschiedene Servlets als war aufm Jboss deployed.
> 
> 
> Wenn du keine EJBs hast, brauchst du keinen JBoss, der normale Tomcat reicht und ist dann die viel bessere Alternative.


momentan habe wir auf der arbeit nur den jboss aufgrund anderer projekte. Warum genau waere hierfuer der Tomcat wesentlich besser ?



			
				maki hat gesagt.:
			
		

> > Soviel ich weiss gibt es pro Session stehts eine Instanz eines Servlets - richtig ?
> 
> 
> Falsch.
> Ein Thread pro Request, aber nur ein einziges Servlet, Sessions haben da nix mit zu tun.


mhm - mal schaun ob ich das richtig verstanden habe.

jeder request arbeitet in einem eigenen Thread - alle Threads bzw Requests arbeiten aber auf dem gleichen Servlet ?

Bsp: Es gibt Servlet A, das von Servlet B erbt. Und es gibt Servlet C, was auch von Servlet B erbt. 
Nun kommt Request 1 an das Servlet A und Request 2 an das Servlet C... beide requests arbeiten in untersch. Threads auf untersch. Servlets.
Waehrend Request 1 noch laeuft kommt Request 3 auch an Servlet A... Request 1 und Request 3 arbeiten in untersch. Threads auf dem gleichen Servlet 

richtig ?



> Das ist in der hinsicht fuer mich interessant, als dass ich ueber ajax request an die servlets schicke und ich ungern will, dass diese sich gegenseitig lahmlegen.


Tja, so ist das in einem Multithreaded Environment, musst threadsicher programmieren.[/quote]
jo das ist dann klar 

danke dir


----------



## maki (20. Mai 2008)

> momentan habe wir auf der arbeit nur den jboss aufgrund anderer projekte. Warum genau waere hierfuer der Tomcat wesentlich besser ?


JBoss hat auch einen Tomcat, aber eine "embedded" Version, andere Verzeichnissstruktur etc. pp.
Tomcat an sich ist viel leichtgewichtiger als JBoss, einfacher zu entwickeln, bessere IDE Unterstützung (WTP in Eclipse), einfacherer Deploy.
Ohne EJBs gibt es keinen Grund den JBoss herzunehmen, umständlicher als nötig.



> jeder request arbeitet in einem eigenen Thread - alle Threads bzw Requests arbeiten aber auf dem gleichen Servlet ?


Ja.
Es gibt nur eine Servletinstanz pro Servletmapping (in der web.xml) und das ist gut so.
Alle Request schlagen mit einem eigenen Threads in diesem Servlet auf, deswegen ist da besondere Vorsicht geboten bez. geteilter Ressourcen, und sei es auch nur Instanzvariablen (wenn, dann nur lesen!).



> Bsp: Es gibt Servlet A, das von Servlet B erbt. Und es gibt Servlet C, was auch von Servlet B erbt.
> Nun kommt Request 1 an das Servlet A und Request 2 an das Servlet C... beide requests arbeiten in untersch. Threads auf untersch. Servlets.
> Waehrend Request 1 noch laeuft kommt Request 3 auch an Servlet A... Request 1 und Request 3 arbeiten in untersch. Threads auf dem gleichen Servlet
> 
> richtig ?


k.A. warum du da Vererbung mit rein bringst (), aber im Prinzip ja.


----------



## Grasstampfer (20. Mai 2008)

maki hat gesagt.:
			
		

> k.A. warum du da Vererbung mit rein bringst (), aber im Prinzip ja.


oeh - ja... gute frage ;-)

danke dir vielmals fuer die information....


----------

