Frage

Ich bekomme hier ein wenig verwirrt. In unserer Anwendung haben wir ein paar Servlets definiert. Hier ist der Auszug aus dem web.xml für eine der Servlets:

<servlet>
    <servlet-name>AxisServlet</servlet-name>
    <display-name>Apache-Axis Servlet</display-name>
    <servlet-class>com.foo.framework.axis2.http.FrameworkServlet</servlet-class>
    <load-on-startup>0</load-on-startup>
</servlet> 

Wie pro meinem Verständnis der Wert für die <load-on-startup> hat eine positive ganze Zahl sein, um für sie automatisch geladen werden. Ich schaute auf Google, aber die Antworten, die ich über nur meine Verwirrung kam hinzu.

War es hilfreich?

Lösung

Resin 3.0 Dokumente dieses Verhalten:

  

load-on-startup kann einen (optional) Integer-Wert angeben. Ist der Wert 0 oder größer ist,   es gibt einen Auftrag für Servlets geladen werden, Servlets mit höheren Zahlen bekommen   geladen, nachdem Servlets mit niedrigeren Zahlen.

Das JSP 3.1 spec (JSR 340) sagt dazu auf Seite 14-160 :

  

Das Element load-on-startup zeigt an, dass dieses Servlet geladen werden soll (instanziiert   und haben ihre   init () aufgerufen) auf dem Start der Webanwendung. Das Element Inhalt dieser   Element muss eine ganze Zahl sein, die Reihenfolge anzeigt, in der das Servlet sein sollte   geladen. Wenn der Wert eine negative ganze Zahl ist, oder das Element nicht vorhanden ist, die   Container ist frei, das Servlet zu laden, wann immer es wählt. Wenn der Wert eine positive   ganze Zahl oder 0 ist, muss der Container laden und die Servlet-Initialisierung als die Anwendung ist   im Einsatz. Der Behälter muss gewährleisten, dass Servlets mit niedrigeren Zahlen markiert   werden, bevor mit höheren Zahlen markiert Servlets geladen. Der Behälter kann wählen   die Reihenfolge der Beladung von Servlets mit dem gleichen Wert load-on-startup.

Sie wollen wahrscheinlich nicht nur die JSR, sondern auch in der Dokumentation Ihres Web-Container zu überprüfen. Es kann Unterschiede

Andere Tipps

Kurze Antwort : Wert> = 0 bedeutet, dass das Servlet geladen wird, wenn die Web-Anwendung bereitgestellt wird, oder wenn der Server gestartet wird. Wert <0:. Servlet geladen wird, wenn der Behälter fühlt sich an wie

Lange Antwort (von der Spezifikation):

  

Das Last-on-startup-Element gibt an, dass diese   Servlet sollte geladen (instanziiert werden und haben   seine init () aufgerufen) auf dem Start der Bahn   Anwendung. Die optionalen Inhalte dieser   Element muss eine ganze Zahl sein, die die Reihenfolge in   der sollte das Servlet geladen werden. Wenn der Wert   eine negative ganze Zahl ist, oder das Element nicht   Gegenwärtig ist der Behälter frei, das Servlet zu laden   wann immer sie will. Wenn der Wert eine positive   128   ganze Zahl oder 0 ist, muss der Behälter laden und   Initialisieren des Servlets als die Anwendung ist   im Einsatz. Der Behälter muss garantieren, dass   Servlets mit niedrigeren Zahlen markiert sind loaded   vor Servlets mit höheren Zahlen gekennzeichnet. Das   Behälter kann die Reihenfolge der Beladung wählen   Servlets mit dem gleichen Last-on-Start-up-Wert.

Es gibt an, dass das Servlet nicht gestartet werden, bis eine Anforderung für den Zugriff versucht.

Wenn load-on-startup größer oder gleich dann auf Null, wenn der Behälter beginnt wird es, dass die Servlet in aufsteigender Reihenfolge der Last beim Start Startwert Sie dort setzen (dh 0, 1, dann 2, dann 5, dann 10 und usw.).

Servlet-Lebenszyklus

  

Der Lebenszyklus eines Servlets wird vom Container gesteuert, in dem das Servlet bereitgestellt wurde. Wenn eine Anforderung an ein Servlet abgebildet wird, führt der Container die folgenden Schritte aus.

     
      
  1. Wenn eine Instanz des Servlets nicht existiert, die Web-Container:

         

    ein. Lädt die Servlet-Klasse

         

    b. Erstellt eine Instanz der Servlet-Klasse

         

    c. Initialisiert die Servlet-Instanz durch die init-Methode aufrufen (Initialisierung in Erstellen und Initialisieren eines Servlets )

  2.   
  3. Der Container ruft die Service-Methode, Anfrage und Antwort Objekte übergeben. Service-Methoden werden diskutiert in Writing Service Methods .

  4.   

A 0-Wert auf load-on-startup bedeutet, dass Punkt 1 ausgeführt wird, wenn eine Anforderung an diesen Servlet kommt. Andere Werte bedeuten, dass Nummer 1 bei Containerstart ausgeführt.

Wie auf andere Antwort angegeben und diese Last -on-Start Artikel Null ist akzeptabel und in der Abwesenheit irgendeines anderen Servlet diese Priorität beim Laden nehmen und während des Entfaltens geladen. Beste Verwendung von Last auf statup ist Servlets zu laden, die längere Zeit gut vor dem ersten Anfrage wie Servlets kommen zu initialisieren nimmt den Verbindungspool erstellt oder Netzwerk-Anruf tätige oder sperrige Ressource zu halten, wird dies deutlich die Antwortzeit für erste Anfrage reduzieren.

  1. Wenn der Wert für zwei Servlet gleiche ist, als sie in einer Reihenfolge geladen werden, auf dem sie in web.xml-Datei deklariert werden.
  2. , wenn 0 oder negative ganze Zahl als Servlets wird geladen, wenn Container fühlt sie zu laden.
  3. garantiert Laden, Initialisierung und Aufruf an init () -Methode des Servlet von Web-Container.
  4. Wenn kein Element für jedes Servlet ist, als sie geladen wird, wenn Web-Container, sie zu laden entscheiden.

kann es ja denselben Wert haben .... der Grund Zahlen für das Geben zu laden-on-startup ist eine Sequenz für Server zu definieren alle Servlet zu laden. Servlet mit 0 load-on-Start-Wert wird mit dem Wert 1 erster und Servlet geladen wird, danach laden.

Wenn zwei Servlets den gleichen Wert für load-on-startup haben, als sie geladen werden, wie sie in der web.xml von oben nach unten deklariert sind. das Servlet, das zuerst in der web.xml kommt wird zuerst geladen und der andere wird danach geladen werden.

-> (Abwesenheit von Last-on-Start-up) tag Vor allem, wenn jemals Servlet auf dem Server bereitgestellt wird, ist es in der Verantwortung des Servers das Servlet-Objekt erstellt.    Beispiel: Angenommen, Servlets wird in dem Server bereitgestellt, (Servlet-Objekt ist in Server nicht verfügbar) Client sendet die Anforderung an das Servlet zum ersten Mal dann Server des Servlet-Objekt mit Hilfe von Standard-Konstruktor erstellt und ruft sofort init (). Von dass wenn jemals Client die Anforderung nur Service-Methode sendet, ist bereits als Objekt erhalten ausgeführt verfügbar

Wenn load-on-Start-up-Tag wird in Deployment Descriptor verwendet:    Zum Zeitpunkt der Bereitstellung selbst erstellt der Server das Servlet-Objekt für die Basis-Servlets auf dem positiven Wert zwischen den Tags versehen in. Die Erstellung von Objekten für die Servlet-Klassen folgen 0-128  0 Nummer Servlet zuerst erstellt und gefolgt von anderen Zahlen.

Wenn wir denselben Wert für zwei Servlets in web.xml liefern dann Erstellung von Objekten wird auf der Grundlage der Position der Klassen in web.xml auch von Server zu Server unterschiedlich erfolgen.

Wenn wir einen negativen Wert schaffen zwischen der Last beim Start-Tag dann Server wird nicht das Servlet-Objekt erstellen.

Andere Szenarien, in denen Server das Objekt für Servlet erstellt.

Wenn wir beim Start-Tag in web.xml verwenden Last nicht, dann Projekt eingesetzt wird, wenn überhaupt Client die Anforderung zum ersten Mal Server sendet erstellt das Objekt und Server ist verantwortlich für seinen Lebenszyklus Methoden aufrufen. Dann, wenn ein .class- ist bereits in dem Server (Tomcat) modifiziert. wieder Client sendet für modifizierte Servlet die Anforderung aber im Falle von Katers neues Objekt wird nicht erstellt und Server-Nutzung der vorhandenen Objekt zu machen, es sei denn Neustart des Servers stattfindet. Aber in der Klasse von Web-Logik, wenn überhaupt .class-Datei wird in dem Server geändert mit aus dem Neustart des Servers, wenn es eine Anforderung empfängt, dann Server ruft die Methode destroy auf bestehende Servlet und erstellt ein neues Servlet-Objekt und ruft init () für seine initilization .

Wenn der Wert <0, das Serlet instanziiert wird, wenn die Anfrage kommt, sonst> = 0 ist der Behälter in der zunehmenden Reihenfolge der Werte geladen werden. wenn 2 oder mehr Servlets den gleichen Wert hat, dann ist die Reihenfolge der Servlets in der web.xml erklärt.

Die Servlet-Container laden das Servlet beim Start oder wenn die erste Anforderung erfolgt. Das Laden des Servlets ist abhängig von dem Attribut „load-on-startup“ in „web.xml“ -Datei. Wenn das Attribut eine positive ganze Zahl (0 bis 128), dann hat das Servlet ist Last mit dem Laden des Behälters auf andere Weise lädt es, wenn die erste Anforderung nach einem Dienst kommt.

Wenn das Servlet geladen wird, sobald es verlangen wird dann heißt es „Lazy Loading“ genannt.

Es ist einfach, wie Sie nicht einmal erwartet.

Wenn der Wert positiv ist es geladen wird, wenn der Behälter beginnt

Wenn der Wert nicht positiv ist als die servelet geladen wird, wenn der Antrag gestellt wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top