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 :

Prolème avec BLazeDS et Hibernate


Sujet :

Flex

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Janvier 2008
    Messages : 101
    Par défaut Prolème avec BLazeDS et Hibernate
    Bonjours à tous,

    Alors voila, je travaille sur une appli Java qui utilise une base de donnée MySQL et FLex pour l'IU. J'utilise Hibernate pour le MOR, et bien sur les deux design pattern VO et DAO.
    Mon appli java marche bien toute seulle, j'ai tester toutes les méthodes et tout marche bien.
    Pour integrer Flex et Java, j'utilise BlazeDS, sauf que la il me renvoit toujours une erreur dont je ne voit pas la solution.
    Pour etre plus claire, voiçi des portions de mon code:

    la classe SiteDAO
    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
    public class SiteDAO {
     
    	private static SiteDAO instance;
     
    	//private constructor
    	private SiteDAO(){
     
    	}
     
    	// Singleton 
        public static SiteDAO getInstance(){
        	if(instance==null){
        		instance= new SiteDAO();
        	}
        	return instance;
        }
     
        //méthode qui permet de récuperer l'ensemble des sites de la bdd
        public ArrayList<Site> getAllSites(){
        	ArrayList<Site> sites= new ArrayList<Site>();
     
        	try{
        		Session session=HibernateUtil.sessionFactory.getCurrentSession();
        		session.beginTransaction();
        		sites=(ArrayList<Site>)session.createQuery("from Site").list();
        		return sites;
        	}
        	catch (Exception e) {
    			e.printStackTrace();
    			throw new DAOException(e);
    		}
        }
     
    }
    Définition de la destination dans le fichier remoting-config.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <destination id="site">
    	<properties>
    		<source>com.douane.DAO.SiteDAO</source>		
    	</properties>
    </destination>

    Main.mxml


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical">
     
    	<mx:RemoteObject id="ro" destination="site"/>
     
    	<mx:DataGrid dataProvider="{ro.getAllSites.lastResult}" width="100%" height="100%"/>
     
    	<mx:Button label="Get Data" click="ro.getAllSites()"/>
     
    </mx:Application>
    Erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SWF] /samples/IntranetDouaneFlex-debug/IntranetDouaneFlex.swf - 1*201*268 bytes after decompression
    [RPC Fault faultString="org/hibernate/Session" faultCode="Server.Processing" faultDetail="null"]
    	at mx.rpc::AbstractInvoker/http://www.adobe.com/2006/flex/mx/internal::faultHandler()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\rpc\AbstractInvoker.as:220]
    	at mx.rpc::Responder/fault()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\rpc\Responder.as:53]
    	at mx.rpc::AsyncRequest/fault()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\rpc\AsyncRequest.as:103]
    	at NetConnectionMessageResponder/statusHandler()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\messaging\channels\NetConnectionChannel.as:569]
    	at mx.messaging::MessageResponder/status()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\messaging\MessageResponder.as:222]
    Merçi

  2. #2
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Janvier 2008
    Messages : 101
    Par défaut
    Bon avec un peut de recherche, je suis tombée sur ça:

    When using Hibernate as your persistence layer, it allows you to create lazy collections. This is nice because lazy collections can speed up your application, and in theory, you only access the data you want to access. Simple enough. The problem lies however in talking to Flex applications, specifically via BlazeDS or LiveCycle DS. What happens is the fault of the serializers. When you make a request, via mx:RemoteObject, to the server, and you are accessing a lazy collection, when the serializer attempts to turn the data from Java to AMF, it touches everything. This "unwelcome touching" by the serializer, in turn, triggers all of your lazy loading to fire, therefore rendering your lazy collections and the effort to set them up, useless. So, with that in mind, how do we pass back only the data we want to pass back?

    Je vais continuer à travailler sur ça et je posterai une fois j'aurai trouver une bonne solution. En attendant, si vous avez des pistes, merçi de nous éclairer.

  3. #3
    Membre Expert
    Avatar de Jim_Nastiq
    Homme Profil pro
    Architecte, Expert Flex
    Inscrit en
    Avril 2006
    Messages
    2 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte, Expert Flex
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 335
    Par défaut
    On va commencer par capter l'event ResultEvent et FaultEvent du remoteObject pour voir plus clair, parce que, encore une fois, le lastResult c'est pas une super méthode à mon gout.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <mx:RemoteObject id="ro" destination="site" result="resultHandler(event);" fault="faultHandler(event);"/>
    je te laisse coder les handler pour tracer tes résultats, cela pourra surement t'aider. si ce n'est pas le cas, passe en pas à pas , vérifie que ton code java est bien appelé, ... procède par étape

    Pensez vraiment à effectuer une recherche avant de poster, ici et sur un moteur de recherche! c'est la moindre des choses
    Pensez au tag

    Mon Blog sur la techno Flex
    Ma page sur Developpez.com

    Jim_Nastiq

  4. #4
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Janvier 2008
    Messages : 101
    Par défaut
    bon, tout d'abord, merçi pour ta reponse. J'ai bien nfait ce que tu m'a dit, voiçi les modifications.
    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
     
    	<mx:Script>
    		<![CDATA[
    			import mx.controls.Alert;
    			import mx.rpc.events.FaultEvent;
    			import mx.collections.ArrayCollection;
    			import mx.rpc.events.ResultEvent;
     
    			[Bindable]
    			private var sites:ArrayCollection;
     
    			private function resultHandler(event:ResultEvent):void
    			{
    				sites= event.result as ArrayCollection;	
    			}
     
    			private function faultHandler(event:FaultEvent):void
    			{
    				Alert.show(event.fault.faultString);
    			}
     
    		]]>
    	</mx:Script>
    	<mx:RemoteObject id="ro" destination="site" result="resultHandler(event)" fault="faultHandler(event)"/>
    Quand je click sur mon boutton 'get Data' il me donne une erreur: "org/hibernate/session"

  5. #5
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    895
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 895
    Par défaut
    Bonjour,

    Tu n'as aucune stacktrace côté Java ?

    [EDIT]

    Je voulais aussi savoir :
    As tu configurer l'adapter Java ?
    J'ai trouvé un article qui pourra peut être t'aider : http://blogs.adobe.com/mtg/2006/08/m...abled_fle.html

    Il manque peut être qqch dans ta config.

    [/EDIT]

  6. #6
    Membre régulier
    Inscrit en
    Mai 2002
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 8
    Par défaut
    Bonjour,

    je voudrais savoir si t'as trouvé des solutions par rapport a ceci :
    When using Hibernate as your persistence layer, it allows you to create lazy collections. This is nice because lazy collections can speed up your application, and in theory, you only access the data you want to access. Simple enough. The problem lies however in talking to Flex applications, specifically via BlazeDS or LiveCycle DS. What happens is the fault of the serializers. When you make a request, via mx:RemoteObject, to the server, and you are accessing a lazy collection, when the serializer attempts to turn the data from Java to AMF, it touches everything. This "unwelcome touching" by the serializer, in turn, triggers all of your lazy loading to fire, therefore rendering your lazy collections and the effort to set them up, useless. So, with that in mind, how do we pass back only the data we want to pass back?
    càd: intégration hibernate avec blase ds (et bien sûr Flex) et ce problème de sérialisation.

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 09/04/2010, 18h48
  2. Réponses: 1
    Dernier message: 24/05/2006, 18h29
  3. Réponses: 5
    Dernier message: 12/05/2006, 22h02
  4. Problème avec les requêtes hibernate
    Par joseph_p dans le forum Hibernate
    Réponses: 5
    Dernier message: 04/04/2006, 22h54
  5. [debutant][Jtree] un prolème avec le Jtree
    Par bigbabou dans le forum Composants
    Réponses: 2
    Dernier message: 08/02/2006, 10h35

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