Web-User-Interface für eine Java-Anwendung
Ich versuche zu schaffen, ein web-user-interface für eine Java-Anwendung. Die Benutzeroberfläche ist sehr einfach, bestehend aus einer einzigen Seite mit einem Formular für die Benutzer zu stellen Abfragen, und eine Ergebnisseite -- ähnlich wie die Suchmaschine von Google, oder Ask.com.
Ich bin sehr vertraut mit den Basis-API von Java, aber ich habe nicht viel Erfahrung im Einsatz von Java in Web-Umgebungen (obwohl ich verwendet habe ASP.NET), ich bin auf der Suche für ein paar Ratschläge:
-
Was web application server sollte ich verwenden? Beachten Sie, dass mein interface ist sehr leicht, und ich möchte nur etwas, das ist blitzschnell, einfach zu starten/zurücksetzen/beenden und (neu -) Bereitstellung der Anwendung. Auch, ich brauche Sie zum arbeiten auf mehrere Umgebungennämlich GNU/Linux, Mac OS X und Windows XP/Vista. Darüber hinaus bin ich mit
ant
undEclipse
also wäre es toll, wenn ich könnte leicht fügen Sie einigeant
Ziele für das server-management, und/oder das verwalten der server mit der IDE. Ich habe mir in Tomcat und Stegund die letztere scheint zu sein, sehr leicht und einfach zu installieren und zu betreiben. Dies ist ideal, weil die GUI ist nur für Demo Zwecke, und werde ich wohl bereitstellen müssen, die es in verschiedenen Computern. Aber Tomcat hat schon eine sehr lange Zeit, und es scheint reifer. -
Als für die web-SeitenJava-Server-Seiten sehen aus wie eine gute Passform, wie Sie scheinen einfach genug sind für das, was ich versuche zu erreichen (Verarbeitung eines Formulars und Ausgabe das Ergebnis), aber ich bin ganz Ohr für Vorschläge.
- Ich habe auch noch eine Anforderung, die verlangt von mir, zu erklären, die "basic" workflow der Anwendung: Grundsätzlich habe ich eine Klasse
Engine
hat eine Methoderun(String)
die verarbeiten die Eingaben des Benutzers und gibt die Ergebnisse zurück zur Anzeige. Diese Klasse ist die core der Anwendung. Nun, ich möchte instanziieren dieser Klasse nur einmaldenn es erfordert einen viel der Erinnerung, und es dauert eine sehr lange Zeit zu starten, so möchte ich, um es zu schaffen, wenn die Anwendung/der server startet, und speichern Sie die Referenz für den gesamten Bereich der Anwendung (d.h., bis ich den server stoppen). Dann, für jede user-Anfrage, würde ich einfach aufrufen, dierun
Methode derEngine
Beispiel, und zeigen Sie deren Ergebnisse. Wie kann dies erreicht werden in Java?
InformationsquelleAutor der Frage João Silva | 2009-08-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erweitern in diesem Punkt. Bei der Implementierung von JSPs, es gibt zwei Modelle verwiesen auf als (mit etwas Originalität) wie Modell 1 und Modell 2. Sehen diese Erklärung.
Im Fall von Modell 1 Sie neigen dazu, code direkt in die JSP, es wirkt in einem controller-Rolle. Persoanlly, auch wenn es um kleine, schnell entwickelte apps, ich nicht so. Ich benutze immer das Modell 2. Jedoch wenn Sie wählen, Sie können einfach nur etwas Java in Ihr JSP.
Ich würde begünstigen, dass ein Werk wie dieses, so dass Sie Steuern die Erstellung des Arbeiters. Die Fabrik wäre so etwas wie (um ein ganz einfaches Beispiel)
Alternativ können Sie die Arbeiter, wenn diese Methode zuerst aufgerufen.
In dem Fall von Modell 2 Sie haben natürlich auch ein servlet in dem Sie fügen Sie einige code, so können Sie nur haben
Diese werden initialisiert werden, wenn das servlet geladen wird. Kein Grund zur Sorge über die Einstellung zum laden-auf Start, müssen Sie nur wissen, dass es initialsed, bevor die erste Anfrage ausgeführt wird.
Besser noch, die Verwendung der init () - Methode des Servlets. Dies ist gewährleistet, um aufgerufen werden, bevor die Anfragen bearbeitet werden und ist dem servlet-API-Architektur der Ort für solche arbeiten.
InformationsquelleAutor der Antwort djna
Der Technik, die Sie lernen müssen, ist die Sun Java-Servlet-Spezifikation, da das ist, was ALLE nicht-triviale java-Webserver zu implementieren. Dies ermöglicht das schreiben von servlets, die können alles tun, die Dinge, die Sie benötigen, server-side. Sie können dann entwickeln gegen alle container, die gut funktioniert mit Ihrer iDe, und die Bereitstellung auf einem beliebigen anderen container arbeiten auch in der Produktion.
Müssen Sie auch lernen, HTML-Grundkenntnisse, wie Sie sonst brauchen würde, um zu erfahren, JavaServer Faces oder ähnliches, das ist ein ziemlich großer mouthfull zu erstellen, die die submit-Schaltfläche, die Sie benötigen, mit der anderen Einträge in ein HTML-Formular.
Für Ihren Motor zu arbeiten, können Sie erstellen Sie ein servlet mit einem singleton in web.xml, die Sie dann aufrufen kann. Absolut sicher, es ist thread-sicher sonst haben Sie eine Menge Schmerz. Für den Anfang können Sie erklären, Ihre Berufung servlet synchronisiert, um sicherzustellen, dass bei den meisten ein Aufruf von run() wird aktiv.
InformationsquelleAutor der Antwort Thorbjørn Ravn Andersen
BEARBEITEN: bisher habe ich Folgendes beschlossen:
form.jsp
EngineServlet.java
Ergebnis.jsp
Was haltet Ihr von dieser Lösung? Alle Probleme, die möglicherweise nicht offensichtlich sein, um jemanden aus einem J2SE-hintergrund ? Ich schrieb auch einige Zweifel, die ich in den code als Kommentare. Danke.
InformationsquelleAutor der Antwort João Silva
Vorausgesetzt, dies ist nicht eine einmalige Anwendung, die nicht brauchen jede Art von Aktualisierung/Wartung in der Zukunft, würde ich empfehlen, dass Sie tun die view-Schicht mit Apache Wicket aus folgenden Gründen (Lesen Sie die kurze infoblurb von der homepage zunächst):
InformationsquelleAutor der Antwort Esko
Steg ist ein sehr leichtgewichtiger container, - und ideal für Ihre Entwicklungs-Szenario.
Vielleicht möchten Sie sich bei Wicket für die rendering-Seite; Sie scheinen sich wohler tut-code-wie die Aufgaben im Gegensatz zu den geraden UI.
Dem Muster, das Sie beschreiben, ist das Singleton-Muster. Werfen Sie einen Blick auf die google-Ergebnisse für singleton in java.
InformationsquelleAutor der Antwort joeslice
Wort der Vorsicht: Vorsicht vor race-Bedingung. Möglicherweise müssen Sie synchronisiert Schlüsselwort für diejenigen Methoden, bei denen update/modify-operation.
InformationsquelleAutor der Antwort janetsmith
Dies ist eine ziemlich offene Frage, und es gibt eine riesige Anzahl von möglichen Antworten, je nach Ihren Anforderungen. Die standard Weg zu schreiben, web-Anwendungen mit Hilfe der Java EE-Plattform, was bedeutet, JSPs, servlets und EJBs für die business-Logik. Allerdings gibt es durchaus ein paar beliebte und alternativen wie Spring, Seam, GWT, und noch radikalere alternativen wie JRuby on Rails. Es klingt wie Ihre Bedürfnisse sind ziemlich einfach, so dass Sie wahrscheinlich wollen zu gehen, mit einer einfachen Lösung wie Jetty + Servlets + JSP.
Nehme ich an, dass Ihr Motor in der Lage mehrere gleichzeitige Anfragen? Wenn nicht, möchten Sie vielleicht zu schauen, um herauszufinden, einen Weg, um queue-Anforderungen, wie z.B. JMS.
InformationsquelleAutor der Antwort Ken Liu