# getServletConfig().getInitParameter(.) Frage



## wolfgke (9. Apr 2008)

Hallo,
meine web.xml soll in Zukunft folgendes beinhalten:


```
<servlet>
    <servlet-name>index</servlet-name>
    <servlet-class>MeinEinzigesServlet</servlet-class>
    <init-param>
      <param-name>page</param-name>
      <param-value>index</param-value>
    </init-param>
  </servlet>
  <servlet>
    <servlet-name>login</servlet-name>
    <servlet-class>MeinEinzigesServlet</servlet-class>
    <init-param>
      <param-name>page</param-name>
      <param-value>login</param-value>
    </init-param>
  </servlet>
```

Warum es nur ein einziges Servlet geben soll - zu den Gründen möchte ich mich nicht im Detail äußern.

Meine Frage ist vielmehr folgende: besteht die Gefahr, dass Tomcat (oder was auch immer der Application Server ist) aus irgendeinem Grund möglicherweise nur eine Instanz des Servlets erzeugt, so dass der "falsche" Parameter page übergeben wird? Ich habe dabei noch im Hinterkopf, dass es in Bezug auf JSP und mehrere Instanzen ein paar Dinge gab, die ich in Bezug auf Lebenszyklus (dass nicht für jeden User notwendig eine eigene Instanz geöffnet wird etc.) ein paar Probleme hervorrufen - daher frage ich, ob ich davon ausgehen kann, dass bei unterschiedlichen init-parametern notwendig unterschiedliche Instanzen vorliegen.

Herzlichen Dank
wolfgke[/code]


----------



## wolfgke (9. Apr 2008)

Im Titel meinte ich natürlich "getInitParameter(.) Frage" - sorry :-(


----------



## HLX (10. Apr 2008)

So ist es. Der Container entscheidet über die Anzahl der Instanzen des Servlets. Die Anzahl ist vollkommen benutzerunabhängig bzw. mehrere Benutzer können sich eine Servlet-Instanz teilen. Eine Benutzersitzung ist schließlich eine ganze Weile gültig, jedoch wird das Servlet nur einen Bruchteil dieser Zeit genutzt. Von daher macht es keinen Sinn Servlet-Instanzen benutzerabhängig zu erzeugen.

Daher sind benutzerabhängige Informationen an der Session zu halten.


----------



## unkreativ` (10. Apr 2008)

Ich glaub es geht eher darum, ob der Servlet-Container in diesem Fall nur eine Instanz des Servlets für die beiden Deklarationen verwenden darf und das ist definitiv nicht der Fall, siehe Servlet Spezifikation "SRV2.2 Number of Instances": 
"[...] For a servlet not hosted in a distributed environment (the default), the servlet
container must use only one instance per servlet declaration. [...]"

grüße,
unkreativ


----------



## maki (10. Apr 2008)

Pro Servlet Deklaration ein Servlet, du hast 2 deklarationen.

Eines mit dem Namen index, eines mit dem Namen login, macht zwei INstanzen des Servlets


----------



## wolfgke (10. Apr 2008)

Danke an alle. maki und unkreativ: genau das wollte ich wissen


----------

