Christoph Schnauß: Apache für JSP einrichten / Tomcat

hallo Forum,

so, jetzt habe ich mich überwunden und mir endlich mal Tomcat (4.1.18) installiert. Ging nach ein paar Anläufen schließlich auch ganz gut, jetzt kriege ich die mitgelieferten Standarddokumente und "Samples" zu sehen.

Einiges ist mir jedoch völlig unklar. Bei der Installation wurde mir als "default" port 8080 für Tomcat vorgeschlagen, da läuft er auch erstmal. Aber ist das jetzt nun ein eigenständiger Server? Muß er ja wohl, da ich über http://localhost:8080 an die Beispielseiten im Browser herankomme, auch wenn mein lokaler Apache disabled ist. Aber wenn das ein "Server" ist (und nicht nur eine "Engine"), kann ich dann dasselbe von ihm verlangen wie von meinem Apache?

Die mitgelieferte Doku, die mit der online-Dokumentation identisch ist, ist miserabel sortiert und auch sonst etwas wirr. Hat jemand eventuell einen Hinweis auf ein schnuckliges kleines Einstiegs-Tutorial, am besten natürlich in deutsch?

Und dann: es gibt mehrfach den Hinweis, _daß_ ich mir meinen Apache auch so einrichten kann, daß er JSP-Files transportiert. Nirgends hab ich aber gefunden, _wie_ das gehen soll. Wenn ich mir meinen Apache aber für JSP-Files konfigurieren kann und auf dem Server-Rechner eh JAVA installiert ist, kann ich mir da nicht das gesamte Tomcat-Paket sparen und fleißig JSP-Files erfinden?

Grüße aus Berlin

Christoph S.

  1. hallo Forum,

    Hallo Du einer!

    Und dann: es gibt mehrfach den Hinweis, _daß_ ich mir meinen Apache auch so einrichten kann, daß er JSP-Files transportiert. Nirgends hab ich aber gefunden, _wie_ das gehen soll. Wenn ich mir meinen Apache aber für JSP-Files konfigurieren kann und auf dem Server-Rechner eh JAVA installiert ist, kann ich mir da nicht das gesamte Tomcat-Paket sparen und fleißig JSP-Files erfinden?

    Prinzipiell ja. Du müsstest ldeiglich Deine Javaprogramme so schreiben, dass sie auch Eingaben/Ausgaben von der CGI- Schnittstelle entgegennehmen und dann dafür Sorgen, daß diese als als .jsp ausführbar sind und zuletzt den Server so konfigurieren, dass er genau das auch macht.

    Dann wäre es aber besser (performanter) gleich in C zu proggen :)

    Einiges ist mir jedoch völlig unklar. Bei der Installation wurde mir als "default" port 8080 für Tomcat vorgeschlagen, da läuft er auch erstmal. Aber ist das jetzt nun ein eigenständiger Server?

    Ja. Tomcat ist, man verbessere mich wenns nicht so ist, ein javabasierter Webserver.

    Aber wenn das ein "Server" ist (und nicht nur eine "Engine"), kann ich dann dasselbe von ihm verlangen wie von meinem Apache?

    Das weiss ich nicht. Aber es sollte wohl so sein. Es wird aber Dinge geben, die jeweils nur Tomcat oder der Indianer kann.

    Du kannst zumindest den Apache so einrichten, daß er bei bestimmten Zugriffen die Requests an den Port 8080 weitergibt. Lies mal unter Proxy.

    1. hallo Forum,
      Hallo Du einer!

      Hallo nochmal!

      Eins ist komisch... hättest Du mir dieselben Antworten nicht auch geben können... wenn ich gefragt hätte?

      fastix

      1. rehallo,

        Eins ist komisch... hättest Du mir dieselben Antworten nicht auch geben können... wenn ich gefragt hätte?

        Vielleicht in zwei Wochen ... zur Zeit hätte ich das nicht mit Sicherheit gekonnt und dich mit Vermutungen abgespeist. Mir ist die Geschichte mit den API's einfach noch nicht richtig klar. Der Apache ist in C geschrieben, und die Tomcat-Software in JAVA, das macht für mich schon nen Unterschied. Gut, sie müssen dann beide die CGI-Spezifikation erfüllen, aber darum hab ich mich bisher nur am Rand gekümmert.
        Meinen Apache konfiguriere ich über die httpd.conf, bei Tomcat gibt es einige XML-Dateien, die angepaßt werden können/müssen.

        Ich hab auf meinem Arbeits-/Testrechner durchaus mehrere Server laufen, die stören sich ja nicht gegenseitig  -  nicht einmal, wenn sie auf port 80 zugreifen. Um sie auseinanderzuhalten, kriegen sie lokal bei mir in der Regel ports über 50 000 zugewiesen, da kann normalerweise nix passieren.

        Du müsstest ldeiglich Deine Javaprogramme so schreiben, dass sie auch Eingaben/Ausgaben von der CGI- Schnittstelle entgegennehmen und dann dafür Sorgen, daß diese als als .jsp ausführbar sind und zuletzt den Server so konfigurieren, dass er genau das auch macht.

        Tomcat "macht das so"  -  ist ja genau dafür da. Wenn ich das Teil richtig verstanden habe.

        Dann wäre es aber besser (performanter) gleich in C zu proggen :)

        Natürlich kann ich auch CGI-Programme in C/C++ schreiben. Aber darauf kam es mir hier nicht an. Tomcat und dieser ganze JSP-Krempel begegnet mir in jüngerer Zeit einfach häufiger, und ich wollte es jetzt eben mal wissen. Und wenn die Apache Group eine Software vertreibt und nicht mal mehr "beta" draufschreibt, habe ich ein gewisses durch Erfahrung gerechtfertigtes Vertrauen, daß da "was dran sein" muß ;-)

        Grüße aus Berlin

        Christoph S.

  2. Hallo Christoph,

    wenn das ein "Server" ist (und nicht nur eine "Engine"), kann ich dann dasselbe von ihm verlangen wie von meinem Apache?

    Ja. Kannst du. Tomcat parst und verarbeitet auch html Seiten (wandelt auch die allerdings vor der Auslieferung in Servlets um). Was nicht geht, ist die Verarbeitung von php Seiten, bzw. die Vermischung von Java und PHP oder Java und Asp usw. Entweder html oder jsp.

    Einstiegs-Tutorial, am besten natürlich in deutsch?
    Ein gutes deutsches kenne ich nicht. Eines der besten Bücher, die ich zu dem Thema gelesen habe, findest du aber als Pdf hier:
    http://www.moreservlets.com/
    Eine weitere gute Anlaufstelle ist hier:
    http://www.jsp-develop.de

    Und dann: es gibt mehrfach den Hinweis, _daß_ ich mir meinen Apache auch so einrichten kann,

    Ja. Man kann Apache und Tomcat so einrichten, dass Apache html, php usw. parst (geht dann zumindest beim ersten request etwas schneller) und jsp Seiten vom Tomcat. Ein schönes tut findest du auch unter
    http://www.jsp-develop.de

    Wenn ich mir meinen Apache aber für JSP-Files konfigurieren kann und auf dem Server-Rechner eh JAVA installiert ist, kann ich mir da nicht das gesamte Tomcat-Paket sparen und fleißig JSP-Files erfinden?

    Nee. So ist das ja nicht. Apache kann keine jsp Seiten verarbeiten. Für die Verarbeitung von jsps, servlets usw. brauchst du auf jeden Fall eine Servlet-Engine. Es gibt aber auch andere Server, die das anbieten. Resin oder JRun z.B. Ebenso gibts JBoss als Applicationserver, der in einigen Versionen Tomcat integriert.

    Für die Konfiguration von Tomcat gibt es zwei wichtige Files (unter conf auf der obersten Ebene). Das eine ist die server.xml, für die eigentliche Konfiguration es Webservers und die web.xml für das globale Deployment (Bereitstellung) von Seiten. Du kannst aber auch für jede einzelne Site zusätzlich noch eine eigene web.xml einstellen, um z.B. Initialisierungsparameter wie z.B. Passwörter, Datenbanknamen usw. zur Verfügung zu stellen. Das ist aber nicht zwingend, da nur optionale Parameter, die du für eine bestimmte Applikationen benötigst hier eingestellt werden. Um eine ganz normale Site, die auf jsp, Beans und Servlets aufsetzt, brauchtst du das erstmal nicht und mußt imho auch in der globalen web.xml unter conf erstmal nichts anpassen.

    Wenn du eine Seite, egal ob jsp oder html im Tomcat aufrufst, geht das grob gesagt erstmal so vor sich, dass die html Seite, bzw. die jsp Seite in ein Servlet umgesetzt wird. Dabei werden die Anweisungen in der Seite verarbeitet und dann wird ganz normales html ausgeliefert. Deshalb dauert auch der erste Aufruf einer jsp/html Seite im Tomcat länger. Das bezieht sich allerdings nur! auf den ersten Aufruf. Wenn das servlet erstmal da ist, hat man eine sehr schnelle Antwort vom Server. Deshalb ist auch die Behauptung Quatsch, jsps usw. wären generell langsam. Das Ganze ist eine schnelle, zuverlässige und sehr übersichtliche Technologie, wenn man sich an einzuhaltende Regeln (MVC-Pattern, Action First bei Struts usw.) hält und die grundlegenden Prinzipien verstanden hat.

    Gruß
    Ralf

    1. hallo Ralf,

      Eine weitere gute Anlaufstelle ist hier:
      http://www.jsp-develop.de

      Ja, danke. Das hatte ich mir schonmal hervorgegooglet, aber wieder verschmissen.

      Und dann: es gibt mehrfach den Hinweis, _daß_ ich mir meinen Apache auch so einrichten kann

      Ich habe jetzt nach längerem Suchen noch was gefunden: http://www.sitepoint.com/article/305/4, was exakt zu meinem Problem paßt, sogar daß der Autor seinen Apache nach D:\Apache installiert hat, trifft auf mich zu ;-)
      Aber ein Problem bleibt noch. In dieser Anleitung (wie in einigen anderen) wird immer von einer Datei "workers.properties" gesprochen. Die hab ich aber nicht. Hab natürlich versucht, mir dann einfach eine anzulegen, aber das haut irgendwie nicht hin. Muß das Teil such noch vielleicht "workers.properties.xml" heißen und wo muß es hin?

      Weißt du dazu noch was?

      Christoph S.

      1. Moin Christoph,
        genau habe ich das auch nicht mehr im Kopf. Es muß aber afair ein Eintrag in der httpd.conf gemacht werden, der ungefähr so aussieht:
        JkWorkersFile "meinPfadzuTomcat/conf/jk/workers.properties"
        Zum Inhalt der workers.properties kann ich so aus dem Stand leider auch nichts genaues sagen. Auf jeden Fall aber existiert diese Datei nicht standardmäßig, sondern muß angelegt werden.

        Gruß
        Ralf

        1. hallo Ralf,

          genau habe ich das auch nicht mehr im Kopf.

          Macht nix. Ich habs jetzt mit etwas Fuzzelei hingekriegt und sehe meine "Beispiel"-JSP's auch über den Apache, also ohne Umweg über port 8080.
          Natürlich gibts jetzt noch jede Menge Erkundungsarbeit, weil ich erstmal lediglich die "default"-Einstellungen habe. Wird schon werden.

          Danke nochmal für deine Hinweise

          Christoph S.