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

PDF
Powerful mostly unknown Javascript-Features
PDF
2021 OOP - Kubernetes Operatoren
PDF
Malte Wessel - Google web toolkit
PPT
Einsteiger Workshop
PDF
dotnet Cologne 2013 - Windows Azure Mobile Services
PPT
Einführung in den EventBus
PDF
JavaScript Performance
PDF
Skalierbare Anwendungen mit Google Go
Powerful mostly unknown Javascript-Features
2021 OOP - Kubernetes Operatoren
Malte Wessel - Google web toolkit
Einsteiger Workshop
dotnet Cologne 2013 - Windows Azure Mobile Services
Einführung in den EventBus
JavaScript Performance
Skalierbare Anwendungen mit Google Go

Andere mochten auch (17)

PDF
Quarterly Market Capital Digest July09
DOCX
Energy Savings
PDF
Communication World Essay Nonverbal Communication
PPT
Derechos Del Consumidor
DOC
Global Influence Of Us Economy
DOCX
Retirement Realities
PDF
Rossi.Design
PDF
Business Valuation
PPTX
Master Class Three Voices January 2013
PDF
Decreto lei-n-674-c75-de-2-de-dezembro
PDF
Business Owner Basics
PDF
Andrew E Mitchell Cirriculam Vitae
PPTX
Waste management
PPTX
Présentation - Enjeux et perspectives de la TV connectée pour le commerce
PPT
Manuela Preoteasa, La Nouvelle Identité De L’Approche éConomique
PDF
SRM70 Présentation
PDF
Llg corporate presentation may 2016 francais online
Quarterly Market Capital Digest July09
Energy Savings
Communication World Essay Nonverbal Communication
Derechos Del Consumidor
Global Influence Of Us Economy
Retirement Realities
Rossi.Design
Business Valuation
Master Class Three Voices January 2013
Decreto lei-n-674-c75-de-2-de-dezembro
Business Owner Basics
Andrew E Mitchell Cirriculam Vitae
Waste management
Présentation - Enjeux et perspectives de la TV connectée pour le commerce
Manuela Preoteasa, La Nouvelle Identité De L’Approche éConomique
SRM70 Présentation
Llg corporate presentation may 2016 francais online
Anzeige

Ähnlich wie Introduction to BlazeDS (20)

PPTX
Angular von 0 auf 100
PDF
.NET Summit 2016 München: EcmaScript 2015+ with TypeScript
PDF
Oracle WebLogic for DevOps
PDF
Oracle WebLogic for DevOps
PDF
Migrationspfade für Angular 2
PPTX
Vorlesung SOA - DIS AG.pptx
ODP
Präsentation webservices
PDF
Citrus Agile Testing Meetup (german)
PPTX
Microservices mit Rust
PDF
Fehleranalyse in SCCM
PDF
W-JAX 2024: Serverless mit Go in der Cloud
PDF
Web APIs mit ASP.NET MVC Core 1
PPTX
Integration camel
PPT
2009 03 17 Spring101
PDF
Lightweight AOP with CDI and JPA
PDF
Modern angular 02_angular_mit_type_script
PDF
OSGi Release 4.2 - Was ist neu?
PDF
Prometheus Monitoring
PDF
GWT – Google Web Toolkit in der Praxis
PDF
Go - Googles Sprache für skalierbare Systeme
Angular von 0 auf 100
.NET Summit 2016 München: EcmaScript 2015+ with TypeScript
Oracle WebLogic for DevOps
Oracle WebLogic for DevOps
Migrationspfade für Angular 2
Vorlesung SOA - DIS AG.pptx
Präsentation webservices
Citrus Agile Testing Meetup (german)
Microservices mit Rust
Fehleranalyse in SCCM
W-JAX 2024: Serverless mit Go in der Cloud
Web APIs mit ASP.NET MVC Core 1
Integration camel
2009 03 17 Spring101
Lightweight AOP with CDI and JPA
Modern angular 02_angular_mit_type_script
OSGi Release 4.2 - Was ist neu?
Prometheus Monitoring
GWT – Google Web Toolkit in der Praxis
Go - Googles Sprache für skalierbare Systeme
Anzeige

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