Configuración de Flex con BlazeDS
Configuración de Flex con BlazeDS
Ejemplo
Tomcat
• Utilizamos Tomcat para crear nuestra
aplicación Flex con BlazeDS
• Arrancas Tomcat
• Dentro del directorio webapps, creamos el
directorio de nuestro proyecto
– lo podemos llamar blazeds
Instalación BlazeDS
• Podemos bajar la distribución binaria
de BlazeDS desde Adobe y la
desempaquetamos en un directorio temporal.
• Copiamos el archivo blazeds.war al directorio
de nuestro proyecto y lo desempaquetamos.
• borramos ya el war
Configurar server.xml
• podemos configurar el fichero server.xml
– dentro de conf/server.xml
– vamos a la etiqueta dels host
– añadimos un nuevo contexto
– <Context path="/blazeds" docBase="blazeds" deb
ug="0" reloadable="true" />
Evitar errores SandBox
• Agregamos el archivo de
seguridad crossdomain.xml donde este el
directorio raíz de nuestro dominio
• debe contener
• <cross-domain-policy>
<allow-access-from domain="*" />
</cross-domain-policy>
Remote Object en Java
• Podemos crear una clase en Java
– en el directorio WEB-INF/src
• import java.util.Date;
• public class EjemploJava {
• public String getTime() {
Date hora= new Date();
return “la hora es " + hora;
}
• }
• compilamos la clase java
– javac EjemploJava
– usando NetBeans, Jcreator…
• La copiamos al directorio classes.
• Fin lado del servidor
• Tenemos que declarar nuestra clase
agregando la etiqueta service en el fichero
– flex/Remoting-config.xml:
• <destination id="blazeds">
<properties>
<source>EjemploJava</source>
</properties>
</destination>
• Del lado del cliente, necesitamos crear un
archivo de configuración services-config.xml
que más adelante se utilizará como un
parámetro del comando mxmlc que compila
nuestro código.
• <?xml version="1.0" encoding="UTF-8"?>
<services-config>
<services>
• <service id="remoting-service" class="flex.messaging.services.RemotingService"
messageTypes="flex.messaging.messages.RemotingMessage">
<adapters>
<adapter-definition id="java-object" class="flex.messaging.services.remoting.adapters.JavaAdapter" default="true" />
</adapters>
• <!-- Con este id, llamamos al java desde flex -->
<destination id="blazeds">
<channels>
<channel ref="my-amf" />
</channels>
</destination>
</service>
• </services>
• <channels>
<channel-definition id="my-amf" class="mx.messaging.channels.AMFChannel">
<!-- Aqui tengo la ruta de donde se va a desplegar todo , proviene del war de flex -->
<endpoint uri="http://localhost:8080/blazeds/messagebroker/amf"
class="flex.messaging.endpoints.AMFEndpoint"/>
</channel-definition>
</channels>
</services-config>
fichero.mxml en Flex
• <?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns="*">
• <mx:Script>
• <![CDATA[
• import mx.controls.Alert;
• import mx.rpc.events.FaultEvent;
• import mx.rpc.events.ResultEvent;
• // Esta función se llama cuando se llamo exitosamente a nuestro objeto:
• public function onMethodResult(event:ResultEvent):void {
• bo.label = "Result "+event.result
• bo.label += "nDataType "+ typeof(event.result)
• }
• ]]>
</mx:Script>
• <mx:RemoteObject id="ro" destination="blazeds" fault="Alert.show(event.fault.faultString,
'Error')" result="{onMethodResult(event)}">
• <!-- Aquí declaramos todas las funciones que vamos a llamar del objeto Java -->
• <mx:method name="getTime" result="{onMethodResult(event)}" />
• </mx:RemoteObject>
• <mx:Label id="bo" label="" click="ro.getTime()" />
• </mx:Application>
Compilación
• Lo compilamos con la siguiente línea de
comando:
• ~/flex/bin/mxmlc blazeds.mxml -services
"services-config.xml"
• Al ejecutar el mxml, veremos una etiqueta
vacia que al darle doble click, nos imprimirá la
hora del servidor.