2012-12-12 8 views
5

Das Projekt, an dem ich arbeite, ist ziemlich spezifisch. Wir verwenden GWT mit SAP-Backend. Wir betreiben den Dev-Modus die folgende Konfiguration verwenden (als Programmargumente; Ich betreibe das Projekt direkt mit IntelliJ IDEA)Super Dev Mode auf einem Remote-Server

-noserver -logLevel INFO -startupUrl http://server-url:8000/aaa -whitelist ^http[:][/][/]server-url[.]eu[:]8000/aaa com.company.project.main.Main 

Hinweis, wir haben nicht einen lokalen Server (-noserver) verwenden.

Nachdem ich mich mit dem Super-Dev-Modus vertraut gemacht habe, habe ich verstanden, dass es ähnlich funktioniert wie GWT Web Mode, d. H. Es kompiliert JavaScript (der zu kompilierende Ordner kann angegeben werden) und führt dann den Code-Server mit dem gehosteten Skript aus.

Aufgrund der Besonderheiten des Projekts wird das kompilierte JavaScript mithilfe von Maven über WebDav auf dem Remote-Server bereitgestellt. Wenn Sie einfach -workDir als Parameter angeben, werden die Skripts nicht auf dem Remote-Server bereitgestellt. Noch können wir (zumindest im Moment) einen Java-Server unter der server-url-Adresse betreiben.

Können wir in dieser Situation den Super Dev Mode verwenden?

Antwort

9

Ja, Sie können.

EDIT 2016.11.27: Ich baute eine devserver die -launcherDir -Stil SuperDevMode ohne die Notwendigkeit, den Server schreiben können, durch einen webpack artigen Proxy: https://github.com/tbroyer/gwt-devserver

EDIT: Es gibt ein paar Probleme. Deferred-Binding-Eigenschaften. Die empfohlene Verwendung von SDM (seit GWT 2.7) ist die Verwendung von -launcherDir, dh die Verwendung eines lokalen Servers.

SuperDevMode funktioniert ähnlich wie DevMode mit -noserver, was bedeutet, dass Sie Ihre App mindestens einmal auf Ihrem Server bereitstellen müssen. Im Fall von SuperDevMode bedeutet dies, dass Sie kompilieren und mit dem xsiframe Linker und devModeRedirectEnabled Property auf true 0 bereitstellen müssen.

Dann starten Sie SuperDevMode auf Ihrem Computer, erstellen Sie Ihre Bookmarklets, wenn nicht bereits geschehen, laden Sie Ihre App vom Remote-Server und klicken Sie auf Dev Mode On Bookmarklet.

Dies speichert etwas in sessionStorage des Browsers, so dass das Neuladen der Seite nun die Permutation von dem SuperDevMode lädt, der auf Ihrem Computer und nicht auf dem entfernten Server läuft.

Weitere Informationen darüber, wie SuperDevMode funktioniert: http://blog.ltgt.net/how-does-gwts-super-dev-mode-work/

+0

Aber die, welche Parameter sollte ich den Super-Dev-Modus laufen? Shoul Ich gebe es als '-bindAddress server-url -port 8000' an? Wenn ich das tue, bekomme ich 'java.net.BindException: Kann angeforderte Adresse nicht zuweisen' und eine Warnung' failed SelectChannelConnector @ server-url: 8000'. – Vic

+2

Die Antwort ist richtig, es ist möglich. Allerdings musste ich den SuperDevMode mit der '-bindAddress 0.0.0.0' ausführen.Dann öffnete ich den angebotenen Link "http: // victor-dell: 9876", wo ich die Bookmarklets ziehen konnte. Der nächste Schritt war, meine "http: // server-url: 8000/aaa" zu öffnen und dann auf das Bookmarklet "Dev Mode On" zu klicken. Ich kann auch auf "http: // victor-dell: 9876" überspringen, sobald ich diese Bookmarklets habe. – Vic

+0

Ohne die '-bindAddress' können Sie einfach auf den Codeserver bei 'localhost' oder' 127.0.0.1' zugreifen, und alles sollte gleich funktionieren. –

0

Vorerst sehe ich nur eine mögliche Lösung, die die gwt-codeserver.jar irgendwie auf dem SAP-Server (mit der Adresse, sagen wir, http://server-url:8000/bbb) ausgeführt ist und ein Servlet schreiben, die alle Anforderungen an http://server-url:8000/aaa umleitet. Dies ist jedoch nicht sehr einfach zu implementieren. Der SAP-Server verfügt über einen "trickreichen" Authentifizierungsmechanismus, bei dem der Benutzer zunächst die Anmeldeseite sieht und dann zu einer generierten sitzungsspezifischen URL umgeleitet wird.

Andere Ideen sind sehr willkommen.