# Servlet und Server



## maxxi (4. Mai 2009)

hallo

bin ein totaler Java-Anfänger. Ich scheiter schon an gewissen Begriffen.

Was ist denn ein "Servlet"? Ich lese da unterschiedliche Definitionen. 

Braucht man einen speziellen Java-Server, damit Servlets funktionieren?
Gibt es eigentlich eigene Java-Server? Oder sind die dann immer in Verbindung mit anderen Server? Also z. B. mit einem Apache-Server?

Apache-Server + Java => Apache-Java-Server?

Gibt es auch Stand-Alone-Java-Server, ganz ohne Apache? Wie genau ist der Zusammenhang zwischen den Servlets und diesen Servern?


----------



## Noctarius (4. Mai 2009)

Deine Suche nach dem "Java-Server" welcher als Applicationserver bekannter ist wäre JBoss oder Tomcat oder Ähnliches.


----------



## SlaterB (4. Mai 2009)

ein Servlet ist ein Teil der J2EE-Architektur für Webanwendungen,
man kann Web-Server in Java genauso ohne diese tausenden Hilfsklassen schreiben, aber sinnvoll ist das meist nicht 

wenn jedenfalls J2EE, dann auch Servlet, es sei denn man verwendet noch ein weiteres höheres Framework,
welches auf J2EE aufbaut und die Servlet versteckt und durch Actions oder eine beliebige andere Klasse ersetzt


----------



## Noctarius (4. Mai 2009)

Jetzt hast du den Armen total verwirrt 

A Tutorial on Java Servlets and Java Server Pages (JSP)


----------



## maxxi (4. Mai 2009)

Dort steht auch wieder nur so etwas kryptisches. Zitat von A Tutorial on Java Servlets and Java Server Pages (JSP)


> Servlets are Java technology's answer to CGI programming. They are programs that run on a Web server and build Web pages.


Ist das, was ich mit Java programmiere, ein "Servlet"? Oder ist dieses "Servlet" ZWISCHEN dem Server und meinem Java-Programm?

Von Tomcat habe ich schon gehört. Da soll es sogenannate "Tomcat-Server" geben. Ist ein Tomcat-Server eine Kombination aus Apache-Server und Tomcat? Ist Tomcat die Schnittstelle zwischen dem Apache-Server und den Servlets?


----------



## wuchermann (4. Mai 2009)

Hallo,

also ich würde mal sagen: ein Servlet ist ein JavaProgramm, dass auf Deneim WebServer (Tomcat) ausgeführt wird.
Gruß,
Wucher


----------



## SlaterB (4. Mai 2009)

kennst du Collections.sort und Comparator?
oder noch einfacher irgendein Java-Programm und die main-Methode:

die main-Methode ist eine Konvention, 
es gibt ein Framework, welches sich um ganze Betriebssystem kümmert usw. und die eigentlich individuelle Arbeit letztlich an die main-Methode weitergibt:
so du bist jetzt dran, main-Methode, mach mal was,

so ähnlich ist das bei J2EE, das Framework kümmert sich um fast alles allgemeine, wie Request annehmen, Parameter parsen, Cookies, Session usw,
irgendwann muss aber der eigentliche Anwendungscode kommen, dafür braucht es irgendeine Klasse, die vom User befüllt wird, ein Servlet

das Servlet ist der individuell programmierte Anteil an einer Web-Anwendung, bzw. einer dieser Anteile


zu WebServer usw. sag ich mal nix, kurz: WebServer führen deine Programme aus, lang: viel dazu lesen


----------



## maxxi (4. Mai 2009)

OK! Somit wäre Teil 1 schon mal klar.
"Servlet" ist das, was ICH programmiere.

Kommen wir mal zu diesem Tomcat-Server. Ist das eine Kombination aus Apache-Server und Tomcat? Könnte man einen ganz normalen Apache-Server installieren und dann Tomcat dazuinstallieren?


----------



## faetzminator (4. Mai 2009)

Tomcat ist ein eigener Server. Warum er Apache Tomcat heisst? Es gibt die "Apache Software Foundation", welche nebst dem Apache2 Webserver auch hunderte andere Projekte, wie z.B. den Tomcat am laufen haben.


----------



## maxxi (4. Mai 2009)

Super. Damit wäre Teil 2 auch beantwortet 

OK. Dann mal weiter. Gibt es eine Möglichkeit, dass ich Apache installiere und es derart erweitere, sodass es wie ein Tomcat-Server funktioniert? Ich frage aus folgendem Grund:

Es gibt eine sogenannte PHP-Java-Bridge. Anscheinend kann man die in unterschiedlichen Varianten starten. Ich habe mal folgendes gemacht:

1) In meinem WAMP den Apache gestartet.
2) Die PHP-Java-Bridge in der Java-Standalone-Variante gestartet.

Ein kleines PHP-Script und ein kleines Java-Progrämmchen und alles hat wunderbar funktioniert. Ich konnte von PHP das Java-Programm aufrufen und habe auch eine Rückmeldung bekommen.

Allerdings frage ich mich, was ich bei 2) wirklich gestartet habe. Habe ich bei 2) einen eigenen Server gestartet? Oder hat sich die Bridge irgendwie in meinen Apache-Server integriert?


----------



## ARadauer (4. Mai 2009)

der tomcat hat einen eigenen webserver dabei. du brauchst also keinen apache.
in produktiv umgebungen wird ein apache meist vor den tomcat geschalten, da dieser bei einfachem ausliefern von html und bilddatein schneller ist... das kannst du jetzt aber im moment mal ignorieren...

lade dir einfach mal tomcat herunter und versuch mal ein servlet zum laufen zu bringen, ohne apache php usw...


----------



## maxxi (4. Mai 2009)

Ich versuche den umgekehrten Weg. Ich will wissen, wie man eine WAMP-Installation mit einem normales Apache-Server derart aufbohren kann, sodass man dann im Endeffekt vielleicht genau das gleiche machen kann wie mit einem Tomcat-Server.

Und um den Kreis wieder zu schließen und wieder zum Begriff "Servlet" zu kommen: Wenn ich nämlich die JavaBridge.jar der JAVA-Standalone-Variante starte, soll man 'SERVLET_LOCAL:8080' auswählen. 8080 ist klar. Das ist der Port. Der SERVLET-Begriff hatte mich hier verwirrt. Ich dachte, ein "Servlet" wäre nicht das Programm, das ich selbst schreibe, sondern eine Zwischenschicht zwischen meinem eigenen Programm und dem Server.


----------



## Verjigorm (4. Mai 2009)

maxxi hat gesagt.:


> OK! Somit wäre Teil 1 schon mal klar.
> "Servlet" ist das, was ICH programmiere.



haste selbst geschrieben


----------



## maki (4. Mai 2009)

Hab den Thread mal ins richtige Forum verschoben.

maxxi, würde dir sehr empfehlen dich in das Thema Webentwicklung mit Java einzulesen, ist sehr komplex & umfangreich, links hast du ja schon bekommen.
Aber bei deinem derzeitigen "Wissensstand"  solltest du noch keine Aussagen treffen bzw. Pläne schmieden 
Denn wenn du nicht wirklich weisst was ein Servlet ist, macht alles andere keinen Sinn.

Hoffe du verstehst das nicht falsch.


----------



## maxxi (4. Mai 2009)

PHP/Java Bridge
So viel zum Thema Doku und Installation. Die Seite kann man getrost in den Mülleimer werfen.

Diese Doku zu lesen, hilft mir nicht weiter. Wegen dem weiß ich immer noch nicht, was ich bei mir eigentlich installiert habe.

Ein JSP-Buch habe ich übrigens auch. Aber das bringt auch nicht viel, was das Thema "Installationsvarianten und -möglichkeiten" betrifft.


----------



## maxxi (4. Mai 2009)

Hier mal ein paar Auszüge aus dem Buch (um mal herzuzeigen, wie verwirrend das Thema "Servlets" beschrieben ist):


> In diesem Rahmen entstand das Konzept der Servlets, eines kleinen, nachladbaren Programmstücks, das ähnlich CGI Webseiten dynamisch generiert.





> Weil JSPs in Java-Servlets kompiliert werden, sind sie schnell.





> JSP können beliebig mit Java Servlets kombiniert werden.


Speziell der 3. Satz hatte mich vollends verwirrt. Als wenn JSP gar nichts mit Java Servlets zu tun hätten ...


----------



## Noctarius (4. Mai 2009)

Ja und wo ist das verwirrend? Oo

Servlet ? Wikipedia
JavaServer Pages ? Wikipedia
Apache Tomcat ? Wikipedia
Common Gateway Interface ? Wikipedia


Lesen, damit wir nicht noch so einen Fall erzeugen wie ein gewisses anderen Mitglied hier. Wenn du danach noch nicht verstanden hast was es ist weiß ich auch nicht mehr weiter. Also deutlicher was ein Servlet ist als in dem Wikipedia-Artikel kann man es nicht beschreiben.

Manchmal soll Google und Wikipedia helfen - hab ich gehört.

PS: Wieso suchen eigentlich immer alle so kompliziert nach Seiten zu einem Thema wenn der simpelste Suchbegriff "wikipedia xyz" lautet?


----------



## maxxi (4. Mai 2009)

Ey, Alter! Geil! 
Jetzt habe ich mal das Wichtigste verstanden. Aber zu dem Apache Tomcat ? Wikipedia habe ich eine Frage:


> Der HTTP-Server des Tomcat wird vor allem zur Entwicklung eingesetzt, während in Produktion zumeist ein Apache Web-Server vor den Tomcat geschaltet wird.


Was heißt das? Ich habe aktuell auf meinem Rechner WAMP installiert. In diesem WAMP läuft ein ganz normaler Apache-Server (mit einem PHP-Modul). Heißt dieses Zitat, dass ich meinen Apache-Server derart aufbohren kann, dass ich dann mit JSP arbeiten kann, ohne dass ich extra noch einen Apache-Tomcat-Server installieren muss?

OT: "ein gewisses anderen Mitglied hier". Hm? ???:L


----------



## Schandro (4. Mai 2009)

> OT: "ein gewisses anderen Mitglied hier". Hm?


Er meint damit ein bestimmtes Mitglied in diesen Forum das früher andauernd ziemliche dumme Fragen gestellt hat, da es nie ein Java Handbuch lesen wollte...
Hat sich in letzter Zeit aber gebessert.


----------



## maxxi (4. Mai 2009)

Aha .. naja, nicht mein Problem.
Die richtige URL ist Gold wert. Hast du zufällig die Richtige bei der Hand, wo beschrieben wird, wie man einen normalen Apache-Server so weit bringen kann, dass man auch mit JSP arbeiten kann?

Ich hätte jetzt das hier gefunden:
Install & Configure Apache, PHP, JSP, Ruby on Rails, MySQL, PHPMyAdmin & WordPress on Windows XP/2000
Allerdings finde ich das sehr seltsam! Seit wann gibt es unter Windows so-Dateien (mod_jk-apache-2.2.3.so). so-Dateien gibts doch nur unter Linux, oder? :shock:


----------



## Noctarius (4. Mai 2009)

> während in Produktion zumeist ein Apache Web-Server *vor* den Tomcat geschaltet wird.



Die Betonung liegt auf dem VOR! Ein normaler Apache2 kann keine Servlets ausführen


----------



## maxxi (4. Mai 2009)

Aber dafür gibt es doch den Apache-Tomcat-Connector, oder? Und der kann doch bei Windows keine .so-Datei sein. Das muss doch sicher eine .dll-Datei sein, oder?

EDIT:
Ich glaube, jetzt habe ich was vernünftiges gefunden:
Seite 2 von Install Configure Apache With Php Jsp And Mysql On Windows Xp Pro


----------



## Noctarius (4. Mai 2009)

Nö, ist ne Socket-Connection


----------



## maxxi (4. Mai 2009)

???:L
Du sprichst in Rätsel!
Also braucht man keinen connector?
Hast doch gerade geschrieben, dass ein Apache kein Servlet direkt ausführen kann, oder??
???:L


----------



## Noctarius (4. Mai 2009)

Webbrowser -> HTTP Connection (TCP) -> Apache -> AJP13 Connection (TCP) -> Tomcat -> [Tomcat] Servlet


----------



## vogella (18. Mai 2009)

Hallo,

ev. wird das ganze klarer wenn Du einfach ein kleines Komplettbeispiel erstellst. Ev. hilft Dir das folgende Tutorial dabei: Servlet and JSP development with Eclipse Web Tool Platform (WTP) 

Viele Grüße, Lars


----------

