Created

2 May 2011

Dienstcode implementieren

 
 

Code

Der Code muss nicht bearbeitet werden.
 

Übung

In dieser Übung lernen Sie, wo Sie Ihren Dienstcode, d. h. Ihre Server-seitigen Klassendateien, ablegen müssen, damit Ihre Flex-Applikation darauf zugreifen kann. Je nach Applikations-Server sind andere Schritte erforderlich. Daher werden PHP, ColdFusion und Java separat behandelt.
 

 
PHP

Wenn Sie eine Flex- und PHP-basierte Applikation auf einen Produktions-Server verschieben, müssen Sie sicherstellen, dass
 
  • das Zend-Framework auf dem Server installiert ist,
  • die Dateien „gateway.php“ und „amf_config.ini“ auf dem Server gespeichert sind und mit den richtigen Pfaden zu den Speicherorten auf dem Produktions-Server aktualisiert wurden und
  • die PHP-Klassen, die von der Flex-Applikation aufgerufen werden, in einem der Verzeichnisse vorhanden sind, die in der Datei „amf_config.ini“ angegeben sind.

 
1. Schritt: Generierte Datei „EmployeeService“ in Flash Builder durchsuchen

Öffnen Sie die Datei „services.employeeservice_Super_EmployeeService.as“. Suchen Sie die Zuweisungsanweisungen für „source“, endpoint und „destination das“ (siehe Abbildung 1).
 
Wenn Sie in Flash Builder einen Datendienst erstellen, geben Sie den Pfad der aufzurufenden PHP-Klasse an. Der Name dieser Klasse ist im Quellcode dieser generierten Dienstdatei enthalten, der Speicherort jedoch nicht.
 
 Zeigen Sie den Code an, der den Speicherort der PHP-Klasse angibt.

Abb. 1: Zeigen Sie den Code an, der den Speicherort der PHP-Klasse angibt.

Hinweis: endpoint, die aufzurufende Datei, entspricht der Datei „gateway.php“ auf Ihrem PHP-Server. Wenn Sie Flash Builder 4.5 für PHP verwenden, wird ein öffentlicher Ordner für das PHP-Projekt erstellt und die generierten Dateien „gateway.php“ und „amf_config.ini“ werden darin gespeichert. Wenn Sie Ihre Dateien auf einem Webserver bereitstellen, müssen Sie sicherstellen, dass die Datei „gateway.php“ am selben Ort bleibt (oder Sie müssen die Flex-Dienstklassendatei ändern).
 
Sollte sich die PHP-Klasse ändern, können Sie den Datendienst in der Ansicht „Daten/Dienste“ aktualisieren und die zugehörigen generierten Dateien werden automatisch mit den Änderungen angepasst. Wenn Sie die PHP-Klasse jedoch umbenennen, müssen Sie den Datendienst neu erstellen.
 

 
2. Schritt: Generierte Flash Remoting-Dateien öffnen

Öffnen Sie in Flash Builder für PHP die Dateien „gateway.php“ und „amf_config.ini“, die sich im öffentlichen Ordner des PHP-Projekts „TestDrive“ befinden.
 
„gateway.php“ ist der Endpunkt aller Flash Remoting-Anforderungen von Ihrer Applikation. Diese PHP-Datei verarbeitet (zusammen mit dem Zend-Framework) die Dienstanforderungen, ruft dazu die richtige Klassenmethode auf und übernimmt die Konvertierung und Verpackung der Daten. Sie verweist auf die Konfigurationsdatei „amf_config.ini“. Diese Datei gibt das Webroot-Verzeichnis, den Speicherort des Zend-Frameworks, eine Produktionsmarkierung (zum Unterdrücken von Debug-Meldungen) und die Verzeichnisse vor, in denen nach Klassen gesucht wird, die in Dienstaufrufen spezifiziert wurden:
 
[zend] ;set the absolute location path of webroot directory, example: ;Windows: C:\apache\www ;MAC/UNIX: /user/apache/www webroot =/usr/local/zend/apache2/htdocs/ ;set the absolute location path of zend installation directory, example: ;Windows: C:\apache\PHPFrameworks\ZendFramework\library ;MAC/UNIX: /user/apache/PHPFrameworks/ZendFramework/library ;zend_path = [zendamf] amf.production = true amf.directories[]=TestDrive/services
Hier sind die Verzeichnisse aufgelistet, die die Klassen enthalten, die in Flash Remoting-Dienstaufrufen verwendet werden. Das heißt, wenn Sie Ihre Flex-Applikation auf einem Webserver implementieren, müssen alle PHP-Klassen, die die Applikation aufruft, in einem dieser Verzeichnisse gespeichert sein. Andernfalls müssen Sie diese Datei mit dem neuen Verzeichnis aktualisieren. Setzen Sie außerdem „amf.production“ auf true, damit Debug-Meldungen unterdrückt werden.
 
Auch die Datei „amf_config.ini“ muss mit dem Webroot-Verzeichnis und dem Pfad des Zend-Framework auf dem Produktions-Server aktualisiert werden.
 

 
3. Schritt: PHP-Webroot-Verzeichnis öffnen

Suchen Sie den Zend-Framework-Ordner.
 
Das Zend-Framework muss auf dem Produktions-Server installiert sein. Vergewissern Sie sich außerdem, dass der richtige Pfad in der Datei „amf_config.ini“ angegeben ist.
 
In diesem Modul haben Sie die Grundlagen zur Implementierung einer Flex-Applikation gelernt. Sie wissen jetzt, wie Sie einen Releasebuild erstellen, die Applikation in eine Web-Seite einbetten und sicherstellen, dass sie auf Ihre Server-seitigen Dienstdateien zugreifen kann.
 

 
ColdFusion

Speichern Sie die Flex-Applikation und die ColdFusion-Komponenten, die sie aufruft, unter /ColdFusion/wwwroot/. Sie müssen sie nicht im selben Ordner speichern und können sie auch in einem beliebigen Unterordner ablegen. Der relative Pfad zwischen ihnen spielt keine Rolle. Die CFCs dagegen müssen denselben relativen Pfad zum Webroot aufweisen wie auf dem Entwicklungs-Server.
 
Wenn Sie die CFCs außerhalb des Webroots ablegen möchten, müssen Sie eine ColdFusion-Zuordnung mit Verweis auf diesen Pfad erstellen und anschließend in der für Flash Remoting-Anforderungen verwendeten Konfigurationsdatei angeben, dass ColdFusion-Zuordnungen zu verwenden sind.
 

 
1. Schritt: Flash Remoting-Konfigurationsdatei suchen

Wählen Sie „Projekt“ > „Eigenschaften“ und anschließend „Flex-Erstellungspfad“.
 
Daraufhin wird folgendes Compiler-Argument angezeigt:
 
-services "/Applications/ColdFusion9/wwwroot/WEB-INF/flex/services-config.xml"
Dieses Compiler-Argument wurde hinzugefügt, als Sie das Projekt erstellt und festgelegt haben, dass ein ColdFusion-Server und Flash Remoting verwendet werden. Es gibt den Pfad der Datei „services-config.xm“ an, die die Details zur Kommunikation zwischen der Applikation und dem Server enthält und angibt, welche Server-seitigen Klassen die Anforderungen verarbeiten und die Konvertierung und Verpackung von Daten übernehmen.
 

 
2. Schritt: Datei „services-config.xml“ öffnen

Diese Datei finden Sie in /ColdFusion9/wwwroot/WEB-INF/flex/. Suchen Sie das Tag coldfusion in der Kanaldefinition „my-cfamf“.
 
In dieser Definition ist festgelegt, ob ColdFusion Zuordnungen zur Ermittlung von CFCs verwendet, ob der Zugriff auf öffentliche und externe Methoden möglich ist und wie Eigenschaftswerte bei der Konvertierung zwischen ColdFusion und ActionScript verarbeitet werden (anders als bei ActionScript spielt die Groß- und Kleinschreibung bei ColdFusion keine Rolle).
 
<coldfusion> <access> <use-mappings>true</use-mappings> <method-access-level>remote</method-access-level> </access> <use-accessors>true</use-accessors> <use-structs>false</use-structs> <property-case> <force-cfc-lowercase>true</force-cfc-lowercase> <force-query-lowercase>true</force-query-lowercase> <force-struct-lowercase>true</force-struct-lowercase> </property-case> </coldfusion>
Am Dateianfang steht auch eine include-Anweisung für die Datei „remoting-config.xml“.
 
<service-include file-path="remoting-config.xml" />
Hinweis: Wenn Sie nicht mit ColdFusion 9 arbeiten, werden Ihre Konfigurationsdateien etwas anders aussehen. Weitere Informationen hierzu finden Sie in der Dokumentation zu ColdFusion.
 

 
3. Schritt: Datei „remoting-config.xml“ öffnen

Diese Datei steht unter /ColdFusion9/wwwroot/WEB-INF/flex/. Suchen Sie das ColdFusion-Zielverzeichnis.
 
Dieses Verzeichnis ist das Standardziel, das für Aufrufe der Flex-Applikation an eine beliebige ColdFusion-Komponente verwendet wird. Das Platzhalterzeichen (*) für die Quelle bedeutet, dass eine CFC mit beliebigen Speicherort aufgerufen werden kann. In diesem Fall muss der Speicherort der CFC in der Flex-Applikationsdatei angegeben werden.
 
<destination id="ColdFusion"> <channels> <channel ref="my-cfamf"/> </channels> <properties> <source>*</source> </properties> </destination>
Hinweis: Sie können auch benannte Zielverzeichnisse angeben, die einem bestimmten CFC-Endpunkt zugeordnet sind.
 

 
4. Schritt: Generierte Datei „EmployeeService“ in Flash Builder durchsuchen

Öffnen Sie die Datei „services.employeeservice_Super_EmployeeService.as“. Suchen Sie die Zuweisungsanweisungen für „source“ und „destination das“ (siehe Abbildung 2).
 
Wenn Sie in Flash Builder einen Datendienst erstellen, geben Sie den Speicherort der aufzurufenden CFC an. Dieser Wert ist im Quellcode dieser generierten Dienstdatei definiert. Beachten Sie, dass als „destination das“ „ColdFusion“, der Name des Standardziels in der Remoting-Konfigurationsdatei, und als „source“ der Pfad zur CFC vom Webroot-Verzeichnis angegeben ist.
 
 Zeigen Sie den Code an, in dem der Speicherort der CFC aufgeführt ist.

Abb. 2: Zeigen Sie den Code an, in dem der Speicherort der CFC aufgeführt ist.

Sollte sich die CFC ändern, können Sie den Datendienst in der Ansicht „Daten/Dienste“ aktualisieren und die zugehörigen generierten Dateien werden mit den Änderungen angepasst. Wenn Sie die CFC jedoch verschieben oder umbenennen, müssen Sie den Datendienst neu erstellen. Das heißt, wenn Sie Ihre Flex-Applikation auf einem Webserver implementieren, müssen alle von ihr aufgerufenen CFCs denselben relativen Pfad zum Webroot aufweisen wie auf dem Entwicklungs-Server.
 
In diesem Modul haben Sie die Grundlagen zur Bereitstellung einer Flex-Applikation gelernt. Sie wissen jetzt, wie Sie einen Releasebuild erstellen, die Applikation in eine Website einbetten und sicherstellen, dass sie auf Ihre Server-seitigen Dienstdateien zugreifen kann.
 

 
Java

Wenn Sie eine Flex- und Java-basierte Applikation auf einen Produktions-Server verschieben, müssen Sie BlazeDS für die Web-Applikation einrichten, zu der Sie Ihre Flex-Applikation hinzufügen. Außerdem müssen Sie die Datei „remoting-config.xml“ bearbeiten und ein Ziel mit dem Namen Ihrer Applikation und einem Verweis auf die richtige Java-Klasse hinzufügen.
 

 
1. Schritt: BlazeDS-Dateien suchen

Navigieren Sie zum Verzeichnis „/testdrive/“ .
 
Wenn Sie eine neue Web-Applikation erstellen, können Sie einfach die Entwicklungsversion Ihrer Applikation verpacken und implementieren. Andernfalls müssen Sie BlazeDS für die Produktionsversion der Web-Applikation einrichten. Die notwendigen Dateien erhalten Sie aus der Entwicklungsversion der Web-Applikation. Oder laden Sie die BlazeDS-WAR-Datei herunter und extrahieren Sie die erforderlichen Dateien.
 
Navigieren Sie zum Verzeichnis testdrive/WEB-INF/lib . Sie müssen alle JAR-Dateien aus diesem Ordner in den „lib“-Ordner der Produktionsversion Ihrer Web-Applikation kopieren (siehe Abbildung 3). Die meisten werden für die Kommunikation zwischen Flash Player und dem Server verwendet. Davon ausgenommen sind „flex-rds-server.jar“ und „derby.jar“. Die Datei „flex-rds-server.jar“ wird von Flash Builder in der Entwicklungsphase zum Erstellen eines Datendiensts durch Introspektion der Server-seitigen Klassen verwendet. Die Datei „derby.jar“ ist, wie der Name schon sagt, für die in Apache Derby eingebettete Datenbank, die von der Applikation verwendet wird.
 
 Zeigen Sie die erforderlichen BlazeDS-Dateien an.

Abb. 3: Zeigen Sie die erforderlichen BlazeDS-Dateien an.

Navigieren Sie zum Verzeichnis /testdrive/WEB-INF/flex. Sie müssen diesen Ordner in den Ordner „WEB_INF“ der Produktionsversion Ihrer Web-Applikation kopieren. Er enthält sämtliche BlazeDS-Konfigurationsdateien.
 
Öffnen Sie die Datei /testdrive/WEB-INF/web.xml. Diese Datei muss ebenfall in den WEB-INF-Ordner der Produktionsversion kopiert werden. Wenn für die Produktionsversion der Web-Applikation bereits eine Datei „web.xml“ konfiguriert ist, können Sie einfach die Servlet-Zuordnung für MessageBrokerServlet und den Listener für HttpFlexSession kopieren. Der Code müsste so aussehen:
 
<!-- Http Flex Session attribute and binding listener support --> <listener> <listener-class>flex.messaging.HttpFlexSession</listener-class> </listener> <!-- MessageBroker Servlet --> <servlet> <servlet-name>MessageBrokerServlet</servlet-name> <display-name>MessageBrokerServlet</display-name> <servlet-class>flex.messaging.MessageBrokerServlet</servlet-class> <init-param> <param-name>services.configuration.file</param-name> <param-value>/WEB-INF/flex/services-config.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>MessageBrokerServlet</servlet-name> <url-pattern>/messagebroker/*</url-pattern>> </servlet-mapping>
Die andere Servlet-Zuordnung, die Sie in der Datei „web.xml“ sehen, ist für das RDSDispatchServlet. Dieses Servlet wird von Flash Builder zum Erstellen eines Datendienstes durch Introspektion von Server-seitigen Klassen verwendet.
 

 
2. Schritt: Dateien „services-config.xml“ und „remoting-config.xml“ öffnen

Diese Dateien befinden sich unter /testdrive/WEB-INF/flex/.
 
In der Datei „services-config.xml“ finden Sie eine include-Anweisung für „remoting-config.xml“.
 
<service-include file-path="remoting-config.xml" />
Suchen Sie das Ziel für „employeeService" in der Datei „remoting-config.xml“:
 
<destination id="employeeService"> <properties> <source>services.EmployeeService</source> <scope>application</scope> </properties> </destination>
Die Applikation auf dem Produktions-Server, zu der Sie Ihre Applikation hinzufügen, muss ebenfalls eine „remoting-config.xml“ umfassen, die ein Ziel mit diesem Namen und einem Verweis auf die richtige Java-Klasse enthält. Die Java-Klasse kann sich an einer anderen Stelle befinden als auf dem Entwicklungs-Server. Im Ziel muss den Speicherort auf dem Produktions-Server definiert sein.
 

 
3. Schritt: Verweis der Flex-Applikation auf die Datei „service-config.xml“ ermitteln

Wählen Sie in Flash Builder „Projekt“ > „Eigenschaften“ und anschließend „Flex Compiler“.
 
Es wird ein Compiler-Argument angezeigt, das in etwa so aussieht:
 
-services "/Applications/tomcat/webapps/testdrive/WEB-INF/flex/services-config.xml"
Dieses Compiler-Argument wurde hinzugefügt, als Sie das Projekt erstellt und festgelegt haben, dass ein Java-Server und BlazeDS verwendet werden.
 

 
4. Schritt: Generierte Datei „EmployeeService“ in Flash Builder durchsuchen

Öffnen Sie die Datei „services.employeeservice_Super_EmployeeService.as“. Suchen Sie die Zuordnungsanweisung für das Ziel (siehe Abbildung 4).
 
Wenn Sie in Flash Builder einen Datendienst erstellen, wählen Sie einen Dienst aus einer Liste von Zielen, die bereits in der Datei „remoting-config.xml" definiert sind.
 
 Zeigen Sie den Code an, in dem der Speicherort der Java-Klasse aufgeführt ist.

Abb. 4: Zeigen Sie den Code an, in dem der Speicherort der Java-Klasse aufgeführt ist.

Sollte sich die Klasse ändern, können Sie den Datendienst in der Ansicht „Daten/Dienste“ aktualisieren. Die generierten Dateien werden automatisch mit den Änderungen angepasst. Wenn Sie die Klasse verschieben, muss das Ziel in der Datei „remoting-config.xml“ mit dem neuen Speicherort aktualisiert werden. Wenn Sie die Klasse jedoch während der Entwicklung umbenennen, müssen Sie den Datendienst neu erstellen.
 
In diesem Modul haben Sie die Grundlagen zur Bereitstellung einer Flex-Applikation gelernt. Sie wissen jetzt, wie Sie einen Releasebuild erstellen, die Applikation in eine Website einbetten und sicherstellen, dass sie auf Ihre Server-seitigen Dienstdateien zugreifen kann.
 

 
Weitere Infos

Näheres zu diesem Thema finden Sie hier:
 
 
Dokumentation