IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Flex Discussion :

Mapping d'objets ActionScript et Java sous BlazeDS


Sujet :

Flex

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Analyste informatique
    Inscrit en
    Septembre 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Analyste informatique
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2013
    Messages : 7
    Par défaut 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 : 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;
    		}
     
    	}
    }
    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
    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 : 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);
    		}
     
    }
    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
    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 : 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>
    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..

  2. #2
    Membre émérite
    Homme Profil pro
    Consultant Angular / Java J2EE
    Inscrit en
    Novembre 2008
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant Angular / Java J2EE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 545
    Par défaut
    Salut,

    Je dirais que BlazeDs n'arrive pas à mapper tes objets Flex en objets Java. Et dans ces cas là, le message d'erreur manque de verbiage ..
    Essaye avec des BigDecimal du côté Java au lieu d'utiliser des int.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Analyste informatique
    Inscrit en
    Septembre 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Analyste informatique
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2013
    Messages : 7
    Par défaut
    Merci pour ta réponse Krazymins,

    J'ai essayé coté Java de changer le typage des 8 variables contenues dans la classe Globale de int vers BigDecimal. J'ai aussi modifié dans la méthode invocation() l'instruction précédant le return comme suit:

    Globale b = new Globale(new BigDecimal(1), new BigDecimal(2), new BigDecimal(3), new BigDecimal(4), new BigDecimal(5), new BigDecimal(6), new BigDecimal(7), new BigDecimal(8));

    Mais l'erreur persiste. Une autre suggestion?..

  4. #4
    Membre émérite
    Homme Profil pro
    Consultant Angular / Java J2EE
    Inscrit en
    Novembre 2008
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant Angular / Java J2EE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 545
    Par défaut
    De mémoire lorsque je le faisais, les champs Java étaient déclarés en private avec des getter/setter.
    A priori ça ne change pas grand chose, mais sait-on jamais, BlazeDs travaille peut être explicitement avec des accesseurs.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Analyste informatique
    Inscrit en
    Septembre 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Analyste informatique
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2013
    Messages : 7
    Par défaut
    Encore merci pour ta réponse Krazymins, mais le fait que les variables de la classe Globale soient déclarées en public ou en private ne change rien à mon code du moment que la méthode invocation() de la classe Invocations n'accède à aucune d'entre elles, et ne fait que créer une nouvelle instance de celle-ci via le constructeur transmettant 8 paramètres.

    Une autre suggestion?..

  6. #6
    Membre émérite
    Homme Profil pro
    Consultant Angular / Java J2EE
    Inscrit en
    Novembre 2008
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant Angular / Java J2EE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 545
    Par défaut
    Pour ça ok, mais en fait lorsque je parlais de mapping, je parlais de la transformation de l'object Flex en Java et inversement. Lorsque le message AMF transite, BlazeDs crée un nouvel objet en se basant sur l'autre et mappe ces 2 objets. C'est en ce sens que je me demandais s'il fonctionnait avec des accesseurs, et non pas lorsque tu fais explictement l'appel à l'objet dans le code.

Discussions similaires

  1. Réponses: 0
    Dernier message: 13/07/2010, 16h26
  2. [Debutant(e)]Debug Java sous Eclipse
    Par Jean_Benoit dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 13/01/2005, 10h51
  3. [Débutant][Installation]Java sous Win
    Par MALAGASY dans le forum EDI et Outils pour Java
    Réponses: 17
    Dernier message: 26/08/2004, 09h22
  4. [VB6] Modification objet OLE dans Word sous VB
    Par zworg dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 23/02/2004, 08h20
  5. webcam : lire sur un port usb en c/c++ ou java. sous win. ?
    Par flo007 dans le forum Choisir un environnement de développement
    Réponses: 2
    Dernier message: 24/05/2002, 23h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo