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 :
Coté Traitement :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; } } }
Voici la classe Invocations déclarée coté traitement et contenant la méthode invocation() :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; } }
Et voici le fichier MXML invoquant la méthode invocation() via un Remote Object :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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); } }
Enfin, voici la balise <destination> intégrée au fichier remoting-config.xml :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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>
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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6<destination id="dest_1"> <properties> <source>traitement.Invocations</source> <scope>application</scope> </properties> </destination>
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..
Partager