7. Februar 2012  
  Suche:
 
  Basics
  Code-Galerie
  Forum
  FAQ
  Tipps & Tricks
  Literatur
  Knowledge Base
  Workshops
  JSP-Hosting
  JSP-Engines
  Jobbörse
  Links
  JSP-Sites
  Newsletter
  JSP-Test
  Impressum
  Username:
  
  Passwort:
  
  

  Jetzt registrieren
  Warum registrieren?

  Valid HTML 4.01!
  Valid CSS!
Forum

Tomcat und Kompression
 jann, 07.12.2008 18:08:11

Hallo,

ich habe gerade ein Problem mit einem Tomcat und der Kompression von auszuliefernden Seiten.

In meiner lokalen Testumgebung habe ich in der server.xml dem HTTP-Connector folgende Attribute hinzugefügt:

compression="on" compressionMinSize="2048" noCompressionUserAgents="gozilla, traviata" compressableMimeType="text/html"

Das sind die Standardwerte, welche auch in der server.xml als Beispiel stehen. In der Testumgebung funktioniert die Kompression einwandfrei und es werden Kompressionsraten mit dem Faktor 10 bis 60(!) erreicht.

Nun habe ich der server.xml zum Tomcat auf dem Produktivserver im Netz die gleichen Attribute dem HTTP-Connector hinzugefügt aber die Seiten werden alle unkomprimiert ausgeliefert.

In beiden Fällen kommt ein Tomcat in der Version 6.0.16 zum Einsatz.

Der Unterschied ist, dass auf dem Produktivserver noch ein Apache-Webserver die Anfragen an den Tomcat weiterleitet, was ja eine übliche Vorgehensweise ist.

Hat hier jemand schon mal damit Erfahrung gemacht? Könnte es sein, dass der Apache die komprimierten Dateien wieder entpackt und erst dann ausliefert? Ist vielleicht noch etwas zu beachten?

Grüße

Jann


Zum Antworten auf einen Beitrag müssen Sie registriert und angemeldet sein.


Re: Tomcat und Kompression
 jann, 16.12.2008 11:00:37

Hallo,

nun habe ich auf anderem Wege eine Lösung gefunden und poste sie hier mal.

Es liegt daran, dass dem Tomcat noch ein Apache vorgeschaltet ist und die beiden über den AJP-Connector kommunizieren und nicht über den HTTP-Connector. Der AJP-Connector kennt keine Kompression - also muss das Ganze innerhalb der Anwendung gemacht werden. Das geht bspw. mit einem Filter der sich in den Ausgabestrom reinhängt und alles was das Servlet so rausgibt komprimiert.

Dafür gibt es ein schönes Beispiel in der Standard-Installation des Tomcat unter: <tomcat>/webapps/examples/WEB-INF/classes/compressionFilter

Das Verzeichnis habe ich testweise komplett in das classes-Verzeichnis meiner Anwendung gepackt, meine web.xml angepasst - und schon lief die Kompression (später habe ich den Quelltext noch ein wenig angepasst).

Hier mal dazu die wichtigsten Auszüge meiner web.xml diesbezüglich. Ihr findet Euch sicher zurecht...

<web-app>
    <!-- Filter für die Kompression - Anfang -->

    <filter>
        <filter-name>Compression Filter</filter-name>
        <filter-class>compressionFilters.CompressionFilter</filter-class>
        <init-param>
            <param-name>compressionThreshold</param-name>
            <param-value>10</param-value>
        </init-param>
        .
        .
        .
    </filter>

    <filter-mapping>
        <filter-name>Compression Filter</filter-name>
        <url-pattern>/ma/*</url-pattern>
    </filter-mapping>

    <!-- Filter für die Kompression - Ende -->
.
.
.
    <servlet>
        <servlet-name>
            Meineanwendung
        </servlet-name>
       
        <servlet-class>
            fController.ControllerF
        </servlet-class>
        .
        .
        .
    </servlet>

    <servlet-mapping>
        <servlet-name>Meineanwendung</servlet-name>
        <url-pattern>/ma/*</url-pattern>
    </servlet-mapping>

</web-app>


Zum Antworten auf einen Beitrag müssen Sie registriert und angemeldet sein.


Legende: Anonymer User     registrierter User     sehr aktiver User

<< zurück 


Hinweis: Auf dieser Seite liegen Links zu anderen Seiten im Internet. Für alle diese Links gilt: Wir betonen ausdrücklich, daß wir keinerlei Einfluß auf die Gestaltung und die Inhalte der gelinkten Seiten haben. Deshalb distanzieren wir uns hiermit ausdrücklich von allen Inhalten aller gelinkten Seiten auf dieser Homepage und machen uns ihre Inhalte nicht zueigen. Diese Erklärung gilt für alle auf unserer Homepage angebrachten Links

Redaktion/Betreiber von JSP-Develop übernehmen keinerlei Gewährleistung und Verantwortung für die Richtig- und/oder Vollständigkeit von den auf den Webseiten JSP-Develop veröffentlichten Source Codes. Die Verantwortung der Verwendung/Anwendung sowie etwaige Modifikation der hier veröffentlichten Sourcen obliegt einzig dem Benutzer der Webseite, welche die veröffentlichten Sourcen in einer Applikation/Anwendung einsetzt. Durch das Kopieren und/oder Benutzen der Sourcen in einer Applikation/Anwendung bzw. etwaigen Abschriften wird dieser Rechtshinweis anerkannt.

Java, JSP, JavaServer Pages, J2EE, EJB, JDBC, JNDI, JTA, Sun, Sun Microsystems are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and in other countries. IBM, WebSphere are trademarks or registered trademarks of International Business Machines Corporation. Other trademarks and registered trademarks are the property of their respective owners.