Created

22 March 2010

Requirements

User level
Beginning
 
 

 
Dienstcode implementieren

 
 

 
Code

Der Code muss nicht bearbeitet werden.
 

 
Übung

In dieser Übung lernen Sie, wo Sie Ihren Dienstcode, d. h. Ihre serverseitigen Klassendateien, ablegen müssen, damit Ihre Flex-Anwendung darauf zugreifen kann. Je nach Anwendungsserver sind andere Schritte erforderlich. Daher werden PHP, ColdFusion und Java separat behandelt.
 
 
PHP
Wenn Sie eine Flex- und PHP-basierte Anwendung auf einen Produktionsserver verschieben, müssen Sie sicherstellen, dass
 
  • das Zend-Framework auf dem Server installiert ist,
  • die Dateien „gateway.php“ und „amf-config.ini“ im selben Ordner wie die SWF-Datei gespeichert sind und
  • die PHP-Klassen, die von der Flex-Anwendung aufgerufen werden, in einem der Verzeichnisse stehen, die in der Datei „amf-config.ini“ angegeben sind.
Die Datei „amf-config.ini“ muss außerdem mit dem Webrootverzeichnis des Produktionsservers und dem Pfad des Zend-Framework aktualisiert werden.
 
 
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 (siehe Abbildung 5).
 
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.

Abbildung 5: Zeigen Sie den Code an, der den Speicherort der PHP-Klasse angibt.

Beachten Sie, dass als endpoint (entspricht der aufzurufenden Datei) die Datei „gateway.php“ eingerichtet ist, die sich im selben Verzeichnis wie die SWF-Datei befindet. Sofern diese Datei nicht bereits besteht, wird sie von Flash Builder erstellt. Wenn Sie Ihre Dateien auf einem Webserver implementieren, müssen Sie sicherstellen, dass „gateway.php“ und die SWF-Datei sich im selben Ordner befinden.
 
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 im Ordner „bin-debug“ (oder „bin-release“) die Dateien „gateway.php“ und „amf-config.ini“.
 
„gateway.php“ ist der Endpunkt aller Flash Remoting-Anforderungen von Ihrer Anwendung. 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 Webrootverzeichnis, den Speicherort des Zend-Frameworks, eine Produktionsmarkierung (zum Unterdrücken von Debugmeldungen) 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-Anwendung auf einem Webserver implementieren, müssen alle PHP-Klassen, die die Anwendung aufruft, in einem dieser Verzeichnisse gespeichert sein. Andernfalls müssen Sie diese Datei mit dem neuen Verzeichnis aktualisieren.
 
Selbstverständlich müssen Sie die Datei „amf-config.ini“ auch mit dem Webrootverzeichnis und dem Pfad des Zend-Frameworks auf dem Produktionsserver aktualisieren.
 
 
3. Schritt: PHP-Webrootverzeichnis öffnen
Suchen Sie den Ordner „ZendFramework“.
 
Das Zend-Framework muss auf dem Produktionsserver installiert sein. Vergewissern Sie sich außerdem, dass der richtige Pfad in der Datei „amf-config.ini“ angegeben ist.
 
Herzlichen Glückwunsch! In diesem Modul haben Sie die Grundlagen zur Implementierung einer Flex-Anwendung gelernt. Sie wissen jetzt, wie Sie einen Releasebuild erstellen, die Anwendung in eine Webseite einbetten und sicherstellen, dass sie auf Ihre serverseitigen Dienstdateien zugreifen kann.
 
In weiteren Testlauf-Übungen können Sie Ihre Kenntnisse vertiefen und lernen, wie Sie das Erscheinungsbild einer Anwendung anpassen , Flex-Charting-Komponenten zur Gestaltung der Oberfläche verwenden u. v. m.
 
 
ColdFusion
Speichern Sie die Flex-Anwendung 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 Entwicklungsserver.
 
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 Compilerargument angezeigt:
 
-services "/Applications/ColdFusion9/wwwroot/WEB-INF/flex/services-config.xml"
Dieses Compilerargument wurde hinzugefügt, als Sie das Projekt erstellt haben (als ColdFusion-Projekt mit Flash Remoting). Es gibt den Pfad der Datei „services-config.xm“ an, die die Details zur Kommunikation zwischen der Anwendung und dem Server enthält und angibt, welche serverseitigen 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 (im Gegensatz zu 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-Anwendung 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-Anwendungsdatei 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 (siehe Abbildung 6).
 
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 „ColdFusion“, der Name des Standardziels in der Remoting-Konfigurationsdatei, und als source der Pfad zur CFC vom Webrootverzeichnis angegeben ist.
 
Zeigen Sie den Code an, in dem der Speicherort der CFC aufgeführt ist.

Abbildung 6: 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-Anwendung auf einem Webserver implementieren, müssen alle von ihr aufgerufenen CFCs denselben relativen Pfad zum Webroot aufweisen wie auf dem Entwicklungsserver.
 
Herzlichen Glückwunsch! In diesem Modul haben Sie die Grundlagen zur Implementierung einer Flex-Anwendung gelernt. Sie wissen jetzt, wie Sie einen Releasebuild erstellen, die Anwendung in eine Webseite einbetten und sicherstellen, dass sie auf Ihre serverseitigen Dienstdateien zugreifen kann.
 
In weiteren Testlauf-Übungen können Sie Ihre Kenntnisse vertiefen und lernen, wie Sie das Erscheinungsbild einer Anwendung anpassen , Flex-Charting-Komponenten zur Gestaltung der Oberfläche verwenden u. v. m.
 
 
Java
Wenn Sie eine Flex- und Java-basierte Anwendung auf einen Produktionsserver verschieben, müssen Sie BlazeDS für die Webanwendung einrichten, zu der Sie Ihre Flex-Anwendung hinzufügen. Außerdem müssen Sie die Datei „remoting-config.xml“ bearbeiten und ein Ziel mit dem Namen Ihrer Anwendung und einem Verweis auf die richtige Java-Klasse hinzufügen.
 
 
1. Schritt: BlazeDS-Dateien suchen
Navigieren Sie zum Verzeichnis „/testdrive/“ .
 
Wenn Sie eine neue Webanwendung erstellen, können Sie einfach die Entwicklungsversion Ihrer Anwendung verpacken und implementieren. Andernfalls müssen Sie BlazeDS für die Produktionsversion der Webanwendung einrichten. Die notwendigen Dateien erhalten Sie aus der Entwicklungsversion der Webanwendung. 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 Webanwendung kopieren (siehe Abbildung 7). 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“ ist in BlazeDS 4 (derzeit als Beta-Version verfügbar) neu und wird von Flash Builder in der Entwicklungsphase zum Erstellen eines Datendienstes durch Introspektion der serverseitigen Klassen verwendet. Die Datei „derby.jar“ ist, wie der Name schon sagt, für die in Apache Derby eingebettete Datenbank, die von der Anwendung verwendet wird.
 
 Zeigen Sie die erforderlichen BlazeDS-Dateien an.

Abbildung 7: 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 Webanwendung 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 Webanwendung bereits eine Datei „web.xml“ konfiguriert ist, können Sie einfach die Servletzuordnung 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 Servletzuordnung, 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 serverseitigen 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 Anwendung auf dem Produktionsserver, zu der Sie Ihre Anwendung 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 Entwicklungsserver. Im Ziel muss den Speicherort auf dem Produktionsserver definiert sein.
 
 
3. Schritt: Verweis der Flex-Anwendung auf die Datei „service-config.xml“ ermitteln
Wählen Sie in Flash Builder „Projekt“ > „Eigenschaften“ und anschließend „Flex Compiler“.
 
Es wird ein Compilerargument angezeigt, das in etwa so aussieht:
 
-services "/Applications/tomcat/webapps/testdrive/WEB-INF/flex/services-config.xml"
Dieses Compilerargument wurde hinzugefügt, als Sie das Projekt erstellt haben (als J2EE-Projekt mit BlazeDS).
 
 
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 8).
 
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.

Abbildung 8: 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.
 
Herzlichen Glückwunsch! In diesem Modul haben Sie die Grundlagen zur Implementierung einer Flex-Anwendung gelernt. Sie wissen jetzt, wie Sie einen Releasebuild erstellen, die Anwendung in eine Webseite einbetten und sicherstellen, dass sie auf Ihre serverseitigen Dienstdateien zugreifen kann.
 
In weiteren Testlauf-Übungen können Sie Ihre Kenntnisse vertiefen und lernen, wie Sie das Erscheinungsbild einer Anwendung anpassen , Flex-Charting-Komponenten zur Gestaltung der Oberfläche verwenden u. v. m.
 

 
Weitere Informationen

Näheres zu diesem Thema finden Sie hier:
 
 
Dokumentation