Michilee: Model MVC + mehrere JSP/Java Projekte auf einem Server

Hallo Forum,

bevor ich eine kleine Seite programmieren wollte in (JSP/Java)
wollte ich mir MVC anschauen. (Hatte ich in einem anderen Thread als Tipp erhalten. http://de.wikipedia.org/wiki/Model_View_Controller)

Die View wäre mir klar. Modell und Steuerung machen mir etwas noch zu schaffen.

"Das Modell enthält die darzustellenden Daten und gegebenenfalls (abhängig von der Implementierung des MVC-Patterns) auch die Geschäftslogik."

Geschäftslogik heißt, dass das Modell dann die Daten aufbereitet und manipuliert und der Controller nur zwischen View und Model verwaltet? Habe ich das richtig verstanden?

In dieser Grafik jedoch, wenn ich es richtig verstanden habe, bereitet "validate.jsp" die Daten auf:
http://upload.wikimedia.org/wikipedia/commons/thumb/5/50/Mvc-modell.svg/606px-Mvc-modell.svg.png

D.h. heißt, das Modell nur die Daten praktisch hat. (Bsp. Datenbank)

1. Wäre ich da in etwa auf dem richtigen Weg?

2. Wenn man mehrere Kunden auf einem Server betreiben will, wessen Internetpräzensen mit JSP/Java erstellt sind und deshalb Tomcat nötig ist, dann hat man doch schlechte Karten, was Tomcat und Port 80 betrifft ne? (Käme womöglich nicht gut an, wenn jeder Kunde einen eigenen Port für Tomcat hätte) Habe zwar schon gehört, dass auch Tomcat vHost anbietet, da ist jedoch die Frage mit Zugriffsberechtigungen, bzw. was passieren würde, wenn ein Projekt den Tomcat abschießen würde. PHP wäre da leider nicht so mein Gebiet, falls dies eine Alternative sein sollte.

3. Kennt jemand ein schönes Tutorial bzw. Beispielscripte für einen guten Loginbereich? Hatte mir da schon Gedanken gemacht, wie der Ablauf sein wird, das poste ich dann aber später in einem separaten Thread. Vielleicht gibt es da Bedenken oder Verbesserungsvorschläge.

Grüße und ein schönes WE noch
michilee

  1. Hi Michilee,

    wenn du mehrer unabhängige Domains auf einen Server betreiben willst. Dann ist die Lösung das benutzen von einen vhost je Domain.

    Tutorials findest du hier u.a. auch zum Thema Login.

    MfG
    Otto

    1. Hallo,

      ist mir jetzt erste eingefallen. Hier ist ein super Buch zum Thema Core Servlets and JavaServer Pages, dieses ist auch kostenlos als PDF verfügbar. Wenn du vor hast damit länger zu Arbeiten lohnt es sich die Analoge Version anzuschaffen.

      MfG
      Otto

    2. hi otto,
      vielen dank für die Hilfe.

      wenn du mehrer unabhängige Domains auf einen Server betreiben willst. Dann ist die Lösung das benutzen von einen vhost je Domain.

      ja, vHost bei Apache ist das kleinste Problem. Fraglich ist es eben bei Tomcat mit den ganzen Ports.

      Tutorials findest du hier u.a. auch zum Thema Login.

      vielen Dank. Kennst du eventuell gute Bücher oder Tutorials die auf Deutsch sind?

      Grüße

      1. Hi Michilee,

        hi otto,
        vielen dank für die Hilfe.

        wenn du mehrer unabhängige Domains auf einen Server betreiben willst. Dann ist die Lösung das benutzen von einen vhost je Domain.

        ja, vHost bei Apache ist das kleinste Problem. Fraglich ist es eben bei Tomcat mit den ganzen Ports.

        Vllt. kann der Tomcat auch vhosts oder du kannst den Apache als Proxy für den Tomcat nutzen. Kann ich dir aber nichts genaueres zu sagen, da ich es selber noch nie gebraucht habe.

        Tutorials findest du hier u.a. auch zum Thema Login.

        vielen Dank. Kennst du eventuell gute Bücher oder Tutorials die auf Deutsch sind?

        Nein. Du wirst bei dem Thema nicht an Englisch vorbei kommen. Wenn dein Englisch nicht so gut ist, dann nutze es einfach als Möglichkeit noch Englisch zu lernen. Habe ich auch so gemacht.

        Grüße

        MfG
        Otto

        1. Tutorials findest du hier u.a. auch zum Thema Login.

          vielen Dank. Kennst du eventuell gute Bücher oder Tutorials die auf Deutsch sind?

          Nein. Du wirst bei dem Thema nicht an Englisch vorbei kommen. Wenn dein Englisch nicht so gut ist, dann nutze es einfach als Möglichkeit noch Englisch zu lernen. Habe ich auch so gemacht.

          ja, das stimmt natürlich auch. das werde ich dann versuchen, vielen dank nochmals

          grüße

        2. Guten Morgen!

          [...]
          Vllt. kann der Tomcat auch vhosts oder du kannst den Apache als Proxy für den Tomcat nutzen. Kann ich dir aber nichts genaueres zu sagen, da ich es selber noch nie gebraucht habe.

          Das zweite ist eigentlich die richtige Variante. Das entsprechende Modul für den Apache heißt mod_jk. Das wird in den meisten Projekten, die ich kenne, verwendet.

          Schöne Grüße,

          Peter

          1. Hi pgoetz,

            Das zweite ist eigentlich die richtige Variante.

            Warum?

            Ich weiß das es viele so machen. Aber vermutlich weil die mehr als nur Java auf er Server Seite haben. Warum soll ich Apache als Proxy benutzen wenn mir der Tomcat reicht und ich kein HTML (statisch),PHP, etc. noch ausliefern möchte.

            MfG
            Otto

            1. Servus Otto

              [...]
              Ich weiß das es viele so machen. Aber vermutlich weil die mehr als nur Java auf er Server Seite haben. Warum soll ich Apache als Proxy benutzen wenn mir der Tomcat reicht und ich kein HTML (statisch),PHP, etc. noch ausliefern möchte.

              Also ich habe schon verschiedene Begründungen für einen vorgeschalteten Apache gehört. In vielen Firmen ist im Betrieb das Apache Know How besser und tiefer als das Tomcat Know How. Deshalb arbeiten die Admins dort gerne mit dem Apache und schalten den Tomcat dahinter. Um den kümmern sich dann oft auch eigene Leute. In diesen Firmen ist es dann aber auch oft so, dass der Apache statische Daten ausliefert, die auch in der Webanwendung liegen und von dort ausgeliefert werden könnten (Bilder, CSS, JS).
              Dann habe ich schon die Begründung Geschwindigkeit gehört. Manche Admins sind der Meinung, nur der Apache kann schnell Daten ausliefern. Dann lagert man auch wieder statische Daten auf den Apache aus und nur dynamische Inhalte werden vom Tomcat bedient und durch den Apache geschleift.
              Und eine weitere Begründung war mal Load Balancing. Allerdings kann ich hierzu keine Details liefern, weil ich mir nicht vorstellen kann, was ein Load Balancing vor einem Apache von einem Load Balancing vor einem Tomcat unterscheidet.
              Das stichhaltigste Argument ist meiner Meinung nach aber die umfangreiche Konfigurierbarkeit vom Apache. Viele Anwendungen benötigen ja noch diverse Funktionalität, die im Apache über Module bereits enthalten ist und im Tomcat nicht (z.B. mod_rewrite). Zusammen mit gut erfahrenen Apache Admins kann man da die Anwendung von der Auslieferung an den Endanwender (URLs, Weiterleitungen, ...) schon ganz gut trennen.
              Allerdings hast Du natürlich recht, der Tomcat ist seit den 5er Versionen schon sehr schnell und stabil und kann auch ohne vorgeschalteten Apache gut betrieben werden, wenn man keine Sonderlocken braucht. Allerdings ist es meiner Erfahrung nach interessanterweise eben doch so, dass Anwendungen für Endanwender meistens über einen vorgeschalteten Apache bedient werden. Bei Backendanwendungen (Redaktionssysteme, ...) ist das nicht so oft der Fall.

              Schöne Grüße,

              Peter

              1. Hi pgoetz,

                danke. Das ist ungefähr das was ich vermutete habe.

                MfG
                Otto

                1. das problem aber bei einem nachgeschalteten Tomcat, wenn man ihn mit mod_jk hinter apache über port 80 hängt, dass man nicht mehrere kunden auf port 80 laufen lassen kann. sprich, man kann nicht mehrere tomcats auf port 80 hängen.

                  wie otto glaube ich erwähnt hat, kann tomcat auch schon vhosts. da bleibt aber die frage, wie sich tomcat verhält, bzgl. perfomance bei mehreren projekten, vor allem, da in jsp/java scripten schnell der tomcat abgeschossen werden kann.

                  ich glaube auch gehört zu haben, dass man anscheinend über (jvm??) oder sonst was dann andere projekte auslesen kann, die auf dem gleichen tomcat laufen.
                  bei apache hat man das problem ja nicht, wenn man mehrere vhosts/httpdocs mit dementsprechenden ordnerrechten erstellt.

                  grüßchen

                  1. das problem aber bei einem nachgeschalteten Tomcat, wenn man ihn mit mod_jk hinter apache über port 80 hängt, dass man nicht mehrere kunden auf port 80 laufen lassen kann. sprich, man kann nicht mehrere tomcats auf port 80 hängen.

                    Das kommt auf die Anforderungen an. Ich sag dem mod_jk ja genau, welcher Pfad, der beim Apache ankommt, auf welchen Pfad im Tomcat gemappt wird. Da kann ich dann schon mehrere laufen lassen.
                    Ich weiß allerdings nicht, ob man das will. In meinen Projekten würden sich meine Kunden bedanken, wenn ihre Anwendung stehen bleibt, weil irgendeine andere Anwendung dafür gesorgt hat, dass sich der Tomcat verabschiedet hat. Hier sollte man in meinen Augen nicht innerhalb des Tomcat virtualisieren, sondern bereits im OS (mehrere Instanzen unter einem OS, oder mehrere virtualisierte OS.

                    Peter

                    1. hi,

                      Das kommt auf die Anforderungen an. Ich sag dem mod_jk ja genau, welcher Pfad, der beim Apache ankommt, auf welchen Pfad im Tomcat gemappt wird. Da kann ich dann schon mehrere laufen lassen.

                      achso, oki, ich kann praktisch schon im mod_jk angeben, (je nach url bsp.) wohin dann im tomcat gemappt wird)

                      Hier sollte man in meinen Augen nicht innerhalb des Tomcat virtualisieren, sondern bereits im OS (mehrere Instanzen unter einem OS, oder mehrere virtualisierte OS.

                      ach du hast für jeden kunden eine virtuelle OS? (operating system)
                      schuldigung, dass ich das gerade nicht so kapiert habe. ich weiß zwar was virtuelle bestriebssysteme sind, (vmserver, vitualbox), fange aber in verbindung mit tomcat gerade wenig damit an :-)

                      grüßchen
                      michi

                      1. Guten Morgen!

                        ach du hast für jeden kunden eine virtuelle OS? (operating system)

                        Nö, ich selbst habe keine virtuellen Umgebungen für meine Kunden. Aber bei meinen Kunden werden des öfteren virtuelle Umgebungen verwendet. Ich arbeite als IT-Consultant und werde als Softwareentwickler im Team beim Kunden eingesetzt oder bringe mein eigenes Team mit und arbeite als technischer Projektleiter in einem Projekt. Deshalb kenne ich oberflächlich ein paar der verschiedenen Vorgehensweisen im Produktionsbetrieb von Java Webanwendungen. In der Tiefe bin ich allerdings schnell überfragt. ;)

                        Schöne Grüße,

                        Peter

                        1. hi,

                          In der Tiefe bin ich allerdings schnell überfragt. ;)

                          schade, hätte mich interessiert wie man das virtualisiert lösen könnte :-)

                          grüße
                          michi