Mapping d'objets ActionScript et Java sous BlazeDS
Bonjour tout le monde,
Je suis entrain de tester une communication entre Flex et Java sous BlazeDS. Pour cela j'ai défini en ActionScript et en Java une classe nommée Globale:
Coté Client :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| package traitement
{
[Bindable]
[RemoteClass(alias="traitement.Globale")]
public class Globale
{
public var donnee_1:Number;
public var donnee_2:Number;
public var donnee_3:Number;
public var donnee_4:Number;
public var donnee_5:Number;
public var donnee_6:Number;
public var donnee_7:Number;
public var donnee_8:Number;
public function Globale(var_1:Number, var_2:Number, var_3:Number, var_4:Number, var_5:Number, var_6:Number, var_7:Number, var_8:Number)
{
donnee_1 = var_1;
donnee_2 = var_2;
donnee_3 = var_3;
donnee_4 = var_4;
donnee_5 = var_5;
donnee_6 = var_6;
donnee_7 = var_7;
donnee_8 = var_8;
}
}
} |
Coté Traitement :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| package traitement;
public class Globale {
public int donnee_1;
public int donnee_2;
public int donnee_3;
public int donnee_4;
public int donnee_5;
public int donnee_6;
public int donnee_7;
public int donnee_8;
public Globale(int var_1, int var_2, int var_3, int var_4, int var_5, int var_6, int var_7, int var_8)
{
donnee_1 = var_1;
donnee_2 = var_2;
donnee_3 = var_3;
donnee_4 = var_4;
donnee_5 = var_5;
donnee_6 = var_6;
donnee_7 = var_7;
donnee_8 = var_8;
}
} |
Voici la classe Invocations déclarée coté traitement et contenant la méthode invocation() :
Code:
1 2 3 4 5 6 7 8 9 10 11
| package traitement;
public class Invocations {
public Globale invocation()
{
Globale b = new Globale(1,2,3,4,5,6,7,8);
return(b);
}
} |
Et voici le fichier MXML invoquant la méthode invocation() via un Remote Object :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| <?xml version="1.0" encoding="utf-8"?>
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:ext="ext.*"
horizontalAlign="center"
verticalGap="0"
creationComplete="fonction();"
>
<mx:Script>
<![CDATA[
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import mx.controls.Alert;
import traitement.Globale;
public function erreur(e:FaultEvent):void
{
Alert.show(e.fault.message);
}
public function succes(e:ResultEvent):void {
var a:Globale = Globale(e.result);
Alert.show(a.donnee_1.toString());
}
public fonction():void
{
remoteobject.invocation();
}
]]>
</mx:Script>
<mx:RemoteObject id="remoteobject"
showBusyCursor="true"
fault="erreur(event)"
destination="dest_1"
result="succes(event)"
/>
</mx:VBox> |
Enfin, voici la balise <destination> intégrée au fichier remoting-config.xml :
Code:
1 2 3 4 5 6
| <destination id="dest_1">
<properties>
<source>traitement.Invocations</source>
<scope>application</scope>
</properties>
</destination> |
En lançant l'application, au lieu d'avoir la variable de type Number castée en type String affichée au sein de l'alerte, j'ai ce message d'erreur :
faultCode:Server.Acknowledge.Failed faultString:'Didn't receive an acknowledge message'
faultDetail:'Was expecting mx.messaging.messages.AcknowledgeMessage, but received null'
Merci pour votre aide..