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 :

Blazeds + MessageBroker


Sujet :

Flex

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de issamjet
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Mars 2008
    Messages : 65
    Par défaut Blazeds + MessageBroker
    C'est juste une application simple de type HelloWorld.
    Mon souci est que l'application doit agir d'une façon automatique et les messages doivent aller des classes Java vers Flex en utilisant le service Messaging (application de type DataPush).
    Donc il ne faut pas utiliser les remoting objects à priori.
    Je ne sais pas si mon problème se résume dans la construction d'une classe particulière pour définir un adaptateur particulier qui "extends ServiceAdapter" ou pas (je l'ai vu dans un exemple sur le net) mais probablement ce n'est pas nécessaire.

    Bref j'ai besoin d'une application dont la mise à jour de la base de données implique une mise à jour dans l'interface graphique sans faire le rafraichissement de la page, comment je peux y arriver

    un bout de code (avant que Jim Nastiq me le demande )

    Tout d'abord la classe Java

    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
    42
    43
    44
    45
    46
     
    package com;
     
    import flex.messaging.io.ArrayCollection;
    import flex.messaging.messages.Message;
    import flex.messaging.services.MessageService;
    import flex.messaging.services.ServiceAdapter;
    import flex.messaging.util.UUIDUtils;
     
    import flex.messaging.MessageBroker;
    import flex.messaging.io.ArrayList;
    import flex.messaging.messages.AsyncMessage;
    import flex.messaging.util.UUIDUtils;
     
    public class MyTestClass {
    	public static void main(String[] args) {
    	AsyncMessage msg = new AsyncMessage();
    	String clientID = UUIDUtils.createUUID();
     
    	msg.setClientId(clientID);
    	//msg.setTimestamp(new Date().getTime());
    	//you can create a unique id
    	msg.setMessageId(UUIDUtils.createUUID());
    	//destination to which the message is to be sent
    	msg.setDestination("MyDestination");		
    	//set message body
     
    	msg.setBody("Hi this is a message from a Java class :)");
    	//set message header
    	//msg.setHeader("sender", "From the server");
     
    	System.out.println("ClientID:"+msg.getClientId()+"\nDestination:"+msg.getDestination()+"\nBody:"+msg.getBody());
     
    	MessageBroker msgBroker = MessageBroker.getMessageBroker(null);
    	if(msgBroker==null)
    		System.out.println("msgBroker is null ");
     
    	try {
    		//send message to destination
    		msgBroker.routeMessageToService(msg, null);	
     
    	} catch (Exception e) {
    		System.out.println(e.toString());
    	}
    	}
    }

    et ensuite l'interface mxml

    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
    <mx:Script> 
      <![CDATA[
      	import mx.binding.utils.BindingUtils; 
          import mx.messaging.channels.AMFChannel; 
          import mx.messaging.ChannelSet; 
          import mx.messaging.events.MessageFaultEvent; 
          import mx.messaging.events.MessageAckEvent; 
          import mx.messaging.messages.AsyncMessage; 
          import mx.controls.Alert; 
          import mx.rpc.remoting.mxml.RemoteObject; 
          import mx.rpc.events.ResultEvent; 
     
          import mx.messaging.messages.IMessage; 
     
    	  import mx.collections.ArrayCollection; 
     
                [Bindable] 
               public var myMessage:String;
     
     
          		private function messageHandler(message:IMessage):void 
          		{ 
           		 	myMessage = message.body as String;
           		 	myLabel.text=myMessage;
          		} 
     
          		private function init():void 
          		{ 
             		var msg:AsyncMessage = new AsyncMessage(); 
    				//creating new msg with “New” to get current state. 
                	msg.body = "New"; 
            		producer.send(msg); 
            		consumer.subscribe(); 
          		} 
     
                private function handleFault(event:MessageFaultEvent):void 
          		{   
          			Alert.show(event.faultString); 
          		} 
     
          		private function ack(event:MessageAckEvent):void 
          		{
            		myMessage = event.message.body as String;
            		myLabel.text=myMessage;        		
          		}
     
        	]]> 
    	</mx:Script> 
     
    	<mx:Producer id="producer" destination="MyDestination" acknowledge="ack(event)"/> 
    	<mx:Consumer id="consumer" destination="MyDestination" message="messageHandler(event.message)" />
     
    	<mx:Label id="myLabel" text="HelloWorld"/>
     
    </mx:Application>

    Je crois que c'est pas nécessaire de mettre le web.xml et et les autres fichiers de configuration remoting-config, messaging-config et services-config

    Merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 85
    Par défaut
    Salut

    je n'ai pas encore mis mon nez dans le messaging, mais je pense démarrer ca demain, je te tiens au jus dès que j'ai réussi à faire tourner un truc avec le messaging de Blaze dS, en espérant que ca ne soit pas trop tard

    Babass

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 85
    Par défaut
    Je peux déjà te filer le lien que j'ai trouvé mais j'avoue ne pas avoir encore regarder le fonctionnement

    http://www.flex-tutorial.fr/wp-conte...g-blaze-ds.pdf

    en espérant que cela peu t'aider

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 85
    Par défaut
    Bonjour jet7fm,

    j'ai fait un petite application de chat, que j'ai trouvé sur le net. Par contre j'ai séparé la partie cliente de la partie serveur.

    Voici mon messaging-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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <service id="message-service" 
        class="flex.messaging.services.MessageService">
     
        <adapters>
            <adapter-definition id="actionscript" class="flex.messaging.services.messaging.adapters.ActionScriptAdapter" default="true" />
            <!-- <adapter-definition id="jms" class="flex.messaging.services.messaging.adapters.JMSAdapter"/> -->
        </adapters>
     
        <default-channels>
            <channel ref="my-long-polling-amf"/>
        </default-channels>
     
    	<destination id="myChat"/>
     
    </service>
    Ensuite mon service-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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
     
    <?xml version="1.0" encoding="UTF-8"?>
    <services-config>
     
        <services>
            <service-include file-path="remoting-config.xml" />
            <service-include file-path="proxy-config.xml" />
            <service-include file-path="messaging-config.xml" />        
        </services>
     
        <security>
            <login-command class="flex.messaging.security.TomcatLoginCommand" server="Tomcat"/>
            <!-- Uncomment the correct app server
            <login-command class="flex.messaging.security.TomcatLoginCommand" server="JBoss">
    		<login-command class="flex.messaging.security.JRunLoginCommand" server="JRun"/>        
            <login-command class="flex.messaging.security.WeblogicLoginCommand" server="Weblogic"/>
            <login-command class="flex.messaging.security.WebSphereLoginCommand" server="WebSphere"/>
            -->
     
            <!-- 
            <security-constraint id="basic-read-access">
                <auth-method>Basic</auth-method>
                <roles>
                    <role>guests</role>
                    <role>accountants</role>
                    <role>employees</role>
                    <role>managers</role>
                </roles>
            </security-constraint>
             -->
        </security>
     
        <channels>
     
            <channel-definition id="my-amf" class="mx.messaging.channels.AMFChannel">
                <endpoint url="http://{server.name}:{server.port}/{context.root}/messagebroker/amf" class="flex.messaging.endpoints.AMFEndpoint"/>
            </channel-definition>
     
            <channel-definition id="my-secure-amf" class="mx.messaging.channels.SecureAMFChannel">
                <endpoint url="https://{server.name}:{server.port}/{context.root}/messagebroker/amfsecure" class="flex.messaging.endpoints.SecureAMFEndpoint"/>
                <properties>
                    <add-no-cache-headers>false</add-no-cache-headers>
                </properties>
            </channel-definition>
     
            <channel-definition id="my-polling-amf" class="mx.messaging.channels.AMFChannel">
                <endpoint url="http://{server.name}:{server.port}/{context.root}/messagebroker/amfpolling" class="flex.messaging.endpoints.AMFEndpoint"/>
                <properties>
                    <polling-enabled>true</polling-enabled>
                    <polling-interval-seconds>4</polling-interval-seconds>
                </properties>
            </channel-definition>
     
            <channel-definition id="my-long-polling-amf" class="mx.messaging.channels.AMFChannel">
        		<endpoint url="http://{server.name}:{server.port}/{context.root}/messagebroker/amflongpolling" class="flex.messaging.endpoints.AMFEndpoint"/>
       			<properties>
            		<polling-enabled>true</polling-enabled>
            		<wait-interval-millis>-1</wait-interval-millis>
            		<polling-interval-millis>100</polling-interval-millis>
            		<max-waiting-poll-requests>50</max-waiting-poll-requests>
       		   </properties>
    		</channel-definition>
     
     
            <!--
            <channel-definition id="my-http" class="mx.messaging.channels.HTTPChannel">
                <endpoint url="http://{server.name}:{server.port}/{context.root}/messagebroker/http" class="flex.messaging.endpoints.HTTPEndpoint"/>
            </channel-definition>
     
            <channel-definition id="my-secure-http" class="mx.messaging.channels.SecureHTTPChannel">
                <endpoint url="https://{server.name}:{server.port}/{context.root}/messagebroker/httpsecure" class="flex.messaging.endpoints.SecureHTTPEndpoint"/>
                <properties>
                    <add-no-cache-headers>false</add-no-cache-headers>
                </properties>
            </channel-definition>
            -->
        </channels>
     
        <logging>
            <target class="flex.messaging.log.ConsoleTarget" level="Error">
                <properties>
                    <prefix>[BlazeDS] </prefix>
                    <includeDate>false</includeDate>
                    <includeTime>false</includeTime>
                    <includeLevel>false</includeLevel>
                    <includeCategory>false</includeCategory>
                </properties>
                <filters>
                    <pattern>Endpoint.*</pattern>
                    <pattern>Service.*</pattern>
                    <pattern>Configuration</pattern>
                </filters>
            </target>
        </logging>
     
        <system>
            <redeploy>
                <enabled>false</enabled>
                <!-- 
                <watch-interval>20</watch-interval>
                <watch-file>{context.root}/WEB-INF/flex/services-config.xml</watch-file>
                <watch-file>{context.root}/WEB-INF/flex/proxy-config.xml</watch-file>
                <watch-file>{context.root}/WEB-INF/flex/remoting-config.xml</watch-file>
                <watch-file>{context.root}/WEB-INF/flex/messaging-config.xml</watch-file>
                <watch-file>{context.root}/WEB-INF/flex/data-management-config.xml</watch-file>
                <touch-file>{context.root}/WEB-INF/web.xml</touch-file>
                 -->
            </redeploy>
        </system>
     
    </services-config>
    et enfin mon mxml :
    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
     
    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init();">
     
     
     
    <mx:Consumer id="consumer" destination="myChat"  fault="handlerFaults(event)" message="HandlerResponse(event.message)"/>
    <mx:Producer id="producer" destination="myChat" fault="handlerFaults(event)" />
     
     
    <mx:Script>
    <![CDATA[
    	import mx.messaging.ChannelSet;
    	import mx.messaging.channels.AMFChannel;
    	import mx.messaging.events.MessageAckEvent;
    	import mx.messaging.events.MessageFaultEvent;
    	import mx.controls.Alert;
    	import mx.messaging.messages.AcknowledgeMessage;
    	import mx.messaging.messages.AsyncMessage;
    	import mx.messaging.messages.IMessage;
     
    	private function init():void
    	{
     
     
    		var channSet:ChannelSet = new ChannelSet();
     
    		var longpollChann:AMFChannel = new AMFChannel("myLongPoll", "http://localhost:8080/myChat/messagebroker/amflongpolling");
     
    		channSet.addChannel(longpollChann);
     
    		producer.channelSet = channSet;
    		consumer.channelSet = channSet;
     
     
    		consumer.subscribe();
     
     
    	}
     
    	private function send():void{
     
    		var message:IMessage = new AsyncMessage();
    		message.body.chatMessage = msg.text;
    		producer.send(message);
    		msg.text = "";
    	}
     
    	private function HandlerResponse(message:IMessage):void{
    		chatMsgs.text += message.body.chatMessage + "\n";
    	}
     
    	private function HandlerAck(evnet:MessageAckEvent):void
    	{		
    		Alert.show(evnet.toString());
    	}
     
    	private function handlerFaults(event:MessageFaultEvent):void
    	{
    		Alert.show(event.toString());
    	}
     
    ]]>
    </mx:Script>
     
    <mx:Panel title="My chat with BlazeDS" width="100%" height="100%">
    	<mx:TextArea id="chatMsgs" width="100%" height="100%"/>
    	<mx:ControlBar>
    		<mx:TextInput id="msg" width="100%" enter="send()"/>
    		<mx:Button label="Envoyer" click="send()"/>
    	</mx:ControlBar>
    </mx:Panel>
     
     
     
    </mx:Application>
    Tu peux ne pas définir le amflongpolling et rester avec le my-polling-amf,

    en espérant que cela t'aidera

    Babass

  5. #5
    Membre confirmé Avatar de issamjet
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Mars 2008
    Messages : 65
    Par défaut
    Merci bien, je vais tester ça, et je te mets au courant d'après

Discussions similaires

  1. Conversion d'objet avec BlazeDS
    Par Marcolinho dans le forum Flex
    Réponses: 6
    Dernier message: 30/12/2009, 11h17
  2. BlazeDS + Tomcat + Hibernate = erreur au demarrage
    Par k-koo dans le forum Frameworks Web
    Réponses: 0
    Dernier message: 22/10/2008, 19h11
  3. Réponses: 5
    Dernier message: 24/04/2008, 17h55
  4. MessageBroker Servlet indisponible
    Par RasDataMan dans le forum Flex
    Réponses: 0
    Dernier message: 10/04/2008, 15h28

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