Das Google Web Toolkit macht einem Java-Entwickler richtig Spaß. Damit die PHP Entwickler auch etwas von diesem Spaß abhaben, müssen sie nicht auf Java wechseln. Man kann Das GWT Frontend mit dem PHP Backend verbinden. Das ist ja grundsätzlich richtig einfach. Man nutzt zum Beispiel JSON um Daten auszutauschen.
GWT unterstützt dies natürlich (es fällt schließlich JS aus dem GWT-Compiler raus) und PHP unterstützt JSON inzwischen auch nativ (ab Version 5.2). Alternativ kann man auch mit XML-Daten arbeiten. Das eigentlich Probleme ist die „Same Origin Policy„.
Bei GWT entwickelt man im Hosted Mode, um Zeit beim Compilieren zu sparen. Dieser Hosted Mode startet einen Jetty-Webserver, der die Html und JS-Dateien hostet und auch einen Servlet Container anbietet, der für PHP nicht interessant ist. Für PHP nutzt man einen Apache mit mod_php. Die beiden Server laufen auf 2 verschiedenen Ports. Die Single Origin Policy besagt, dass nun, dass ein XmlHttpRequest nur auf die gleiche Domäne zugreifen kann. Die gleiche Domäne ist definiert als Host inklusive Port. Das bedeutet localhost:8888 ist nicht localhost:8080. Somit ist die beschriebene Kombination nicht nutzbar; also muss eine andere Lösung gefunden werden, damit man GWT mit PHP verknüpfen und im hosted Mode entwickeln kann.
Zuerst legt man wie gwöhnlich ein GWT Projekt an. Startet man dieses, verhält sich alles wie immer und das kann man folgendermaßen ändern. Zuerst legt man im Apache ein Alias auf das WAR-Verzeichnis des GWT-Projekts an. Alternativ kann man auch im Apache htdocs-Ordner einen symbolischen Link auf das WAR-Verzeichnis setzen. Nun hat man in beiden Fällen die Möglichkeit über ein Unterverzeichnis des Apache auf das GWT Projekt zuzugreifen (bspw. http://localhost/meinprojekt/).
Jetzt möchte man den Hosted Mode nutzen. Hierfür bearbeitet man die „Run Configuration“ des GWT Projekts. Im Arguments-Tab nutzt man „-noserver“ und um den Port des Apaches dem Hosted Mode bekannt zumachen „-port 80“ (oder welcher Port auch immer genutzt wird).
Jetzt passt man noch den Pfad an. Hierfür ändert man im GWT-Tab der Run Configuration den Pfad entsprechend des zuvor angelegten Links.
Führt man nun die Konfiguration aus, so kann man auf dem Apache die GWT Anwendung nutzen. Insgesamt verhält sich die Anwendung wie im Jetty. Jedoch hat man keinen Zugriff auf die Service-Funktionalität.
Zu erwähnen bleibt, dass man den Apache durchaus auch durch einen IIS oder Tomcat oder sonstiges ersetzen kann.