AndreaH Geschrieben 8. März 2011 Geschrieben 8. März 2011 Hi, da Jboss mir Probleme bereitet (oder ich ihm?), hat mir jemand Geronimo empfohlen. Im Prinzip kann ich jetzt noch gut wechseln, habe sowieso noch keinen Code zum Laufen gebracht. Aber ich will auch nicht wahllos alle möglichen Application Server durchprobieren. Hat jemand hier Erfahrungen mit Geronimo? Ist der gut? Anfängertauglich? Momentan habe ich hier ein schlimmes Kuddelmuddel, das mir sicher früher oder später auf die Füße fällt, auch wenn es momentan so aussieht als sei es OK so. Da in meiner JBoss-Installation das passende jar-File fehlte, in dem die Servlet-Klassen definiert sind, habe ich noch Glassfish dazu installiert und in Eclipse dessen jar-File bekannt gemacht. Ich benutze also JBoss mit Glassfish-Bibliotheken. :upps Auf Glassfish soll ich nicht umsteigen. Überlege aber, ob ich das nicht trotzdem tun sollte. Oder eben doch Geronimo. Hat jemand Erfahrungen, Meinungen? Andrea Zitieren
kingofbrain Geschrieben 8. März 2011 Geschrieben 8. März 2011 Servus, die Antworten aus Deinem anderen Thread gelten hier immer noch. Deine Probleme werden nicht durch einen Application Server gelöst (oder verursacht). Das mangelnde Wissen im Bereich Java EE ist der Grund für Deine Probleme. Die werden bei Geronimo vermutlich eine andere Auswirkung haben, jedoch nach wie vor vorhanden sein. Wenn Du wirklich Java EE lernen willst, dann nimm irgendeinen Application Server (Glassfish, JBoss oder Geronimo, die Reihenfolge spiegelt meine persönliche Präferenz), und befasse Dich mit den Grundlagen. Das Java EE Tutorial hilft Dir dabei, genauso aber die Spezifikationen im Umfeld Java EE. Die sind zwar kein Pageturner, enthalten aber die Information, die Du benötigst. Eine schlechte Idee ist die, die Du momentan verfolgst: irgendetwas tun, merken es geht nicht, irgendetwas ändern und merken, es geht immer noch nicht, um dann zu überlegen, die Plattform zu wechseln. Schöne Grüße, Peter Zitieren
AndreaH Geschrieben 8. März 2011 Autor Geschrieben 8. März 2011 Ja, ich sehe das genauso. Allerdings habe ich schon mehrere hundert Seiten Handbücher und Tutorials gelesen und habe den Eindruck, da steht nie das drin, was ich brauche. Im Tutorial da klappt alles. Man klickt und los geht´s und alles funktioniert. Nirgends lerne ich, was ich tue, wenn es eben nicht so klappt. Mir fehlt auch komplett der Glaube, dass ich aus irgendwelchen Büchern den ganzen Kram lernen kann, geschweige denn schnell lernen. Über einen Handbuch-Tipp würde ich mich trotzdem freuen. Andrea Zitieren
kingofbrain Geschrieben 9. März 2011 Geschrieben 9. März 2011 Guten Morgen, das Problem an Deinem Problem ist, dass Dir nicht nur eine Technologie fehlt, sondern vermutlich der gesamte oder große Teile des Unterbaus. Um Java EE Anwendungen wirklich entwickeln zu können, musst Du Mehrschichtarchitekturen verstanden haben. An Deiner Stelle würde ich an einer Stelle ansetzen, und versuchen, diese gut zu beherrschen. Das kollidiert aber mit Deinem Ansatz "schnell Java EE lernen". Du könntest z.B. in der Webschicht anfangen. Beantworte folgende Fragen: - wie sieht eine Webanwendung in Java EE aus? - welche Teiltechnologien stehen Dir zur Verfügung, um eine Java Webanwendung zu implementieren? - welche Teiltechnologie verwendest Du für welchen Part in einer solchen Anwendung? Lass Dinge wie Serviceschicht, Persistenzschicht, Authentisierung und Autorisierung und den ganzen Rest mal weg. Wenn Du die oben genannten Fragen beantwortet hast, dann poste die Antworten und wir können den nächsten Schritt gehen, nämlich mit den genannten Technologien eine kleine Anwendung schreiben. Wenn Du Lust hast, dieses Real Live Tutorial mitzumachen, bleib einfach im Thread. Schöne Grüße, Peter Zitieren
AndreaH Geschrieben 9. März 2011 Autor Geschrieben 9. März 2011 Guten Morgen Peter, danke, dass Du Dir so viel Arbeit mit mir machst! das Problem an Deinem Problem ist, dass Dir nicht nur eine Technologie fehlt, sondern vermutlich der gesamte oder große Teile des Unterbaus. Ja, da fehlt einiges. :-( Und ich weiß nicht mal was. Das ist ja das Blöde beim Selbsteinarbeiten. Allein schon um die richtigen Fragen in Google eingeben zu können, sollte man sich halbwegs auskennen. Um Java EE Anwendungen wirklich entwickeln zu können, musst Du Mehrschichtarchitekturen verstanden haben. An Deiner Stelle würde ich an einer Stelle ansetzen, und versuchen, diese gut zu beherrschen. Das kollidiert aber mit Deinem Ansatz "schnell Java EE lernen". Hoffentlich nicht! Die Theorie hab ich ja. OK, teilweise auf Spickzetteln, aber sie liegt hier neben mir... Du könntest z.B. in der Webschicht anfangen. Beantworte folgende Fragen: - wie sieht eine Webanwendung in Java EE aus? - welche Teiltechnologien stehen Dir zur Verfügung, um eine Java Webanwendung zu implementieren? - welche Teiltechnologie verwendest Du für welchen Part in einer solchen Anwendung? Lass Dinge wie Serviceschicht, Persistenzschicht, Authentisierung und Autorisierung und den ganzen Rest mal weg. Wenn Du die oben genannten Fragen beantwortet hast, dann poste die Antworten und wir können den nächsten Schritt gehen, nämlich mit den genannten Technologien eine kleine Anwendung schreiben. Wenn Du Lust hast, dieses Real Live Tutorial mitzumachen, bleib einfach im Thread. Ich spicke dann mal in meinen Unterlagen... Eine Webanwendung hat einen Client- und einen Server-Teil. Der Server-Teil kann dann noch in Anwendung und Datenbank aufgeteilt sein. Das entspricht dann dem Model-View-Controller-Prinzip. Client kann sein: Ein Bean, ein Servlet, Java Applet oder Java Message Service Provider. Datenbank kann irgendeine sein, z.B. SQL, Oracle, MySQL... Und die Anwendung entwickle ich in Java mit Eclipse als Werkzeug, wobei ich den Application Server verwende, weil ich dessen Bibliotheken verwenden möchte und der das Zeugs irgendwie auch zum Laufen bringt und dem Client zur Verfügung stellt. Besonders Kopfzerbrechen machen mir die Schnittstellen. Woher weiß ich, von Eclipse aus kommend, welche Bibliotheken welcher Application Server enthält, bereitstellt und wie die gestrickt sind? Dafür fehlt mir noch sinnvolle Doku, ich weiß nur, dass jeder J2EE Application Server ähnlich aber anders ist. An die Schnittstelle zwischen Application Server und Datenbank habe ich mich noch gar nicht gemacht. Gestern versuchte ich vergeblich, ein Servlet zum Laufen zu bringen. Also: in Eclipse eingetippt und kompiliert, auf dem Application Server zum Laufen bringen und dann über Browser aufrufen. Aber damit bin ich, glaube ich, schon ein oder zwei Lerneinheiten zu weit... :-) Ich hoffe, ich habe in einigermaßen realistisches Bild von so einer J2EE Anwendung. Oder muss ich zurück auf Los? Viele Grüße, Andrea Zitieren
kingofbrain Geschrieben 9. März 2011 Geschrieben 9. März 2011 Hallo Andrea, Dein Bild ist für den Anfang recht gut, aber Du verzettelst Dich noch. Meine Frage war vielleicht aber auch zu allgemein gestellt. Worauf ich hinauswollte, war folgendes: - Webanwendung in Java: im einfachsten Fall Servlets und JSP (JSF ist in meinen Augen erst im zweiten Schritt etwas) - Servlets implementieren die Logik des Clients, d.h. Eingaben des Benutzers entgegen nehmen und validieren, Geschäftslogik an der Serviceschicht in Anspruch nehmen, und Ausgabedaten für die View aggregieren und ggf. passend aufbereiten - JSPs implementieren die View der Webanwendung, sie bauen also das HTML (im Normalfall, es geht auch XML, JSON oder jeder andere Characterbasierte Output) - Laufen tut das ganze gepackt als WAR auf einer Servlet Engine, die in einem Java EE Application Server bereits verbaut ist. Du brauchst also: Servlet-API, JSP-API, evtl. Taglibs für die Verwendung von Tags. Ob Du das mit vi oder Eclipse entwickelst, ist völlig wurscht. Nächste Aufgabe. Besorg Dir die passenden Bibliotheken. Diese findest Du am besten nicht beim Serverhersteller Deiner Wahl, sondern direkt beim Hersteller der Spezifikation. In diesem Fall auf jcp.org. Diese Bibliotheken sind unabhängig vom Application Server und können deshalb auch ohne Probleme verwendet werden. Versuche dann, ein ganz einfaches WAR zu erstellen. Die enthaltene Webanwendung sollte folgendes können: - Eingabe einer beliebigen Ganzzahl zwischen 1 und 50 in einem HTML Formular - Entgegennehmen der Zahl und Validierung in einem Servlet. Berechnen der Fibonacci-Sequenz bis zu dieser Zahl (obere Grenze). - Ablegen der Ergebnisliste im Request - Weiterleiten an eine JSP zur Aufbereitung der Ergebnisse. Wenn Du soweit bist, dann poste bitte hier Deine Ergebnisse (Servlet, JSP, web.xml). Versuche, Dir nicht zu viel von einer IDE abnehmen zu lassen. Du kannst gerne mit Eclipse arbeiten, ich würde allerdings nicht die Eclipse Projektart Dynamic Web Project nehmen, sondern z.B. mit Maven arbeiten. Kennst Du Maven? Oder welches Werkzeug verwendet Ihr ansonsten für Build und Deploy? Ant? Falls Du Probleme bei Teilaufgaben oder dem Grundverständnis hast, sag Bescheid. Kann zwar immer ein bisschen dauern mit der Antwort, aber sie kommt. Schöne Grüße, Peter Zitieren
AndreaH Geschrieben 9. März 2011 Autor Geschrieben 9. März 2011 Hallo Peter, schon beim Download komme ich jetzt ins Schleudern. Hier finde ich also Java: Java-Downloads für alle Betriebssysteme Aber: 1.) Wenn ich hier Java runterlade, sind dann die Bibliotheken für J2EE auch dabei? Hier steht nichts ausdrücklich darüber. 2.) Brauche ich die 32 Bit Version oder 64 Bit? Mein Betriebssystem hat 64 Bit, aber mein Eclipse 32 Bit. Das habe ich früher schon recherchiert, weil ich schon entsprechende Fehlermeldungen hatte. Oder sollte ich sowieso gleich auch eine andere Eclipse-Version installieren? Puh, das sind genau die Fragen, die mir die Handbücher in dieser Form nicht beantworten können. Besorg Dir die passenden Bibliotheken. Diese findest Du am besten nicht beim Serverhersteller Deiner Wahl, sondern direkt beim Hersteller der Spezifikation. In diesem Fall auf jcp.org. Diese Bibliotheken sind unabhängig vom Application Server und können deshalb auch ohne Probleme verwendet werden. Hm, aber wo lege ich das Zeugs dann hin? Einfach da, wo es bei der Java-Installation dann landet? Oder müssen bestimmte Dateien in ein bestimmtes Unterzeichnis von JBoss verschoben werden? Muss ich die Bibliothek bei Eclipse dann "anmelden"? Versuche dann, ein ganz einfaches WAR zu erstellen. Die enthaltene Webanwendung sollte folgendes können: - Eingabe einer beliebigen Ganzzahl zwischen 1 und 50 in einem HTML Formular - Entgegennehmen der Zahl und Validierung in einem Servlet. Berechnen der Fibonacci-Sequenz bis zu dieser Zahl (obere Grenze). - Ablegen der Ergebnisliste im Request - Weiterleiten an eine JSP zur Aufbereitung der Ergebnisse. Mit Hilfe des Wissens, das ich aus den Tutorials gezogen habe, MÜSSTE ich das hinkriegen. Aber der Teufel steckt sicher wieder im Detail! Wenn Du soweit bist, dann poste bitte hier Deine Ergebnisse (Servlet, JSP, web.xml). Seufz. Ich bin sicher, es wird Dir nicht gefallen... Inzwischen bin ich total verunsichert, weil ich allein schon zwei Wochen herumbastle, um die Entwicklungsumgebung zum Laufen zu bringen. Und selbst das hat bisher ja nicht wirklich geklappt. Versuche, Dir nicht zu viel von einer IDE abnehmen zu lassen. Ja, das passt auch zum Projektziel, dass ich möglichst gut wissen soll, was drin steckt. Du kannst gerne mit Eclipse arbeiten, ich würde allerdings nicht die Eclipse Projektart Dynamic Web Project nehmen, sondern z.B. mit Maven arbeiten. Kennst Du Maven? Oder welches Werkzeug verwendet Ihr ansonsten für Build und Deploy? Ant? Maven, schon gehört. Ich musste es mir aber eben noch schnell durchlesen, was es ist. Brauche ich das? Ich möchte nicht mehr Werkzeuge als nötig verwenden. Build und Deploy? Uarg, ich wusste, dass ich irgendetwas vergessen hatte... Da müsste ich mal den Kollegen fragen, der allerdings die ganze Woche im Urlaub ist. Viele Grüße, Andrea Zitieren
kingofbrain Geschrieben 10. März 2011 Geschrieben 10. März 2011 Guten Morgen, ok, die Schlagzahl war wohl ein wenig zu hoch. Wir fangen einen Schritt früher an. Was wolltest Du denn bei Oracle? Das JDK herunterladen? Das solltest Du bereits haben. Und zwar ein ganz einfaches JDK der Version 6 (aktuell ist die Updateversion 24, das ist aber wurscht). Dieses musst Du installieren (hast Du bestimmt auch schon). Danach brauchst Du die Bibliotheken für Java Webanwendungen. Diese erhältst Du wie oben beschrieben bei jcp.org. Du willst die Java Servlet 3.0 Specification plus API und die JavaServer Pages 2.1 mit API. Das sind die JSRs 245 und 315. Die Specifications sind in der Regel PDF-Dateien, die beschreiben, was die API kann und wie sie implementiert und verwendet werden muss. Die API ist das eigentliche JAR mit den .class Dateien. In der Regel sind das nur die Schnittstellen, weil die Implementierungen ja je nach Application Server unterschiedlich sind. Bis hier haben wir noch kein Eclipse, keinen JBoss und auch sonst nichts. Jetzt schaust Du mal in die Spezifikationen rein und verschaffst Dir einen Überblick über den Inhalt der zwei Spezifikationen. Das Thema Build und Deploy lassen wir fürs erste doch mal sein und arbeiten doch mit dem Eclipse Dynamic Web Project. Das tut es erstmal. Du brauchst also ein aktuelles Eclipse für Java EE Developers und einen aktuellen JBoss. Entpacke diesen und verändere nichts daran. Jetzt erstellst Du eine Server Runtime Konfiguration in Eclipse, d.h. Du öffnest die Servers View und erstellst dort eine neue Konfiguration, mit der Du den JBoss starten und stoppen kannst. Danach erstellst Du ein neues Dynamic Web Project und fügst das dem JBoss hinzu. Wenn Du so weit bist, reden wir weiter. Versuche nicht, zu interpretieren, was ich gemeint habe, wenn Du es nicht verstanden hast, sondern frag nach. Sonst läufst Du wieder in die falsche Richtung los. In meinen Augen müssen wir bei Dir ein Verständnis schaffen, was womit geregelt wird. Das mache ich mit der o.a. Anleitung auf eine bestimmte Art. Es gibt vermutlich unzählige andere Arten. Aber so, wie zwei Tutorials, die Du gleichzeitig liest, Dich verwirren, wird Dich eine Eigeninterpretation und zusätzliche Dinge hier auch verwirren. Ich habe heute ganztags Termine und weiß nicht, ob ich dazu komme, heute mittag mal hier reinzuschauen. Im Zweifelsfall kann ich also erst morgen wieder hier sein. Viel Erfolg und schöne Grüße, Peter Zitieren
AndreaH Geschrieben 10. März 2011 Autor Geschrieben 10. März 2011 Guten Morgen Peter ok, die Schlagzahl war wohl ein wenig zu hoch. Ja. Ich merke selbst, dass ich komplett überfordert bin. Ich war ja vorige Woche im Urlaub und hatte meinem Chef zuvor gesagt, dass ich es nicht hinkriege und falls doch mit extrem viel Aufwand und schlechter Qualität. Ich hatte einen Vorschlag gemacht, den er ablehnte. Ich hatte gehofft, er überlegt sich eine andere Lösung, aber Fehlanzeige. Ich suche jetzt gerade noch woanders Hilfe. Ich krieg das einfach nicht hin, ich bekomme ja nicht mal die Entwicklungsumgebung zusammen! Was wolltest Du denn bei Oracle? Das JDK herunterladen? Das solltest Du bereits haben. Und zwar ein ganz einfaches JDK der Version 6 (aktuell ist die Updateversion 24, das ist aber wurscht). Dieses musst Du installieren (hast Du bestimmt auch schon). Danach brauchst Du die Bibliotheken für Java Webanwendungen. Diese erhältst Du wie oben beschrieben bei jcp.org. Du willst die Java Servlet 3.0 Specification plus API und die JavaServer Pages 2.1 mit API. Das sind die JSRs 245 und 315. Die Specifications sind in der Regel PDF-Dateien, die beschreiben, was die API kann und wie sie implementiert und verwendet werden muss. Die API ist das eigentliche JAR mit den .class Dateien. In der Regel sind das nur die Schnittstellen, weil die Implementierungen ja je nach Application Server unterschiedlich sind. Hmpf, ich hatte das auf der jcp.org-Seite nicht gefunden und so war ich bei Oracle gelandet, über nicht mehr nachvollziehbare Links. Ich versuche es nochmal... Bis hier haben wir noch kein Eclipse, keinen JBoss und auch sonst nichts. Jetzt schaust Du mal in die Spezifikationen rein und verschaffst Dir einen Überblick über den Inhalt der zwei Spezifikationen. Jo, damit bin ich dann erstmal den Rest des Vormittags beschäftigt... Das Thema Build und Deploy lassen wir fürs erste doch mal sein und arbeiten doch mit dem Eclipse Dynamic Web Project. Das tut es erstmal. Du brauchst also ein aktuelles Eclipse für Java EE Developers und einen aktuellen JBoss. Entpacke diesen und verändere nichts daran. Jetzt erstellst Du eine Server Runtime Konfiguration in Eclipse, d.h. Du öffnest die Servers View und erstellst dort eine neue Konfiguration, mit der Du den JBoss starten und stoppen kannst. Perfekt, das habe ich schon seit 10 Tagen. Danach erstellst Du ein neues Dynamic Web Project und fügst das dem JBoss hinzu. Wenn Du so weit bist, reden wir weiter. OK, DAS kann ich. Versuche nicht, zu interpretieren, was ich gemeint habe, wenn Du es nicht verstanden hast, sondern frag nach. Sonst läufst Du wieder in die falsche Richtung los. In meinen Augen müssen wir bei Dir ein Verständnis schaffen, was womit geregelt wird. Das mache ich mit der o.a. Anleitung auf eine bestimmte Art. Es gibt vermutlich unzählige andere Arten. Aber so, wie zwei Tutorials, die Du gleichzeitig liest, Dich verwirren, wird Dich eine Eigeninterpretation und zusätzliche Dinge hier auch verwirren. Ich habe heute ganztags Termine und weiß nicht, ob ich dazu komme, heute mittag mal hier reinzuschauen. Im Zweifelsfall kann ich also erst morgen wieder hier sein. Viel Erfolg und schöne Grüße, Peter Herzlichen Dank! Ich bin dann erstmal mit Lesen beschäftigt... Andrea Zitieren
kingofbrain Geschrieben 10. März 2011 Geschrieben 10. März 2011 Hallo Andrea, so, mit lesen solltest Du ja jetzt schon ein bisschen weiter gekommen sein. Wenn Du also einen JBoss hast, den Du aus Eclipse raus starten und stoppen kannst, sowie ein Eclipse Dynamic Web Project, dann gehts weiter: Wir wollen jetzt ein erstes Servlet erstellen (HelloJspServlet), das nichts macht, außer die Kontrolle an eine JSP weiterzugeben. Der Grund dafür ist, dass JSPs nie direkt angesprochen werden sollen, sondern immer ein Controller Servlet davor liegt, das die Clientlogik ausführt. Wenn keine Clientlogik nötig ist, so wie hier, dann gibt das Servlet die Kontrolle eben direkt an die JSP weiter. Beantworte folgende Fragen, ohne, dass Du jetzt etwas in Eclipse implementierst: - Welche Klasse wirst Du beerben, damit Du ein Servlet implementieren kannst? - Welche Methode der Klasse wirst Du überschreiben / implementieren? Hinweis: der Benutzer soll im Browser eine Adresse in der Adresszeile eingeben oder einem Link folgen können. - Wie übergibst Du die Kontrolle aus dem Servlet an die JSP? - Wie sieht die JSP-Datei aus, wenn Du nur ein HTML-Gerüst mit einer Überschrift 1. Ordnung ausgeben willst, die "Hello JSP!" sagt? - Was muss in der web.xml stehen, damit das Servlet auf HTTP-Anfragen reagiert? - An welchen Stellen im WAR werden die einzelnen erzeugten Dateien abgelegt, was passiert mit der von Dir implementierten Klasse (HelloJspServlet.java)? Versuche, die Fragen mit den Informationen aus der Spezifikation oder dem Oracle Java EE Tutorial zu beantworten. Wenn Du nicht auf die Lösung kommst, gib hier Bescheid. Die Lösungen postest Du auch einfach hier. Schöne Grüße und einen schönen Abend! Peter Zitieren
AndreaH Geschrieben 11. März 2011 Autor Geschrieben 11. März 2011 Hallo Peter, vielen Dank! Ich war jetzt ein wenig abgelenkt durch andere Tätigkeiten, bin Dienstag wieder hier. Wenn ich es schaffe, lese ich am Wochenende den Rest der zweiten Spezifikation. Kurz: Am Dienstag versuche ich, Deine Fragen zu beantworten. Es gibt übrigens eine gute Neuigkeit. Ich muss doch keine Mega- Anwendung implementieren. Habe einen Dummen gefunden. Hähä. Ein Student, der weiß wie es geht, bastelt uns eine Beispielanwendung. Ich muss aber trotzdem eine Anwendung bauen, damit ich richtig und wirklich verstehe, wie das Zeugs funktioniert. Schließlich schreibe ich das Testkonzept. Viele Grüße und erstmal schönes Wochenende! Andrea Zitieren
AndreaH Geschrieben 15. März 2011 Autor Geschrieben 15. März 2011 Hallo Peter so, mit lesen solltest Du ja jetzt schon ein bisschen weiter gekommen sein. Puh, ja. Habe am Wochenende die restliche Spezifikation doch nicht ganz geschafft, das habe ich heute Morgen gemacht. Das waren genau die richtigen Dokumente, die ein paar weiße Flecken auf meiner Landkarte schlossen. Ich konnte inzwischen auch klären, was mein Kollege für Build and Deploy verwendet: Maven. Da muss ich mich auch noch einarbeiten, das ist dann wohl meine Aufgabe für morgen. Irgendwie nimmt das kein Ende, jeden Tag eine neue Baustelle. Ich bin schon seit Wochen an dem J2EE dran, aber habe noch nicht mal die Entwicklungsumgebung vollständig zusammen und am Laufen. :-(( Der Student deployt übrigens gar nicht, sondern startet seine Anwendung aus Netbeans heraus. Das geht also auch... Keine Ahnung wie. Wenn Du also einen JBoss hast, den Du aus Eclipse raus starten und stoppen kannst, sowie ein Eclipse Dynamic Web Project, dann gehts weiter Ja, JBoss ist da und startet auch. Allerdings habe ich immer noch das Problem, dass dort die Bibliothek fehlt, mit der dieser Kram hier funktioniert: import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; Er funktioniert, aber nur weil ich aus einem Glassfish die entsprechenden jar-Files rüber kopiert habe. Das ist garantiert ungesund, oder? Wir wollen jetzt ein erstes Servlet erstellen (HelloJspServlet), das nichts macht, außer die Kontrolle an eine JSP weiterzugeben. Der Grund dafür ist, dass JSPs nie direkt angesprochen werden sollen, sondern immer ein Controller Servlet davor liegt, das die Clientlogik ausführt. Wenn keine Clientlogik nötig ist, so wie hier, dann gibt das Servlet die Kontrolle eben direkt an die JSP weiter. Ja, genau das macht J2EE so kompliziert. Diese ganzen Entwurfsmuster, die Funktionalität feingranular auf viele kleine Dateichen aufteilen. Ich will ja nicht mosern, aber Fortran war doch auch ganz nett... Beantworte folgende Fragen, ohne, dass Du jetzt etwas in Eclipse implementierst: - Welche Klasse wirst Du beerben, damit Du ein Servlet implementieren kannst? Ich sag´s mal so: public class HelloJspServlet extends HttpServlet - Welche Methode der Klasse wirst Du überschreiben / implementieren? Hinweis: der Benutzer soll im Browser eine Adresse in der Adresszeile eingeben oder einem Link folgen können. Diese beiden: HttpServletRequest request HttpServletResponse response - Wie übergibst Du die Kontrolle aus dem Servlet an die JSP? Mit Methode "get"? public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { etc } - Wie sieht die JSP-Datei aus, wenn Du nur ein HTML-Gerüst mit einer Überschrift 1. Ordnung ausgeben willst, die "Hello JSP!" sagt? response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html><h1><title>"); out.println("Hello JSP!"); out.println("</title></h1></html>"); - Was muss in der web.xml stehen, damit das Servlet auf HTTP-Anfragen reagiert? Ich denke, ich war im richtigen Kapitel, aber ich habe die Antwort trotzdem nicht gefunden. - An welchen Stellen im WAR werden die einzelnen erzeugten Dateien abgelegt, was passiert mit der von Dir implementierten Klasse (HelloJspServlet.java)? Was heißt "an welchen Stellen"? Geht es um ein bestimmtes Verzeichnis? web.xml liegt dann in Verzeichnis WEB-INF, die Servlet-Klassen in src/servlet/HelloJspServlet und die JSP in src/client? Ich hatte auch versucht, ein web.xml anzulegen, nachdem ich hier eine Vorlage gefunden hatte: http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd Allerdings funktionierte das nicht einfach mit "1.) leere Datei anlegen und 2.) Copy& Paste rüber kopieren", sondern ich muss wohl irgendwo und irgendwie die Vorlage in Eclipse hinterlegen und beim Anlegen meiner web.xml als Vorlage angeben. Keine Ahnung wo. Oder ist das eher etwas, das von JBoss kommen sollte und bei mir leider nicht vorliegt? So weit also mein Stand. Was meinst Du? Andrea Zitieren
kingofbrain Geschrieben 16. März 2011 Geschrieben 16. März 2011 Guten Morgen Andrea, vielleicht tröstet es Dich: ich arbeite mit Java EE seit 2003 und Version 1.4 und kenne immer noch nicht jede Teilspezifikation auswendig. Das ist das interessante an unserem Job: man lernt nie aus. Maven ist eine gute Sache. Durch die ganzen Defaults kann man damit recht problemfrei arbeiten, solange man keine Sondereinstellungen braucht. Auch wenn Dein Kollege die Anwendung aus Netbeans heraus startet, wird deployed. Das macht Netbeans halt dann transparent. Die fehlende Bibliothek solltest Du doch bereits von jcp.org heruntergeladen haben. Beim Final Release der Java Servlet 3.0 Specification findest Du die Spezifikation, das JAR sowie die Javadocs. public class HelloJspServlet extends HttpServlet korrekt. Diese beiden: HttpServletRequest request HttpServletResponse response Nö, das sind Interfaces, keine Methoden. Du willst die doGet-Methode überschreiben, die die von Dir genanten Interfaces als Parameter übergeben bekommt. Mit Methode "get"? public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { etc } Vielleicht meinst Du hier das richtige. Du willst innerhalb der Methode die Kontrolle an die JSP übergeben. Aber mit welchem Methodenaufruf geht das? Hint: RequestDispatcher response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html><h1><title>"); out.println("Hello JSP!"); out.println("</title></h1></html>"); Nein, das ist leider falsch. Du willst das Markup genau nicht im Servlet rendern, sondern in der dafür generierten JSP-Datei. Deshalb übergibst Du ja in der Frage oben drüber die Kontrolle an die JSP. Ich denke, ich war im richtigen Kapitel, aber ich habe die Antwort trotzdem nicht gefunden. Du willst mit den Elementen <servlet> und <servlet-mapping> Dein Servlet bekannt machen und auf einen Pfad in Deiner Anwendung mappen. Was heißt "an welchen Stellen"? Geht es um ein bestimmtes Verzeichnis? web.xml liegt dann in Verzeichnis WEB-INF, die Servlet-Klassen in src/servlet/HelloJspServlet und die JSP in src/client? Das sind die Verzeichnisse in Deiner Entwicklungsumgebung. Aus diesen Ressourcen wird ja die WAR-Datei erzeugt, die in Deinem Application Server deployed wird. Wie sieht der Inhalt der WAR-Datei aus. Das ist ja nur eine mit der Endung .war versehene .zip Datei. Das erstellen der web.xml funktioniert in Eclipse schon so wie von Dir beschrieben. Der von Dir gepostete Link ist allerdings kein Template, sondern die Schemadatei, die den Aufbau einer web.xml in Version 3.0 festlegt. Versuche jetzt noch mal, die fehlenden Fragen zu beantworten, lade die richtige Bibliothek herunter, erzeuge die Dateien und baue ein WAR. Bei Problemen wieder hier. Schöne Grüße, Peter Zitieren
AndreaH Geschrieben 16. März 2011 Autor Geschrieben 16. März 2011 Hallo Peter, jetzt hat mir auch noch ein Timeout alles gekillt, was ich in den letzten zwei Stunden getippt hatte. Ganz toll. vielleicht tröstet es Dich: ich arbeite mit Java EE seit 2003 und Version 1.4 und kenne immer noch nicht jede Teilspezifikation auswendig. Das ist das interessante an unserem Job: man lernt nie aus. Du machst mir Freude. Bin hinter meinem Zeitplan weit zurück... Maven ist eine gute Sache. Durch die ganzen Defaults kann man damit recht problemfrei arbeiten, solange man keine Sondereinstellungen braucht. Ich habe es leider trotzdem nicht zum Laufen gebracht. Obwohl ich alles so gemacht habe wie in "Quick start" beschrieben. Ich habe Maven erstmal zurück gestellt, weil ich momentan sowieso nichts zu Deployen habe, siehe andere Probleme. Auch wenn Dein Kollege die Anwendung aus Netbeans heraus startet, wird deployed. Das macht Netbeans halt dann transparent. Kann ich das mit Eclipse+Jboss auch tun? Die fehlende Bibliothek solltest Du doch bereits von jcp.org heruntergeladen haben. Beim Final Release der Java Servlet 3.0 Specification findest Du die Spezifikation, das JAR sowie die Javadocs. Hmpf, leider habe ich sie damals nicht gefunden und jetzt beim zweiten Suchen auch nicht! Nur die Spezifikationen finde ich. The Java Community Process(SM) Program - JSRs: Java Specification Requests - detail JSR# 315 Nö, das sind Interfaces, keine Methoden. Du willst die doGet-Methode überschreiben, die die von Dir genanten Interfaces als Parameter übergeben bekommt. OK, habe ich mir hinter die Ohren geschrieben. Vielleicht meinst Du hier das richtige. Du willst innerhalb der Methode die Kontrolle an die JSP übergeben. Aber mit welchem Methodenaufruf geht das? Hint: RequestDispatcher Leider finde ich die Antwort nicht. Ich habe die Wechselwirkung zwischen JSP und Servlet nicht richtig verstanden. JSP ist die Schnittstelle zum Benutzer und das Servlet ist die Schnittstelle zwischen JSP und den Beans in der Server-Java-Anwendung? Nein, das ist leider falsch. Du willst das Markup genau nicht im Servlet rendern, sondern in der dafür generierten JSP-Datei. Deshalb übergibst Du ja in der Frage oben drüber die Kontrolle an die JSP. Von Hand hätte ich das nicht hinbekommen, trotz fast 600 Seiten Spezifikation. Stattdessen habe ich Eclipse die JSP-Datei anlegen lassen. Die sieht so aus: <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Hello JSP!</title> </head> <body> </body> </html> Ich habe nur den Titel geändert. Muss ich hier das Servlet bekannt machen oder läuft es umgekehrt, dass das Servlet auf JSP verlinkt? Du willst mit den Elementen <servlet> und <servlet-mapping> Dein Servlet bekannt machen und auf einen Pfad in Deiner Anwendung mappen. OK. Das sieht dann so aus: <servlet> <servlet-name>catalog</servlet-name> <servlet-class>com.mycorp.CatalogServlet </servlet-class> <init-param> <param-name>catalog</param-name> <param-value>Spring</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>catalog</servlet-name> <url-pattern>/catalog/*</url-pattern> </servlet-mapping> Das sind die Verzeichnisse in Deiner Entwicklungsumgebung. Aus diesen Ressourcen wird ja die WAR-Datei erzeugt, die in Deinem Application Server deployed wird. Wie sieht der Inhalt der WAR-Datei aus. Das ist ja nur eine mit der Endung .war versehene .zip Datei. Keine Ahnung, wie man eine WAR-Datei erzeugt. Ich dachte, die sei dann genauso aufgebaut wie mein Filesystem in Eclipse. Wie also sieht der Inhalt der WAR-Datei aus? Das erstellen der web.xml funktioniert in Eclipse schon so wie von Dir beschrieben. Der von Dir gepostete Link ist allerdings kein Template, sondern die Schemadatei, die den Aufbau einer web.xml in Version 3.0 festlegt. Worin liegt der Unterschied? Wo finde ich ein Template und wie stelle ich das in Eclipse ein? Versuche jetzt noch mal, die fehlenden Fragen zu beantworten, lade die richtige Bibliothek herunter, erzeuge die Dateien und baue ein WAR. Bei Problemen wieder hier. Siehe oben. Außer der JSP-Datei erzeugen zu lassen, habe ich leider nichts hingekriegt, habe bei allem noch offene Fragen... Ich hoffe, ich bin Dir nicht zu mühsam. Ich weiß echt nicht, was ich ohne Dich machen würde. Ich fürchte, um so eine Spezifikation vollständig zu verinnerlichen, müsste ich sie nicht ein Mal lesen (danach weiß ich höchstens wo ich nachschlagen muss), sondern drei Mal. So, ich kämpfe dann mal weiter... Vielleicht finde ich das eine oder andere noch selbst heraus. Andrea Zitieren
kingofbrain Geschrieben 16. März 2011 Geschrieben 16. März 2011 Servus Andrea, ich habe gleich den nächsten Termin, deshalb nur kurz die wichtigsten Punkte: Eclipse und JBoss: genau das macht die Server Runtime für den JBoss und das Eclipse Dynamic Web Project. Auf der jcp.org bist Du schon mal richtig. Jetzt noch dem Link zum Final Release folgen ("Download") und dort die drei Sachen runterladen: Spezifikation, Javadocs, JAR with schemas JSP und Servlet. Das Servlet überschreibt die doGet-Methode. Weil wir keine Clientlogik haben, sondern nur eine Seite anzeigen wollen, holt sich das Servlet mit request.getRequestDispatcher("Pfad zur JSP").forward(request, response); den RequestDispatcher und übergibt request und response über das forward an diese JSP. Bitte lies die API Doc von HttpServletRequest und RequestDispatcher dazu. Deine JSP sieht schon mal ganz gut aus. Achte darauf, ob Du wirklich ISO-xxx verwenden willst. Ich würde an Deiner Stelle konsequent mit UTF-8 arbeiten. Auch den HTML-Kopfbereich würde ich anpassen (-> SELFHTML) Deine Angaben zum Servlet und zum Mapping sind ja schon der Inhalt der web.xml. Jetzt noch den XML-Header und den Verweis auf das Schema (die korrekte Angabe des Schemas findest Du im Schema) und gut. Und jetzt lies Dich noch ein, wie das WAR aufgebaut ist (Spezifikation). Die Ressourcen, die Du erzeugst (web.xml, JSPs, Servlets, statische Ressourcen) müssen an definierte Orte im WAR. Eclipse kopiert Dir das beim Dynamic Web Project schon richtig hin, aber Du musst wissen, wie ein WAR aufgebaut ist. Viel Erfolg, Du bist auf dem richtigen Weg. Der Anfang ist schwer, aber so nach ein bis zwei Jahren geht es leichter. Das wird schon. Peter Zitieren
AndreaH Geschrieben 18. März 2011 Autor Geschrieben 18. März 2011 Hallo Peter, da bin ich wieder. Gestern Nachmittag kam ich nicht ins Forum rein. Gleich mal vorne weg. Diese Woche ging es hier im Büro noch dramatisch zu. Mein Chef hat eingesehen, dass ich für den J2EE Kram nicht begabt bin. Ich brauche also keine J2EE Anwendung von null an zu programmieren, sondern schreibe Testfälle. Die ganze Einarbeitung war trotzdem nicht umsonst, ich muss ja wissen, welche Komponenten das hat, was ich testen soll. Ich habe noch versucht, den Pet Store bei mir zu importieren, damit ich etwas zum Spielen habe. Das hat aber natürlich auch wieder nicht geklappt. Ich bekam seltsame Meldungen, die Ressource sei schon vorhanden (Hä??) und so weiter blabla. Also lassen wir das. Irgendwie habe ich gerade sowieso eine Pechsträhne. Selbst Excel tut plötzlich nicht mehr, was es die letzten Jahre getan hat. Bei mir ist insgesamt der Wurm drin. Eclipse und JBoss: genau das macht die Server Runtime für den JBoss und das Eclipse Dynamic Web Project. Auf der jcp.org bist Du schon mal richtig. Jetzt noch dem Link Super. Eine Baustelle weniger. zum Final Release folgen ("Download") und dort die drei Sachen runterladen: Spezifikation, Javadocs, JAR with schemas Uarg, wer lesen kann ist mal wieder im Vorteil... JETZT habe ich es gefunden. JSP und Servlet. Das Servlet überschreibt die doGet-Methode. Weil wir keine Clientlogik haben, sondern nur eine Seite anzeigen wollen, holt sich das Servlet mit request.getRequestDispatcher("Pfad zur JSP").forward(request, response); den RequestDispatcher und übergibt request und response über das forward an diese JSP. Bitte lies die API Doc von HttpServletRequest und RequestDispatcher dazu. Bei sowas klingeln mir echt die Ohren! Deine JSP sieht schon mal ganz gut aus. Achte darauf, ob Du wirklich ISO-xxx verwenden willst. Ich würde an Deiner Stelle konsequent mit UTF-8 arbeiten. Auch den HTML-Kopfbereich würde ich anpassen (-> SELFHTML) Sowas kommt vom Generieren... Keine Ahnung haben, aber rumklicken. :-/ Deine Angaben zum Servlet und zum Mapping sind ja schon der Inhalt der web.xml. Jetzt noch den XML-Header und den Verweis auf das Schema (die korrekte Angabe des Schemas findest Du im Schema) und gut. Jaha, das sagst Du so einfach! Ich konnte nicht herausfinden, wie ich das Dings anlege. Ist zum Glück nicht mehr wichtig. Und jetzt lies Dich noch ein, wie das WAR aufgebaut ist (Spezifikation). Die Ressourcen, die Du erzeugst (web.xml, JSPs, Servlets, statische Ressourcen) müssen an definierte Orte im WAR. Eclipse kopiert Dir das beim Dynamic Web Project schon richtig hin, aber Du musst wissen, wie ein WAR aufgebaut ist. Ja, das habe ich gelesen. Das war auch wichtig, um die Ordnerstruktur in Eclipse zu verstehen. Viel Erfolg, Du bist auf dem richtigen Weg. Der Anfang ist schwer, aber so nach ein bis zwei Jahren geht es leichter. Das wird schon. Das ist echt total mühsam. Leider hat unser Projektplan nicht so richtig viel Einarbeitungszeit vorgesehen. :-( In den Tutorials sah das alles so easy aus. Einfach ein bisschen rumklicken und schon steht die Anwendung. Wie gesagt, ich muss jetzt doch nichts selbst programmieren. Aber auskennen soll ich mich trotzdem. Ich bin aber doch froh, dass mir die Details erspart werden. Herzlichen Dank noch! Du hast bei mir noch einen ganz dicken Gefallen gut. Andrea Zitieren
AndreaH Geschrieben 1. April 2011 Autor Geschrieben 1. April 2011 Hi, für wen es interessiert... Inzwischen habe ich mir einen neuen Job gesucht, bei dem ich gar nichts programmieren muss. Alles nur nicht programmieren! Folien erstellen, Berichte schreiben, Projekte planen, alles super. Und falls ich programmieren sollte, hab ich schon gesagt, dann brauche ich einen Kurs oder einen Mentor. Mein aktueller Job wird also frei. Bei Interesse einfach melden. J2EE-Kenntnisse sind wichtig, Programmiererfahrung auch. Zusätzliche Kenntnis über IT-Sicherheit und Theorie der Programmiersprachen wäre gut. Andrea Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.