2010-12-09 51 views
0

Depuis mon service, je voudrais pousser les données (messagerie).BlazeDS - Spring - Messaging - Comment transférer les données du service aux clients Flex?

@Service 
@RemotingDestination 
public class LoginService implements ILoginService 
{ 
    // ... 

    @Autowired 
    private MessageBroker msgBroker; 

    // ... 

    @Transactional 
    public final Boolean MyServiceFct(String data) 
    { 
    // ... 

      // ... compute some result informations (with database informations, with current user session informations, etc.); 
      // this result must be after send to all clients ... 

    // creating a new async message and setting the result informations as content. 
    String clientID = UUIDUtils.createUUID(); 
    AsyncMessage msg =new AsyncMessage(); // setting the destination for this message. 
    msg.setDestination("MyAdapterPushData"); 
    msg.setClientId(clientID); 
    msg.setMessageId(UUIDUtils.createUUID()); 
    msg.setBody("coucou"); 
    msgBroker.routeMessageToService(msg,null); 

    return true; 
} 

Avec cette implémentation, rien à faire ... les clients ne reçoivent rien.

Alors, comment puis-je pousser les données d'un service comme ça? C'est possible ?

Merci beaucoup pour votre aide,

Anthony

+0

Vous êtes abonné à la destination de messagerie côté client avec Consumer, n'est-ce pas? –

Répondre

0

James,

Ok, votre solution est très bien :-) Mais, j'ai un petit problème:

dans mon configuration du fichier bean, je dois écrire ceci pour avoir un bon comportement:

<flex:message-destination id="MyAdapterPushData"/> 

Mais, si dans mon dossier messagerie config.xml ajouter ceci:

<service id="message-service" class="flex.messaging.services.MessageService"> 
<adapters> 
    <adapter-definition id="MyAdapter" class="com.xxx.MyAdapterClass"/> 
</adapters> 
<destination id="MyAdapterPushData"> 
    <channels> 
     <channel ref="my-streaming-amf"/> 
    </channels> 
    <adapter ref="MyAdapter"/> 
</destination> 

et commenter cette ligne:

<!--flex:message-destination id="MyAdapterPushData"/--> 

mes clients flex reçoivent quelque chose :-(

Merci pour votre aide

Anthony