SlideShare ist ein Scribd-Unternehmen logo
1 Alger Werft. 27. Januar 2009
Einführung in
BlazeDS
Alger Werft
2 Alger Werft. 27. Januar 2009
Beispiel
Todo List
Alger Werft. 27. Januar 20093
Beispiel: Liste von Todos vom Server anfordern
Alger Werft. 27. Januar 20094
Beispiel: Todo anlegen
Alger Werft. 27. Januar 20095
Beispiel: Todo gespeichert
Alger Werft. 27. Januar 20096
Beispiel: Nachricht mit neuem Todo an andere Clients
7 Alger Werft. 27. Januar 2009
Themen
Einleitung
Verbindungen
HTTP Proxy Service
Remoting Service
Messaging Service
Factories
Alternativen
8 Alger Werft. 27. Januar 2009
Einleitung
Alger Werft. 27. Januar 20099
Servertechnologien
10 Alger Werft. 27. Januar 2009
Web Container?
Servlet Container?
Application Server?
Alger Werft. 27. Januar 200911
BlazeDS
Alger Werft. 27. Januar 200912
Komponenten
13 Alger Werft. 27. Januar 2009
WAR?
Alger Werft. 27. Januar 200914
Installation in Web Application Archive
WEB-INF/lib
BlazeDS Jars
WEB-INF/flex
services-config.xml
remoting-config.xml
messaging-config.xml
proxy-config.xml
WEB-INF/web.xml
HttpFlexSession als Listener
MessageBrokerServlet
Pfad zu services-config.xml in Flex Compileroptionen
15 Alger Werft. 27. Januar 2009
Verbindungen
Alger Werft. 27. Januar 200916
AMF
Binärformat
Spezifikation ist offen gelegt
Serialisierung im Flash Player durch nativen Code
schnell
Alger Werft. 27. Januar 200917
Channel und Endpoints
Channel - Client-seitige Repräsentation der Verbindung
Endpoint - Server-seitige Repräsentation der Verbindung
Alger Werft. 27. Januar 200918
Channel und Endpoints - Konfiguration
Konfiguration in services-config.xml
<channels>
<channel-definition id=”my-amf"
type="mx.messaging.channels.AMFChannel">
<endpoint
url="http://servername:8080/todos/messagebroker/amf"
type="flex.messaging.endpoints.AMFEndpoint" />
</channel-definition>
</channels>
19 Alger Werft. 27. Januar 2009
HTTP Proxy
Alger Werft. 27. Januar 200920
HTTP Proxy Service
21 Alger Werft. 27. Januar 2009
Remoting
Alger Werft. 27. Januar 200922
Remoting Service
Alger Werft. 27. Januar 200923
Remote Procedure Calls mit Flex
Features
Erlaubt Zugriff auf serverseitige Java-Klassen durch Flex Client
Direkter Aufruf der Methoden einer Java-Klasse im Flex Client
Kein Marshalling/Unmarshalling
Bereitstellen von Java Services als Webservice entfällt
Channel
AMFChannel: AMF over HTTP
HTTPChannel: AMFX over HTTP
Alger Werft. 27. Januar 200924
Remoting - Java
Plain Old Java Object (POJO)
package de.cophase.todos
…
public class TodoService {
public List<Todo> getAll() {
…
}
}
Alger Werft. 27. Januar 200925
Remoting - Konfiguration
In remoting-config.xml
fully-qualified class name des Java-Services als Source
<service id="remoting-service”
class="flex.messaging.services.RemotingService">
<destination id="todoService">
<properties>
<source>de.cophase.todos.TodoService</source>
</properties>
</destination>
</service>
Alger Werft. 27. Januar 200926
Remoting - Flex
RemoteObject in MXML oder ActionScript
Destination ist ID in remoting-config.xml
method.name ist Name der Methode des Java-Services
<mx:RemoteObject id="todoService" destination="todoService">
<mx:method name="getAll"
result="onGetAllResult(event)"
fault="onGetAllFault(event)" />
</mx:RemoteObject>
Alger Werft. 27. Januar 200927
Mapping von Java und AS3 Klassen
Metadata tag [RemoteClass(alias=“…”)]
alias = fully-qualified class name der Java-Klasse
Hinweis für AMF Serialisierer
package de.cophase.model.todos {
[Bindable]
[RemoteClass(alias="de.cophase.todos.model.Todo")]
public class Todo {
public var id : int;
public var title : String;
}
}
28 Alger Werft. 27. Januar 2009
Messaging
Alger Werft. 27. Januar 200929
Messaging
Nachrichtenversand zwischen Flex Clients
Server fungiert als zentrale Vermittlungsstelle.
Client-side Messaging API
Nachrichten an Service senden (Producer)
Nachrichten von anderen Clients empfangen (Consumer)
Server-push Messaging
Verbindung zu Java Messaging Service (JMS) Provider möglich
Alger Werft. 27. Januar 200930
Topic
Publish-Subscribe Messaging
Message wird an alle registrierten Consumer versendet (Broadcast).
Alger Werft. 27. Januar 200931
Queue
Point-To-Point Messaging
Message wird von nur einem Consumer verarbeitet (JMS nötig).
Alger Werft. 27. Januar 200932
Message
Eigenschaften
ID
BlazeDS Header
Custom Header
Message Body
Typen
Text Message
Object Message
Alger Werft. 27. Januar 200933
Messaging Service
Alger Werft. 27. Januar 200934
Messaging - Konfiguration
In messaging-config.xml
<service id="message-service"
class="flex.messaging.services.MessageService">
<destination id="todoTopic">
<properties>
<jms>
<destination-type>Topic</destination-type>
<message-type>javax.jms.ObjectMessage</message-type>
</jms>
</properties>
</destination>
</service>
Alger Werft. 27. Januar 200935
Producer
Nachrichtensender
Destination ist ID in messaging-config.xml
<mx:Producer id="producer" destination="todoTopic"
acknowledge="onAcknowledge(event)" fault="onFault(event)"/>
private function sendMessage(text : String) : void
{
var message : IMessage = new AsyncMessage();
message.body = text;
producer.send(message);
}
Alger Werft. 27. Januar 200936
Consumer
Nachrichtenempfänger
<mx:Consumer id="consumer" destination="todoTopic"
message="onMessage(event)" />
consumer.subscribe(); // z.B. in creationComplete()
private function onMessage(event : MessageEvent) : void
{
var message : IMessage = event.message;
var body : Object = message.body;
}
Alger Werft. 27. Januar 200937
Producer - Java
Nachrichten von Java aus an Destination senden
MessageBroker msgBroker =
MessageBroker.getMessageBroker(null);
AsyncMessage msg = new AsyncMessage();
msg.setDestination("todos");
msg.setClientId(clientID);
msg.setMessageId(UUIDUtils.createUUID());
msg.setTimestamp(System.currentTimeMillis());
msg.setBody(todo);
msgBroker.routeMessageToService(msg, null);
Alger Werft. 27. Januar 200938
Message Filtering
Nachrichten nur an bestimmte Consumer
Messagefilter anhand Header
Consumer.selector
Subtopics
Consumer.subtopic
Auswahl passiert auf Server
Alger Werft. 27. Januar 200939
Message Filtering - Beispiel
Nachricht senden
var message:AsyncMessage = new AsyncMessage();
message.headers = new Array();
message.headers["groupID"] = 3;
message.body = input.text;
producer.send(message);
Nachricht empfangen
<mx:Consumer id="todoConsumer"
destination="todoTopic"
selector="groupID = 3"
… />
Alger Werft. 27. Januar 200940
Messaging Adapter
ActionScriptAdapter
Nur Flex Clients als Consumer/Producer
JMSAdapter
Nachrichtenversand/-empfang auch durch Server und andere Clients
JBossMQ
ActiveMQ
Unterstützt auch Queues
Custom Adapter
Anbindung an andere Messaging Infrastrukturen
41 Alger Werft. 27. Januar 2009
Factories
Alger Werft. 27. Januar 200942
Spring
Spring Factory
<factories>
<factory id="spring"
class="com.adobe.flex.factory.SpringFactory" />
</factories>
<destination id="todoService">
<properties>
<factory>spring</factory>
<source>todoManager</source>
</properties>
</destination>
Alger Werft. 27. Januar 200943
EJB3
JNDI Lookup
EJB Factory auf Flex Exchange
<factories>
<factory id="ejb3" class="com.adobe.ac.ejb.EJB3Factory">
</factories>
<destination id=”todoList">
<properties>
<factory>ejb3</factory>
<source>appname/TodoList/local</source>
</properties>
</destination>
44 Alger Werft. 27. Januar 2009
Code?
45 Alger Werft. 27. Januar 2009
Alternativen
Alger Werft. 27. Januar 200946
LCDS
Zusätzliche Features von Live Cycle Data Service
Data Management
Data Synchronization
Conflict Resolution
Smart Paging
Service Adapter
Hibernate
SQL
Offline Caching
PDF Generierung
Alger Werft. 27. Januar 200947
Alternativen - Java
Hessian
GraniteDS
Exadel Flamingo
Alger Werft. 27. Januar 200948
Alternativen - Non Java
49 Alger Werft. 27. Januar 2009
Links
Alger Werft. 27. Januar 200950
Links
http://opensource.adobe.com/wiki/display/blazeds/BlazeDS
http://coenraets.org/blog/
http://www.jamesward.com/census/
http://java.sun.com/products/jms/
http://hessian.caucho.com
http://www.graniteds.org
http://www.exadel.com/flamingo
51 Alger Werft. 27. Januar 2009
Danke!
www.cophase.de
alger@cophase.de

Weitere ähnliche Inhalte

Andere mochten auch

Quarterly Market Capital Digest July09
Quarterly Market Capital Digest July09Quarterly Market Capital Digest July09
Quarterly Market Capital Digest July09
dlensing
 
Energy Savings
Energy SavingsEnergy Savings
Energy Savings
dlensing
 
Communication World Essay Nonverbal Communication
Communication World Essay Nonverbal CommunicationCommunication World Essay Nonverbal Communication
Communication World Essay Nonverbal CommunicationThomas Lee
 
Derechos Del Consumidor
Derechos Del ConsumidorDerechos Del Consumidor
Derechos Del Consumidor
johanalexis
 
Global Influence Of Us Economy
Global Influence Of Us EconomyGlobal Influence Of Us Economy
Global Influence Of Us Economy
dlensing
 
Retirement Realities
Retirement RealitiesRetirement Realities
Retirement Realities
dlensing
 
Business Valuation
Business ValuationBusiness Valuation
Business Valuation
dlensing
 
Master Class Three Voices January 2013
Master Class   Three Voices    January  2013Master Class   Three Voices    January  2013
Master Class Three Voices January 2013
Thomas Lee
 
Decreto lei-n-674-c75-de-2-de-dezembro
Decreto lei-n-674-c75-de-2-de-dezembroDecreto lei-n-674-c75-de-2-de-dezembro
Decreto lei-n-674-c75-de-2-de-dezembro
Rogério Santos
 
Business Owner Basics
Business Owner BasicsBusiness Owner Basics
Business Owner Basics
dlensing
 
Andrew E Mitchell Cirriculam Vitae
Andrew E Mitchell Cirriculam VitaeAndrew E Mitchell Cirriculam Vitae
Andrew E Mitchell Cirriculam Vitae
andyarch
 
Waste management
Waste management Waste management
Waste management
rajvishal2000
 
Présentation - Enjeux et perspectives de la TV connectée pour le commerce
Présentation - Enjeux et perspectives de la TV connectée pour le commercePrésentation - Enjeux et perspectives de la TV connectée pour le commerce
Présentation - Enjeux et perspectives de la TV connectée pour le commerceNicolas Marguerite
 
Manuela Preoteasa, La Nouvelle Identité De L’Approche éConomique
Manuela Preoteasa, La Nouvelle Identité De L’Approche éConomiqueManuela Preoteasa, La Nouvelle Identité De L’Approche éConomique
Manuela Preoteasa, La Nouvelle Identité De L’Approche éConomiqueSFSIC Association
 
SRM70 Présentation
SRM70 PrésentationSRM70 Présentation
SRM70 Présentationguest96f0df
 
Llg corporate presentation may 2016 francais online
Llg   corporate presentation may 2016 francais onlineLlg   corporate presentation may 2016 francais online
Llg corporate presentation may 2016 francais online
masongraphite
 

Andere mochten auch (17)

Quarterly Market Capital Digest July09
Quarterly Market Capital Digest July09Quarterly Market Capital Digest July09
Quarterly Market Capital Digest July09
 
Energy Savings
Energy SavingsEnergy Savings
Energy Savings
 
Communication World Essay Nonverbal Communication
Communication World Essay Nonverbal CommunicationCommunication World Essay Nonverbal Communication
Communication World Essay Nonverbal Communication
 
Derechos Del Consumidor
Derechos Del ConsumidorDerechos Del Consumidor
Derechos Del Consumidor
 
Global Influence Of Us Economy
Global Influence Of Us EconomyGlobal Influence Of Us Economy
Global Influence Of Us Economy
 
Retirement Realities
Retirement RealitiesRetirement Realities
Retirement Realities
 
Rossi.Design
Rossi.DesignRossi.Design
Rossi.Design
 
Business Valuation
Business ValuationBusiness Valuation
Business Valuation
 
Master Class Three Voices January 2013
Master Class   Three Voices    January  2013Master Class   Three Voices    January  2013
Master Class Three Voices January 2013
 
Decreto lei-n-674-c75-de-2-de-dezembro
Decreto lei-n-674-c75-de-2-de-dezembroDecreto lei-n-674-c75-de-2-de-dezembro
Decreto lei-n-674-c75-de-2-de-dezembro
 
Business Owner Basics
Business Owner BasicsBusiness Owner Basics
Business Owner Basics
 
Andrew E Mitchell Cirriculam Vitae
Andrew E Mitchell Cirriculam VitaeAndrew E Mitchell Cirriculam Vitae
Andrew E Mitchell Cirriculam Vitae
 
Waste management
Waste management Waste management
Waste management
 
Présentation - Enjeux et perspectives de la TV connectée pour le commerce
Présentation - Enjeux et perspectives de la TV connectée pour le commercePrésentation - Enjeux et perspectives de la TV connectée pour le commerce
Présentation - Enjeux et perspectives de la TV connectée pour le commerce
 
Manuela Preoteasa, La Nouvelle Identité De L’Approche éConomique
Manuela Preoteasa, La Nouvelle Identité De L’Approche éConomiqueManuela Preoteasa, La Nouvelle Identité De L’Approche éConomique
Manuela Preoteasa, La Nouvelle Identité De L’Approche éConomique
 
SRM70 Présentation
SRM70 PrésentationSRM70 Présentation
SRM70 Présentation
 
Llg corporate presentation may 2016 francais online
Llg   corporate presentation may 2016 francais onlineLlg   corporate presentation may 2016 francais online
Llg corporate presentation may 2016 francais online
 

Ähnlich wie Introduction to BlazeDS

Angular von 0 auf 100
Angular von 0 auf 100Angular von 0 auf 100
Angular von 0 auf 100
Yvette Teiken
 
.NET Summit 2016 München: EcmaScript 2015+ with TypeScript
.NET Summit 2016 München: EcmaScript 2015+ with TypeScript.NET Summit 2016 München: EcmaScript 2015+ with TypeScript
.NET Summit 2016 München: EcmaScript 2015+ with TypeScript
Manfred Steyer
 
Oracle WebLogic for DevOps
Oracle WebLogic for DevOpsOracle WebLogic for DevOps
Oracle WebLogic for DevOps
enpit GmbH & Co. KG
 
Oracle WebLogic for DevOps
Oracle WebLogic for DevOpsOracle WebLogic for DevOps
Oracle WebLogic for DevOps
Andreas Koop
 
Migrationspfade für Angular 2
Migrationspfade für Angular 2Migrationspfade für Angular 2
Migrationspfade für Angular 2
Manfred Steyer
 
Vorlesung SOA - DIS AG.pptx
Vorlesung SOA - DIS AG.pptxVorlesung SOA - DIS AG.pptx
Vorlesung SOA - DIS AG.pptx
Community ITmitte.de
 
Präsentation webservices
Präsentation webservicesPräsentation webservices
Präsentation webservices
xxtesaxx
 
Citrus Agile Testing Meetup (german)
Citrus Agile Testing Meetup (german)Citrus Agile Testing Meetup (german)
Citrus Agile Testing Meetup (german)
christophd
 
Microservices mit Rust
Microservices mit RustMicroservices mit Rust
Microservices mit Rust
Jens Siebert
 
Fehleranalyse in SCCM
Fehleranalyse in SCCMFehleranalyse in SCCM
Fehleranalyse in SCCM
Digicomp Academy AG
 
Web APIs mit ASP.NET MVC Core 1
Web APIs mit ASP.NET MVC Core 1Web APIs mit ASP.NET MVC Core 1
Web APIs mit ASP.NET MVC Core 1
Manfred Steyer
 
2009 03 17 Spring101
2009 03 17 Spring1012009 03 17 Spring101
2009 03 17 Spring101gueste4be40
 
Lightweight AOP with CDI and JPA
Lightweight AOP with CDI and JPALightweight AOP with CDI and JPA
Lightweight AOP with CDI and JPAmh0708
 
Modern angular 02_angular_mit_type_script
Modern angular 02_angular_mit_type_scriptModern angular 02_angular_mit_type_script
Modern angular 02_angular_mit_type_script
Manfred Steyer
 
OSGi Release 4.2 - Was ist neu?
OSGi Release 4.2 - Was ist neu?OSGi Release 4.2 - Was ist neu?
OSGi Release 4.2 - Was ist neu?
Roman Roelofsen
 
Prometheus Monitoring
Prometheus MonitoringPrometheus Monitoring
Prometheus Monitoring
inovex GmbH
 
GWT – Google Web Toolkit in der Praxis
GWT – Google Web Toolkit in der PraxisGWT – Google Web Toolkit in der Praxis
GWT – Google Web Toolkit in der Praxis
Cenarion Information Systems GmbH
 
Go - Googles Sprache für skalierbare Systeme
Go - Googles Sprache für skalierbare SystemeGo - Googles Sprache für skalierbare Systeme
Go - Googles Sprache für skalierbare Systeme
Frank Müller
 
Wjax integrationsprojekte auf dem weg zur continuous delivery 2011 11-10
Wjax integrationsprojekte auf dem weg zur continuous delivery 2011 11-10Wjax integrationsprojekte auf dem weg zur continuous delivery 2011 11-10
Wjax integrationsprojekte auf dem weg zur continuous delivery 2011 11-10Ralf Sigmund
 

Ähnlich wie Introduction to BlazeDS (20)

Angular von 0 auf 100
Angular von 0 auf 100Angular von 0 auf 100
Angular von 0 auf 100
 
.NET Summit 2016 München: EcmaScript 2015+ with TypeScript
.NET Summit 2016 München: EcmaScript 2015+ with TypeScript.NET Summit 2016 München: EcmaScript 2015+ with TypeScript
.NET Summit 2016 München: EcmaScript 2015+ with TypeScript
 
Oracle WebLogic for DevOps
Oracle WebLogic for DevOpsOracle WebLogic for DevOps
Oracle WebLogic for DevOps
 
Oracle WebLogic for DevOps
Oracle WebLogic for DevOpsOracle WebLogic for DevOps
Oracle WebLogic for DevOps
 
Migrationspfade für Angular 2
Migrationspfade für Angular 2Migrationspfade für Angular 2
Migrationspfade für Angular 2
 
Vorlesung SOA - DIS AG.pptx
Vorlesung SOA - DIS AG.pptxVorlesung SOA - DIS AG.pptx
Vorlesung SOA - DIS AG.pptx
 
Präsentation webservices
Präsentation webservicesPräsentation webservices
Präsentation webservices
 
Citrus Agile Testing Meetup (german)
Citrus Agile Testing Meetup (german)Citrus Agile Testing Meetup (german)
Citrus Agile Testing Meetup (german)
 
Microservices mit Rust
Microservices mit RustMicroservices mit Rust
Microservices mit Rust
 
Fehleranalyse in SCCM
Fehleranalyse in SCCMFehleranalyse in SCCM
Fehleranalyse in SCCM
 
Web APIs mit ASP.NET MVC Core 1
Web APIs mit ASP.NET MVC Core 1Web APIs mit ASP.NET MVC Core 1
Web APIs mit ASP.NET MVC Core 1
 
Integration camel
Integration camelIntegration camel
Integration camel
 
2009 03 17 Spring101
2009 03 17 Spring1012009 03 17 Spring101
2009 03 17 Spring101
 
Lightweight AOP with CDI and JPA
Lightweight AOP with CDI and JPALightweight AOP with CDI and JPA
Lightweight AOP with CDI and JPA
 
Modern angular 02_angular_mit_type_script
Modern angular 02_angular_mit_type_scriptModern angular 02_angular_mit_type_script
Modern angular 02_angular_mit_type_script
 
OSGi Release 4.2 - Was ist neu?
OSGi Release 4.2 - Was ist neu?OSGi Release 4.2 - Was ist neu?
OSGi Release 4.2 - Was ist neu?
 
Prometheus Monitoring
Prometheus MonitoringPrometheus Monitoring
Prometheus Monitoring
 
GWT – Google Web Toolkit in der Praxis
GWT – Google Web Toolkit in der PraxisGWT – Google Web Toolkit in der Praxis
GWT – Google Web Toolkit in der Praxis
 
Go - Googles Sprache für skalierbare Systeme
Go - Googles Sprache für skalierbare SystemeGo - Googles Sprache für skalierbare Systeme
Go - Googles Sprache für skalierbare Systeme
 
Wjax integrationsprojekte auf dem weg zur continuous delivery 2011 11-10
Wjax integrationsprojekte auf dem weg zur continuous delivery 2011 11-10Wjax integrationsprojekte auf dem weg zur continuous delivery 2011 11-10
Wjax integrationsprojekte auf dem weg zur continuous delivery 2011 11-10
 

Introduction to BlazeDS

  • 1. 1 Alger Werft. 27. Januar 2009 Einführung in BlazeDS Alger Werft
  • 2. 2 Alger Werft. 27. Januar 2009 Beispiel Todo List
  • 3. Alger Werft. 27. Januar 20093 Beispiel: Liste von Todos vom Server anfordern
  • 4. Alger Werft. 27. Januar 20094 Beispiel: Todo anlegen
  • 5. Alger Werft. 27. Januar 20095 Beispiel: Todo gespeichert
  • 6. Alger Werft. 27. Januar 20096 Beispiel: Nachricht mit neuem Todo an andere Clients
  • 7. 7 Alger Werft. 27. Januar 2009 Themen Einleitung Verbindungen HTTP Proxy Service Remoting Service Messaging Service Factories Alternativen
  • 8. 8 Alger Werft. 27. Januar 2009 Einleitung
  • 9. Alger Werft. 27. Januar 20099 Servertechnologien
  • 10. 10 Alger Werft. 27. Januar 2009 Web Container? Servlet Container? Application Server?
  • 11. Alger Werft. 27. Januar 200911 BlazeDS
  • 12. Alger Werft. 27. Januar 200912 Komponenten
  • 13. 13 Alger Werft. 27. Januar 2009 WAR?
  • 14. Alger Werft. 27. Januar 200914 Installation in Web Application Archive WEB-INF/lib BlazeDS Jars WEB-INF/flex services-config.xml remoting-config.xml messaging-config.xml proxy-config.xml WEB-INF/web.xml HttpFlexSession als Listener MessageBrokerServlet Pfad zu services-config.xml in Flex Compileroptionen
  • 15. 15 Alger Werft. 27. Januar 2009 Verbindungen
  • 16. Alger Werft. 27. Januar 200916 AMF Binärformat Spezifikation ist offen gelegt Serialisierung im Flash Player durch nativen Code schnell
  • 17. Alger Werft. 27. Januar 200917 Channel und Endpoints Channel - Client-seitige Repräsentation der Verbindung Endpoint - Server-seitige Repräsentation der Verbindung
  • 18. Alger Werft. 27. Januar 200918 Channel und Endpoints - Konfiguration Konfiguration in services-config.xml <channels> <channel-definition id=”my-amf" type="mx.messaging.channels.AMFChannel"> <endpoint url="http://servername:8080/todos/messagebroker/amf" type="flex.messaging.endpoints.AMFEndpoint" /> </channel-definition> </channels>
  • 19. 19 Alger Werft. 27. Januar 2009 HTTP Proxy
  • 20. Alger Werft. 27. Januar 200920 HTTP Proxy Service
  • 21. 21 Alger Werft. 27. Januar 2009 Remoting
  • 22. Alger Werft. 27. Januar 200922 Remoting Service
  • 23. Alger Werft. 27. Januar 200923 Remote Procedure Calls mit Flex Features Erlaubt Zugriff auf serverseitige Java-Klassen durch Flex Client Direkter Aufruf der Methoden einer Java-Klasse im Flex Client Kein Marshalling/Unmarshalling Bereitstellen von Java Services als Webservice entfällt Channel AMFChannel: AMF over HTTP HTTPChannel: AMFX over HTTP
  • 24. Alger Werft. 27. Januar 200924 Remoting - Java Plain Old Java Object (POJO) package de.cophase.todos … public class TodoService { public List<Todo> getAll() { … } }
  • 25. Alger Werft. 27. Januar 200925 Remoting - Konfiguration In remoting-config.xml fully-qualified class name des Java-Services als Source <service id="remoting-service” class="flex.messaging.services.RemotingService"> <destination id="todoService"> <properties> <source>de.cophase.todos.TodoService</source> </properties> </destination> </service>
  • 26. Alger Werft. 27. Januar 200926 Remoting - Flex RemoteObject in MXML oder ActionScript Destination ist ID in remoting-config.xml method.name ist Name der Methode des Java-Services <mx:RemoteObject id="todoService" destination="todoService"> <mx:method name="getAll" result="onGetAllResult(event)" fault="onGetAllFault(event)" /> </mx:RemoteObject>
  • 27. Alger Werft. 27. Januar 200927 Mapping von Java und AS3 Klassen Metadata tag [RemoteClass(alias=“…”)] alias = fully-qualified class name der Java-Klasse Hinweis für AMF Serialisierer package de.cophase.model.todos { [Bindable] [RemoteClass(alias="de.cophase.todos.model.Todo")] public class Todo { public var id : int; public var title : String; } }
  • 28. 28 Alger Werft. 27. Januar 2009 Messaging
  • 29. Alger Werft. 27. Januar 200929 Messaging Nachrichtenversand zwischen Flex Clients Server fungiert als zentrale Vermittlungsstelle. Client-side Messaging API Nachrichten an Service senden (Producer) Nachrichten von anderen Clients empfangen (Consumer) Server-push Messaging Verbindung zu Java Messaging Service (JMS) Provider möglich
  • 30. Alger Werft. 27. Januar 200930 Topic Publish-Subscribe Messaging Message wird an alle registrierten Consumer versendet (Broadcast).
  • 31. Alger Werft. 27. Januar 200931 Queue Point-To-Point Messaging Message wird von nur einem Consumer verarbeitet (JMS nötig).
  • 32. Alger Werft. 27. Januar 200932 Message Eigenschaften ID BlazeDS Header Custom Header Message Body Typen Text Message Object Message
  • 33. Alger Werft. 27. Januar 200933 Messaging Service
  • 34. Alger Werft. 27. Januar 200934 Messaging - Konfiguration In messaging-config.xml <service id="message-service" class="flex.messaging.services.MessageService"> <destination id="todoTopic"> <properties> <jms> <destination-type>Topic</destination-type> <message-type>javax.jms.ObjectMessage</message-type> </jms> </properties> </destination> </service>
  • 35. Alger Werft. 27. Januar 200935 Producer Nachrichtensender Destination ist ID in messaging-config.xml <mx:Producer id="producer" destination="todoTopic" acknowledge="onAcknowledge(event)" fault="onFault(event)"/> private function sendMessage(text : String) : void { var message : IMessage = new AsyncMessage(); message.body = text; producer.send(message); }
  • 36. Alger Werft. 27. Januar 200936 Consumer Nachrichtenempfänger <mx:Consumer id="consumer" destination="todoTopic" message="onMessage(event)" /> consumer.subscribe(); // z.B. in creationComplete() private function onMessage(event : MessageEvent) : void { var message : IMessage = event.message; var body : Object = message.body; }
  • 37. Alger Werft. 27. Januar 200937 Producer - Java Nachrichten von Java aus an Destination senden MessageBroker msgBroker = MessageBroker.getMessageBroker(null); AsyncMessage msg = new AsyncMessage(); msg.setDestination("todos"); msg.setClientId(clientID); msg.setMessageId(UUIDUtils.createUUID()); msg.setTimestamp(System.currentTimeMillis()); msg.setBody(todo); msgBroker.routeMessageToService(msg, null);
  • 38. Alger Werft. 27. Januar 200938 Message Filtering Nachrichten nur an bestimmte Consumer Messagefilter anhand Header Consumer.selector Subtopics Consumer.subtopic Auswahl passiert auf Server
  • 39. Alger Werft. 27. Januar 200939 Message Filtering - Beispiel Nachricht senden var message:AsyncMessage = new AsyncMessage(); message.headers = new Array(); message.headers["groupID"] = 3; message.body = input.text; producer.send(message); Nachricht empfangen <mx:Consumer id="todoConsumer" destination="todoTopic" selector="groupID = 3" … />
  • 40. Alger Werft. 27. Januar 200940 Messaging Adapter ActionScriptAdapter Nur Flex Clients als Consumer/Producer JMSAdapter Nachrichtenversand/-empfang auch durch Server und andere Clients JBossMQ ActiveMQ Unterstützt auch Queues Custom Adapter Anbindung an andere Messaging Infrastrukturen
  • 41. 41 Alger Werft. 27. Januar 2009 Factories
  • 42. Alger Werft. 27. Januar 200942 Spring Spring Factory <factories> <factory id="spring" class="com.adobe.flex.factory.SpringFactory" /> </factories> <destination id="todoService"> <properties> <factory>spring</factory> <source>todoManager</source> </properties> </destination>
  • 43. Alger Werft. 27. Januar 200943 EJB3 JNDI Lookup EJB Factory auf Flex Exchange <factories> <factory id="ejb3" class="com.adobe.ac.ejb.EJB3Factory"> </factories> <destination id=”todoList"> <properties> <factory>ejb3</factory> <source>appname/TodoList/local</source> </properties> </destination>
  • 44. 44 Alger Werft. 27. Januar 2009 Code?
  • 45. 45 Alger Werft. 27. Januar 2009 Alternativen
  • 46. Alger Werft. 27. Januar 200946 LCDS Zusätzliche Features von Live Cycle Data Service Data Management Data Synchronization Conflict Resolution Smart Paging Service Adapter Hibernate SQL Offline Caching PDF Generierung
  • 47. Alger Werft. 27. Januar 200947 Alternativen - Java Hessian GraniteDS Exadel Flamingo
  • 48. Alger Werft. 27. Januar 200948 Alternativen - Non Java
  • 49. 49 Alger Werft. 27. Januar 2009 Links
  • 50. Alger Werft. 27. Januar 200950 Links http://opensource.adobe.com/wiki/display/blazeds/BlazeDS http://coenraets.org/blog/ http://www.jamesward.com/census/ http://java.sun.com/products/jms/ http://hessian.caucho.com http://www.graniteds.org http://www.exadel.com/flamingo
  • 51. 51 Alger Werft. 27. Januar 2009 Danke! www.cophase.de alger@cophase.de