JBoss als HTTP-Server?

8

Ich versuche, eine Webapp zu schreiben, wo die Server-Seite nur json / REST-Dienste anbietet, und die gui wird in HTML5, Backbone, Marionette usw. mit asynchronem XHR geschrieben. Das html, js, css, etc. ist statisch und cachbar (wenn es in der Produktion bereitgestellt wird).

Ich muss dies für JBoss EAP6 bereitstellen (entspricht weitgehend AS7 für dieses Problem). Während der Entwicklung möchte ich in der Lage sein, meine Javascript- und HTML-Vorlagen zu bearbeiten und die Ergebnisse sofort im Browser sichtbar zu machen. In der Produktion muss ich meinen statischen Inhalt (das Frontend) explodieren lassen und nicht in irgendeiner Art von Java-EE-Struktur einsetzen (also kein Krieg oder Ohr (oder Sar)).

Im Grunde genommen muss ich wie üblich Kriege nach jboss führen, und ich brauche jboss auch als HTTP-Server für den statischen Teil der App.

Ich habe mit der Idee gespielt, meinen Inhalt in das Verzeichnis welcome-content im Stammverzeichnis von EAP6 zu kopieren. Während dies dem Inhalt ohne Probleme dient, kann ich nicht mit dieser Struktur für die Entwicklung arbeiten, weil ich nicht mit dem Zeitaufwand leben kann, meine Änderungen in ein anderes Verzeichnis zu kopieren. Ich habe auch einen Symlink von welcome-content zu meinem statischen Inhalt in der Entwicklungsumgebung versucht, aber das funktioniert nicht in dieser Version von jboss.

Edit: Ich habe Antworten, die mir sagen, wie ich das Problem lösen soll, aber ich bin nicht wirklich auf der Suche nach einem Workaround - das ist einfach. Ich suche wirklich spezifisch, wie man jboss konfiguriert, um statischen Inhalt zu dienen.

TIA.

    
Engineer Dollery 11.09.2013, 20:31
quelle

2 Antworten

0

Sie könnten einfach die statische html / css / js wie gewohnt bereitstellen und ein Werkzeug verwenden, um Änderungen in Echtzeit in das DOM zu injizieren. Ich mache das mit GruntJS jetzt mit grunt-contrib-watch und es funktioniert ziemlich gut.

    
Zach Lysobey 26.02.2014 21:36
quelle
-1

Aktualisieren
TL; DR Ich gehe davon aus, dass das ursprüngliche Problem seit mehr als 5 Jahren, seit es angefordert wurde, längst gelöst ist. Wenn jemand wirklich darauf besteht, JBoss als statischen Datei-Webserver zu verwenden, dann ist die Lösung, die in der Frage erwähnt wird, die Lösung - mit welcome-content -Verzeichnis. Mit EAP6 müssen Sie ein aktives kostenpflichtiges Abonnement von RedHat haben, um es in der Produktion verwenden zu können, und ihre Wissensdatenbank liefert die gleiche Antwort .
Da es nicht mehr 2013 ist, sollte das Kopieren einiger statischer Dateien kein Problem mehr sein, und die meisten IDEs können das recht gut handhaben (nur das Kopieren der geänderten Dateien usw.).
Für alle anderen, die von Google hierher kommen, ist es IMHO vorteilhafter, auf die richtigen Tools für den Job zu verweisen und Backend- und Frontend-Deployment zu trennen (Btw Nginx war lange vor 2013 verfügbar und Apache war schon seit Ewigkeiten hier :)) .

Obwohl es möglich ist, Ihre statischen Web-Assets über JBoss zu hosten, ist es eine ziemlich ineffiziente Nutzung des Java-Webservers. Da Ihr Frontend vollständig von Ihrem Java Backend getrennt ist, stellen Sie es auf dedizierten Webservern bereit - zum Beispiel Nginx oder Apache, das wesentlich effizienter und für die Bereitstellung von statischen Inhalten geeignet ist. (Oder eine spezielle Wildfly with Undertow if Sie müssen)

Sie geben nicht an, ob Sie nur eine einzelne JBoss-Instanz oder eine komplexere Implementierung haben, aber ein gängiges Szenario für einen Anwendungsfall wie Ihren lautet so:

%Vor%

Gehen Sie zur Nginx-Dokumentation , um weitere Informationen zu erhalten.

Vorteile der Verwendung dedizierter Webserver:

  • Sie können es gleichzeitig als Load Balancer verwenden, fügen Sie einfach weitere Jboss-Instanzen hinzu, aktualisieren Sie die Upstream-Konfiguration und Sie haben ein skalierbares Backend, yey
  • Die Bereitstellung Ihres Frontend ist einfach eine Kopie statischer Dateien in den entsprechenden Ordner - Sie müssen keinen Neustart durchführen, Sie können die Pfade entsprechend Ihrer Ordnerstruktur konfigurieren.
  • Nginx (oder gut konfigurierter Apache) kann sehr einfach mit extremer Last umgehen, er verwendet Event-Mechanismen anstelle von Threads, + Sie können mit Caching-Strategien usw. experimentieren.
  • Sie mildern Ihren Java-Webserver vor dem Overhead der Bereitstellung statischer Web-Assets und Sie können ihn für das optimieren, was er am besten bietet - Server Ihres Java-Web-Service
  • Sie können mehrere Web-Frontends oder mehrere Projekte mit einem anderen Hostnamen bereitstellen, so dass Sie Dev- und Testversionen Ihrer App auf demselben physischen Server hosten und sie zum Beispiel an Ссылка und Ссылка
  • Sie können den Webserver für die SSl-Verschiebung verwenden, was wiederum Ihren JBoss-Anwendungsserver von der Last der SSL-Behandlung entlastet.
yntelectual 01.04.2018 07:15
quelle

Tags und Links