Adobe Flex Skins, Themes und Components

Adobe Flex Skins, Themes und Components
Skins, Themes und einige Components für Flex sind auf fleksray.org zu finden.

Montag, 29. Oktober 2007

CardLayout Component


Mit dem Cardlayout können UIComponents übereinandergelegt werden. Wie weit sich die Komponenten dabei überlappen, kann über die Parameter x_offset und y_offset gesteuert werden.

Wird eine der Komponenten im Stack angeklickt, erscheint diese im Vordergrund. Gleichzeitig wird ein Event vom Typ CardEvent ausgelöst. Dieses Event enthält im Attribut "selectedCard" eine Referenz auf das angeklickte Objekt. Im EventHandler können also sämtliche Informationen dieses Objektes ausgelesen werden.

Eine Beschreibung der Attribute und EventHandler, sowie eine Beispielanwendungen findet sich hier.
Im Beispiel werden neben einigen Bildern auch ein Button im CardLayout verwendet. Grundsätzlich kann aber jedes Objekt verwendet werden, das die Klasse UIComponent erweitert.

Example Code:

 The CardLayout


<ks:CardLayout id="cl"
x="10" y="10"
offset_x="15"
offset_y="15"
cardOffAlpha="0.7"
dataProvider="{dp}"
cardClicked="clickCardHandler(event)" />


Mittwoch, 10. Oktober 2007

Flex Data Service Tomcat

Um erste erfolgreiche Gehversuche mit dem Flex Data Service zu unternehmen, sollte man sich den FDS-Tomcat von der Adobe Website herunterladen. Dabei handelt es sich um einen Tomcat in der Version 5.5.20, auf dem der Flex Data Service mit allen Abhängigkeiten vorinstalliert ist.

Zu diesen Abhängigkeiten gehört unter anderem JOTM, eine JTA-Implementation. Nimmt man den Flex Data Service auf eigene Faust auf dem Tomcat oder einen anderen Webapplication-Server in Betrieb, kann man die Installation von JOTM leicht vergessen. Das resultiert dann in einem: "Unable to access UserTransaction in DataService" error.

Außerdem sind noch Spring 2.0, Hibernate 3.2 und HSQLDB 1.8 auf dem vorkonfigurierten Tomcat installiert. Diese Pakete sind nicht nötig für den Betrieb des Flex Data Service, einige der mit mitgelieferten Anwendungsbeispiele basieren jedoch auf diesen Technologien.

Der FDS-Tomcat wird, wie erwartet, über das startup.bat bzw. startup.sh Skript gestartet. Über http://localhost:8600 kann nun auf die mitgelieferten Beispielanwendungen zugegriffen werden.
Vorinstalliert sind zehn kleinere Anwendungen, die selten aus mehr als drei Quelldateien bestehen und einen wirklich guten Überblick über die Facetten des Flex Data Service liefern. Die Minianwendungen geben Einblick in die Verwendung von Web Services, Java RPC, Data Push und in andere Implementierungsansätze.
Zwei komplexere Anwendungen zeigen den Einsatz von Hibernate und Spring zusammen mit dem Flex Data Service.

Zuletzt gibt es noch ein Tutorial für Java Entwickler, die erste eigene Schritte mit dem Flex Data Service von Adobe unternehmen wollen.

„Zusammengebaut“ wurde der FDS-Tomcat von Christophe Coenraets, der auch an der Entwicklung JRun beteiligt war und nun bei Adobe arbeitet.

Donnerstag, 13. September 2007

Neue Adobe Flex Skin



Gestern habe ich ein neues Theme zum Skinnen von Flex Applikations auf fleksray.org hochgeladen. Das Theme heißt Treasure Map.

Treasure Map enthält Skins für das Panel, das Accordion, Buttons, den TabNavigator und für diverse Formelemente (TextInput, -area, CheckBox, RadioButton).

Für andere Elemente (Tree, Slider, DataGrid) ist keine Skin vorhanden.

Das Theme Treasure Map ist eher als Spielerei zu verstehen. Es sieht nett aus, ich glaube aber nicht, dass es mal in einer "RealWorld" Applikation eingesetzt wird.

show me the Treasure Map Theme

Montag, 10. September 2007

Background kacheln in Flex

In Adobe Flex ist das Kacheln des Hintergrundes mit einem Image nicht so einfach, wie man es aus der HTML-Welt gewohnt ist. Wird ein Hintergrundbild für die Applikation über das Attribute backgroundImage angegeben, wird dieses in Originalgröße und mittig angezeigt. Setzt man die Eigenschaften width und height auf 100% wird das Image entsprechend vergrößert bzw. verzerrt dargestellt.
Eine Standardfunktion zum Kacheln des Hintergrundes für Flex Applikationen oder einzelner Container gibt es in der aktuellen Version des Flex SDK nicht.

Eine einfache Möglichkeit, um dennoch ein Image hintergrundfüllend zu wiederholen, ist das Programmieren einer eigenen BorderSkin. Diese Skin erweitert die Klasse mx.skins.RectangularBorder oder mx.skins.Border und überschreibt deren Methode updateDisplayList.
In dieser Methode wird am graphics Objekt die Methode beginBitmap aufgerufen.
Als erster Parameter wird das Image als BitmapData erwartet.
Der zweite Parameter ist vom Typ flash.geom.Matrix. Mit der Matrix kann das Hintergrundbild nachträglich transformiert (gedreht, skaliert oder verzerrt) werden.
Im dritten Parameter wird angegeben, ob das Bitmap wiederholt werden soll oder nicht. Für unsere Zwecke muss dieser Parameter also auf true stehen.

Hier ein Beispiel von Maikel Sibbald aus Holland.

Die programmatische BorderSkin

package{
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Graphics;
import flash.display.Loader;
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.geom.Matrix;
import flash.net.URLRequest;

import mx.controls.Image;
import mx.core.BitmapAsset;
import mx.graphics.RectangularDropShadow;
import mx.skins.RectangularBorder;

public class RepeatedBackground extends RectangularBorder{
private var tile:BitmapData;

[Embed(source="/assets/achtergrond_tegel.jpg")]
public var imgCls:Class;


public function RepeatedBackground():void{
var background:BitmapAsset
= BitmapAsset(new imgCls());
this.tile = background.bitmapData;
}

override protected function updateDisplayList(
unscaledWidth:Number,
unscaledHeight:Number):void {
super.updateDisplayList(
unscaledWidth,
unscaledHeight);

var transform: Matrix = new Matrix();

graphics.clear();

graphics.beginBitmapFill(this.tile,
transform,
true);

graphics.drawRect(0, 0,
unscaledWidth,
unscaledHeight);
}
}
}

Einbinden der BorderSkin in die Applikation. Die entwickelte Skin kann für jeden Container eingesetzt werden, der das Attribut borderSkin besitzt.

<?xml version="1.0" encoding="utf-8"?>
<mx:Application
xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute"
borderSkin="RepeatedBackground"
backgroundGradientAlphas="[]"
backgroundImage=""
backgroundAlpha="0"
backgroundColor="#000000"
viewSourceURL="http://labs.flexcoders.nl/samples/RepeatedBackground/srcview/index.html">

</mx:Application>

Montag, 3. September 2007

Transparenter DataGrid Header


blendeMode="multiply"

Setzt man das Attribut backgroundAlpha für die Flex Komponenten DataGrid oder DataChooser auf 0 hat das keinen Einfluss auf die Transparenz des Headers der jeweiligen Komponente. Der Header des DataGrid bzw. des DataChooser übernimmt den Wert für die Hintergrund Transparenz nicht.

Adobe hat offensichtlich kein Attribut vorgesehen, um diese beiden Komponenten vollständig transparent erscheinen zu lassen.
Man kann sich jedoch mit einem kleinem Trick behelfen. Wird das Style Attribut blendMode auf multiply gesetzt, erscheinen die Komponenten vollständig durchsichtig. Der Wert für backgroundAlpha bleibt auf 1 stehen.

Sonntag, 2. September 2007

Der Google Bann

Und plötzlich bist Du nicht mehr dabei. Vergessen, aufs Abstellgleis geschoben, ausgeschlossen aus der Gesellschaft.
Für meine Homepage fleksray.org war der 1. September 2007 der schwarze Samstag. An diesem Tag ist die Seite aus dem Google Index geflogen. Einfach rausgeschmissen.

Selbst wenn ich den Domainnamen eingebe, landet die Website nicht unter den ersten zehn Treffern. Alle Seiten, die Fleksray.org irgendwann mal erwähnt haben (und das sind einige) landen vor fleksray.org in der Trefferliste.

Warum ausgerechnet das? Arbeitslosigkeit, Hartz IV, von der Freundin verlassen werden... alles das hätte ich ertragen können. Aber aus dem Index fliegen? Jetzt bin ich ein Zombie, nicht tot, aber irgendwie auch nicht mehr lebendig. Ich existiere einfach nicht mehr, so als hätte ich keinen Personalausweis, keine Steuer- und keine Sozialversicherungsnummer mehr.

Warum bin ich beim großen Google Gott in Ungnade gefallen? Habe ich nicht genug Opfer gebracht. Hätte ich mehr Ziegen schächten sollen, um dem großen Bruder zu huldigen?

An der Seite selbst kann es kaum liegen. fleksray.org verwendet nur statische HTML Seiten, keine serverseitigen Schikanen, um Suchmaschinen freundliche URL's zu generieren. Keine gekauften Backlinks. Ich verwende nicht eine Zeile JavaScript (außer auf den Seiten, die die *.swf Files ausliefern, Flashplayer Check usw.). Alles plain HTML. Keine weiße Schrift auf weißem Grund. Warum also???

Doch ich werde kämpfen! Die Domains googlegeaechtete.de, googledesperados.es und googlevictims.com sind schon so gut wie mein.

Mal im Ernst, in solchen Momenten denkt man schon mal darüber nach, wozu die Allmacht Google inzwischen fähig ist. Bei fleksray.org handelt es sich um eine rein private Website. Ich habe also keine finanziellen Verluste, auch kam nur ca. ein Viertel aller Besucher über google (allerdings ist ...ähhm... war davon ein Großteil aus Deutschland). Ein wenig schmerzt es schon.

Als Betreiber eines Internetshops wäre meine Existenz möglicherweise auf Gedeih und Verderb von der allmächtigen Suchmaschine abhängig. Ein falsches HTML-Tag zur falschen Zeit... und aus ist der Ofen.


Übrigens der Levenshtein Abstand zwischen google und god beträgt 5, aber den wird google auch noch verkleinern....

You searched for "god" did you mean "google"

Die PopUp ToolBar




Ein Klick auf ein Item in der PopUp ToolBar öffnet ein neues (PopUp) Panel, das beliebige, selbst entwickelte Komponenten enthalten kann. Das geöffnete Panel kann verschoben, minimiert, in der Größe geändert und wieder geschlossen werden.

In der Anwendung wird die PopUp ToolBar mit dem Tag <PopUpToolBar /> deklariert. Die Komponente basiert auf mx.containers.Box und erbt demzufolge alle Properties dieser Klasse. Über das Attribut direction kann die Richtung bestimmt werden, in der die Child-Komponenten der Toolbar angeordnet werden sollen. Mögliche Werte sind horizontal und vertical. Zusätzlich zu den geerbten Eigenschaften der Parent Klasse hat die Toolbar die Properties target und dataProvider.

In der Eigenschaft target (Typ: flash.display.DisplayObjectContainer) wird die Parent Komponente für das PopUp Panel bestimmt. Per default wird hier die Parent Komponente der PopUp ToolBar selbst verwendet. Die Eigenschaft dataProvider erwartet eine ArrayCollection, deren Elemente vom Typ ToolBarItem sein müssen.

Mit der ToolBarItem (<ToolBarItem></ToolBarItem>) Komponente werden Paare von Objekten vom Typ mx.core.UIComponent deklariert. Die erste UIComponent wird für das Icon in der ToolBar verwendet. Hierfür bieten sich Klassen wie Button oder Image an.
Der zweite Eintrag gibt die Komponente an, die im PopUp Panel angezeigt werden soll. Hier bieten sich die mx.containers.* Klassen an. Grundsätzlich kann jedoch für beide Elemente jede Klasse verwendet werden, die auf mx.core.UIComponent basiert.

ToolBarItem erbt alle Eigenschaften und Methoden von mx.collections.ArrayCollection und besitzt zusätzlich die Attribute: title:String, x:Number, y:Number, width:Number, height:Number, event:String. Die hier angegebenen Werte werden auf das PopUp Panel übertragen.
Im Attribut event wird angegeben, auf welches MouseEvent das Item in der Toolbar reagieren soll.

Eine ausführliche Beschreibung der Attribute, Code Beispiele und eine Beispiel Anwendung finden sich auf fleksray.org

Samstag, 25. August 2007

Flex DataManagement Service und Hibernate

Um Hibernate und Adobe Flex in einfacher Weise miteinander zu verbinden, empfiehlt es sich, auf den DataManagement Service des LiveCycle Data Service zurückzugreifen. Damit lassen sich in Java entwickelte Klassen eins zu eins in eine Flex Anwendung übernehmen. Alle Änderungen an Objekten im Flex Client werden direkt auf die Java Objekte übertragen.

Wird der DataManagement Service in Verbindung mit Hibernate verwendet, ist es nicht einmal nötig DataAccess Klassen zu entwickeln. Alle Create-, Update- und Delete-Operationen werden direkt auf die Java Objekte angewendet (hinter den Kulissen führt die Klasse flex.data.adapters.JavaAdapter des DataManagement Service die CRUD Operationen aus).
Diese Vorgehensweise vereinfacht den Entwicklungsaufwand enorm. Die Programmierung von DAO's entfällt.

Die Verwendung des DataManagement Service bringt aber auch Nachteile mit sich. Der Service verwendet das Real Time Messaging Protokol, das im Normalfall Port: 2038 verwendet. Aufrufe über diesen Port werden an den meisten Firewalls scheitern.
Der Einsatz beschränkt sich deshalb mehr oder weniger auf Intranet Anwendungen. Soll Hibernate in klassischen Internet Applikationen eingesetzt werden, kommt man nicht umhin, Data Access Klassen zu implementieren und deren Interface per WebService im Netz zur Verfügung zu stellen.

Weitere Informationen zur Entwicklung einer Flex Anwendung unter Verwendung von Hibernate und dem DataManagement Service finden sich auf http://fleksray.org/flex_datamanagement_service_hibernate.html

Montag, 20. August 2007

Neues Theme für Adobe Flex

Auf fleksray.org steht wieder mal ein neues Theme zum Download zur Verfügung. Das Theme Black Edding fällt in die Scribble Kategorie, jedoch sind die Formen klarer als beim Flekscribble. Für nahezu alle Komponenten existiert eine entsprechende Skin, deshalb ist das Edding Theme sicher eher für den praktischen Einsatz geeignet als die Flekscribble Skin.

Freitag, 17. August 2007

Gründung der Adobe Flex User Group Hamburg

Nun gibt es auch ein Adobe Flex User Group für Hamburg.
Gemeinsam (Christoph Schrörs, Joshua Buttkus und Ralf Sczepan) haben wir die Gruppe gestern aus der Taufe gehoben und sind offiziell als Adobe Flex User Group Hamburg bei den Adobe User Groups registriert.
Ich hoffe auf viele Mitstreiter aus dem nordeutschen Raum. Jeder, der Interesse an Adobe Flex hat, ist herzlich eingeladen mitzumachen.
Geplant ist ein Treffen pro Woche.

Samstag, 4. August 2007

Flex SDK mit Standard Eclipse verknüpfen

Vor einigen Tagen tauchte im Flexforum die Frage auf: Wie verknüpfe ich Standard Eclpise mit dem Flex SDK.

Ich habe versucht die Frage im Forum zu beantworten und will hier meinen Post nochmal etwas strukturierter wiedergeben.
Eclipse lässt sich grundsätzlich mit jedem beliebigen Compiler verknüpfen.
Mit Eclipse können also auch ohne entsprechendes Plugin, Flex Applikationen enwickelt werden.
Wird Eclipse in der beschriebenen Weise verwendet, fehlen natürlich die Goodies wie:
• Anwendungen per Drag und Drop der Komponenten erstellen.
• Codecomplete
usw.

Syntax Highlighting kann durchaus verwendet werden, da es sich bei MXML um ein XML konformes Dokument handelt. Es empfiehlt sich also ein XML-Editor-Plugin für Eclipse zu installieren (oft schon in der Standard Distribution enthalten).

Eclipse für den Flex SDK einrichten

Eclipse starten.
File -> New -> Project

Im sich öffnenden Fenster wählen:
General -> Project dann auf "next" klicken und einen beliebigen Namen vergeben.

Im Package Explorer ist jetzt Dein Projekt sehen.
Ist der Package Explorer nicht zu sehen, dann:
Window -> Show View
Ein Fenster öffnet sich.
Package Explorer auswählen.
Im linken schmalen Fenster ist nun Dein Projekt sehen.

Klicke mit mit der rechten Maustaste auf das Projekt und wähle:
New -> File

Gib dem File einen Namen, z.B. Test.mxml
Testweise in diesem File folgenden Code eintragen:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical">
<mx:Button label="Hallo Welt"/>
</mx:Application>


Jetzt muss noch der Pfad zum Compiler deklariert werden.

Run -> External Tools ->External Tools
Ein Fenster öffnet sich.
Markiere im linken Bereich den grünen Pfeil "Programm".
Klicke jetzt auf das linke obere Symbol "New launch Configuration".
Unterhalb des grünen Pfeils taucht jetzt Deine neue Konfiguration auf,
im rechten Teil des Fensters werden die Einstellungen vorgenommen,

von oben nach unten

Name: gib einen Namen ein

Location: Klicke den Button "Browse File System" und suche nach dem FlexCompiler. (mxmlc.exe) Der liegt im bin Verzeichnis Deines SDK.

Working Directory: Klicke auf "Browse Workspace" und wähle Dein Projekt aus.

Arguments: Hier gibst Du folgendes ein:

-load-config=c:/[Pfad zum SDK]/frameworks/flex-config.xml -output=c:/[ordner, in dem das swf file landen soll ]/test.swf Test.mxml


Wähle "Run" unten links im Fenster.

Wenn alles glatt geht liegt jetzt in dem, von Dir gewähltem Output Order (bei Arguments) die swf-Datei. Per Doppelklick kann diese Datei gestartet werden, ein Button, mit der Aufschrift "Hallo Welt" sollte zu sehen sein.

Wenn Du später Dein Projekt compilieren willst, wähle:

Run -> External Tools -> [Name Deiner Configuration]

Dafür findest Du in der Regel auch einen Button in der Taskleiste (der kleinere grüne Pfeil)

Freitag, 3. August 2007

Flex Scribble Theme in China


Fleksray.org ist nun seit 6 Wochen online und hat laut Google Analytics im Durchschnitt 300 Besucher täglich. Fleksray.org soll in erster Linie eine Anlaufstelle für Flex Programmierer sein, die nach Komponenten, Skins oder Infos zur Programmierung mit dem Flex Data Service suchen. Die von mir gebastelten Skins sind eigentlich nur ein Zeitvertreib, aber gerade dafür interssieren sich die meisten Besucher. Die Skins sind nun unter anderem auch auch auf scalenine.com zu finden. Juan, der die Website betreibt hat selbst einige tolle Themes für Flex entworfen.
Ausgerechnet das Scribble Theme, das ich in einer "kreativen" Nacht zusammengeschustert habe, ist mittlerweile in einigen Blogs erwähnt. Der exotischste ist sicher der Blog vom Dreamer aus China. Als Dreamer mich in seinem Blog erwähnt hat, hatte Fleksray.org am folgenden Tag 800 Besucher und ich hatte echt Angst, dass ich mein Traffic Limit für Juli überschreite. Mittlerweile hat sich der Hype etwas gelegt, dennoch kommen täglich noch 90 Besucher aus dem Reich der Mitte. Auch in Israel,Italien, Japan und Korea ist Flekscribble bekannt.

Donnerstag, 2. August 2007

Channel.Connect.Failed error undefined url: rtmp://localhost:2038

Ist der Data Management Service des Flex LiveCycle Services (unter Verwendung des rtmp Channels) für den Client nicht erreichbar, erscheint die Fehlermeldung: undefined url: rtmp://localhost.
Im Klartext heisst das, daß der Flex Data Service den Channel für das Real Time Messaging Protokoll nicht initialisiert hat.
Die Ursachen dafür können vielfältig sein. Zuerst sollte versucht werden, die URL localhost:[port] im Browser aufzurufen. Das "rtmp" am Anfang lässt man weg, da der Browser das Real Time Messaging Protokoll nicht kennt. Hinter localhost muss der entsprechende Port angegeben werden, meist ist das 2038. Ist man nicht sicher, hilft ein Blick in die [SERVERROOT]/webapps/[CONTEXT]/WEB-INF/flex/services-config.xml Datei. In der Channeldeklartion my-rtmp ist der tatsächlich verwendete Port zu finden.
Bringt der Browser nach Eingabe der URL localhost:2038 innerhalb kurzer Zeit die Fehlermeldung "Seite nicht erreichbar" o.ä ist der Real Time Messaging Service down. Versucht der Browser endlos lange eine Seite zu laden, ist der RTMP Channel in in Betrieb (Die Seite bleibt natürlich leer).
Der erste Fall ist wahrscheinlicher (sonst würde ja die Fehlermeldung nicht kommen). Die Ursachen können von Server zu Server unterschiedlich sein und werden nicht immer mit einer Exception im Logfile quittiert. In Verbindung mit Hibernate kann der Fehler in der Deklaration der Hibernate Destination in der data-management-config.xml die Ursache sein . Wird Hibernate nicht initialisiert kann das dazu führen, dass der RTMP Service nicht gestartet wird.
Für die weitere Fehlersuche lohnt es sich, den FDS-Tomcat von Adobe herunterzuladen.
http://www.adobe.com/devnet/flex/articles/java_testdrive.html
Probeweise sollte versucht werden auf diesem Server die Problemapplikation zu deployen. Ebenfalls zu empfehlen ist in Blick in die [SERVERROOT]/webapps/[CONTEXT]/WEB-INF/lib und [SERVERROOT]/common/lib Verzeichnisse des Adobe Tomcat zu werfen. Fehlen in der eigenen Serverinstallation Jar Files, die im FDS-Tomcat vorhanden sind, kann das ebenfalls zu der Fehlermeldung: Channel.Connect.Failed error undefined url: rtmp://localhost:2038 führen.

Sonntag, 29. Juli 2007

Flex Theme BluePlastic

Auf fleksray.org steht eine neue Skin für Flex Anwendungen zum Download zur Verfügung.

Freitag, 27. Juli 2007

Der Remote Object Service in Flex

Was unterscheidet den Remote Object Service vom HTTPService oder dem WebService?
Wie auch der HTTPService und der WebService greift der Remote Object Service über das HTTP Protokoll auf die Ressourcen des Servers zu.
Im Gegensatz zu den erst genannten Services benutzt der RemoteObject Service aber nicht das auf Text basierende XML Format für den Informationsaustausch, sondern das proprietäre AMF (Action Message Format). Dieses codiert die auszutauschenden Informationen binär, die gesendete Nachricht wird dadurch wesentlich kleiner und kann schneller übertragen werden.
Java Entwickler mag diese Technik an die RMI API erinnern und der Vergleich ist durchaus angebracht. RMI nutzt jedoch statt des HTTP Protokolls (Port 80) ein eigenes Übertragungsprotokoll, scheitert damit an den meisten Firewalls und macht deshalb nur in firmeninternen (oder anderen geschlossenen) Umgebungen Sinn. Im Gegensatz dazu kann der Remote Object Service ohne Einschränkungen auch im Internet verwendet werden.

Samstag, 21. Juli 2007

Installation des Flex LiveCycle (Data Service)

Der Flex Dataservice kann unter der URL http://www.adobe.com/cfusion/tdrc/index.cfm?product=livecycle_dataservices für unterschiedliche Betriebssysteme heruntergeladen werden. Für den Download muss man sich einen Account bei Adobe einrichten und anschließend mit Email und Passwort einloggen.

Im Folgenden wird die Installation unter Windows und gängigen JEE Servern beschrieben. Grundsätzlich lassen sich zwei Arten der Installation unterscheiden.
Der Flex Dataservice kann als Komplettpaket installiert werden. Diese Variante enthält JRun als Java Server Runtime. Dieses Paket steht als *.exe-Datei zu Verfügung und installiert eine ready to go Version der Adobe Software.

Für den Einsatz in einer Produktionsumgebung kommt eher die Installation als *.war-File auf einem existierenden JEE-Applicationsserver in Frage, da JRun nur als Entwicklungsumgebung kostenlos zu haben ist.
Installation des vorkonfigurierten Komplettpaketes
Ein Doppelklick auf die ausführbare Datei öffnet einen Wizard der durch die Installation führt. Nach dem Bestätigen der Lizenzbestimmungen wird der Benutzer nach einer Seriennummer gefragt. Für die Installation der Expressversion wird dieses Feld frei gelassen. Die Expressversion des Data Service ist voll funktionsfähig und kann auch für kommerzielle Projekte genutzt werden, ist jedoch auf die Nutzung einer CPU beschränkt. Die genauen Bestimmungen zur Nutzung finden sich auf der Adobe Seite.

Anschließend wird das Installationsverzeichnis gewählt (alle weiteren Angaben im Artikel beziehen sich auf das Standard Installationsverzeichnis c:\lcds). Dann hat der User die Wahl, den Dataservice mit integriertem JRun Servlet Container oder als JEE Applikation zu installieren. Als Entwicklungsumgebung ist JRun ausreichend, als Produktionsserver sollte jedoch einer der Standard JEE Applicationserver zum Einsatz kommen. Es erscheinen noch die üblichen Standardabfragen, dann beginnt die Installation.

JRun Launcher

Nach Beendigung der Installation befindet sich im Verzeichnis c:\lcds ein Unterordner JRun/bin. Wird die im Verzeichniss befindliche jrun.exe ausgeführt, öffnet sich der JRun Launcher, mit der sich der Server starten, restarten und stoppen lässt. Nach Selektieren des default-Eintrages und einem Klick auf den Start Button fährt der Server hoch.
Unter der Adresse http://localhost:8700 kann nun die lokale Instanz von JRun angesprochen werden.
Installation unter einem Java Web Application Server
Die Installation des Flex Data Service unter einem JEE Server ist ebenfalls leicht durchzuführen. Alle *.war Dateien, die sich nach der oben durchgeführten Installation in c:\lcds befinden, laufen ohne Probleme auch in den ensprechenden Deploy
Verzeichnissen typischer JEE-Server.

Tomcat: $CATALINA_HOME/webapps
JBoss: $JBOSS_HOME/server/default/deploy

Wird beispielsweise das c:\lcds\samples.war in das webapps Verzeichniss des Tomcat kopiert, ist nach einem restart/redeploy die Applikation unter localhost:8080/samples zu erreichen.
Gleiches gilt für JBoss und andere JEE konforme Applicationserver. Für eigene Entwicklungen sind die mitgelieferten Anwendungen der Standardinstallation also ein guter Ausgangspunkt.

Donnerstag, 19. Juli 2007

Unexpected attribute ‘url’ found in ‘endpoint’ from file: services-config.xml

Diese Fehlermeldung zeigt mir mein Flex Projekt wenn es den LiveCycle Data Service nutzen soll.
In den Foren von Adobe wird empfohlen in diesem Fall den Flex SDK mit dem Hotfix 2 zu updaten.
Das zeigt in meinem Fall jedoch keine Wirkung. Die Fehlermeldung "Unexpected attribute ‘url’ found in ‘endpoint’ from file: services-config.xml" bleibt bestehen.
Erst nach Umschalten der Option Flex Data Services von "Compile application locally in Flexbuilder" auf "Compile Application on the server when page is viewed" schafft Abhilfe. Das kann sicher nicht Endlösung sein, reicht für meine Zwecke aber erst mal.

Mittwoch, 18. Juli 2007

Ein Blick in den Flex Spiegel


Eine weitere Flex Komponente, die von Wietse Veenstra stammt.
Keine Applikation braucht Reflections um den Funktionsumfang zu erweitern. Jede Anwendung läuft ohne Reflecions genau so gut, wie mit der Komponente aus Holland.
Aber mal ehrlich, ist es nicht ein Riesenspass das Ding zu verwenden, damit zu spielen und dem 0815 Panel das gewisse Etwas zu verpassen?
Ich kam auch nicht dran vorbei und habe den ReflecionManager im Theme Flekristal eingesetzt.
Einer kleiner Punkt wäre dennoch auf der Wunschliste: Es wäre echt toll, wenn die Reflections nur für einen bestimmten Teil des Bildschirms aktiv wären, also da, wo auch eine reflektierende Oberfläche vorhanden ist.

Das Superpanel aus Holland


Eine wirklich nützliche und einfach zu verwendende Flex Komponente ist das SuperPanel von Wietse Veenstra. Mit dieser Erweiterung der Flex Panel Komponente verwandelt man, den doch etwas statischen Standard Panel-Container von Adobe in ein klassisches Windowsfenster (bitte nicht im Wörterbuch nach Windowsfenster suchen). Flex Panels sind mit dieser Erweiterung skalierbar, verschiebar, können maximiert und minimiert werden.
Ich habe diese Komponente auch im Sample 2 des Flekristal Themes verwendet.
Das SuperPanel muss einfach in den Namespace der Applikation importiert werden und kann dann wie das Standard Panel benutzt werden.

Freitag, 13. Juli 2007

Adobe Flex Data Service

Ich bin gerade dabei einen Artikel über den Adobe Flex Data Service zu schreiben. Der Abschnitt über die Installation und den Proxy Service ist bereits fertig und kann hier nachgelesen werden.
Trotzdem eine kurze Erklärung im Blog.

Die Proxy Komponente des Adobe Flex DataService

Der Proxy Service erlaubt es, den so genannten Sandkasten, in dem Browseranwendungen laufen zu umgehen.
Webservices werden von der Client Applikation nun über den Umweg des Homeservers und nicht direkt aufgerufen.
Der Flex Data Service, der auf dem Homeserver läuft, (also dem Server, von dem die Flex Applikation aufgerufen wurde) leitet die Anfragen an den Server weiter, auf dem der eigentliche Webservice läuft.

Blog Eröffnung

Das ist mein erster Blogeintrag und dient nur zum Experimentieren. Hier werde ich News zum Thema Adobe Flex publizieren. Es wird dabei hauptsächlich um Programmierung mit ActionScript und MXML gehen. Hin und wieder entwerfe ich mal eine Skin um die Standard Widgets von Flex ein wenig aufzupoppen.
Wenn ich mal wieder ein neues Theme entworfen habe, werde ich das hier verkünden.