2009-09-03 4 views
2

La documentation BlazeDS montre comment mapper explicitement entre les objets ActionScript et Java. Par exemple, cela fonctionne bien pour les services RPC, par ex.Mappage des différences entre les objets ActionScript et Java pour le service de messagerie BlazeDS

import flash.utils.IExternalizable; 
import flash.utils.IDataInput; 
import flash.utils.IDataOutput; 

[Bindable] 
[RemoteClass(alias="javaclass.User")] 
public class User implements IExternalizable { 

    public var id : String; 
    public var secret : String; 

    public function User() { 
    } 

    public function readExternal(input : IDataInput) : void { 
     id = input.readObject() as String; 
    } 

    public function writeExternal(output : IDataOutput) : void { 
     output.writeObject(id); 
    } 
} 

et

import java.io.Externalizable; 
import java.io.IOException; 
import java.io.ObjectInput; 
import java.io.ObjectOutput; 
import java.util.HashSet; 
import java.util.Iterator; 
import java.util.Set; 

public class User implements Externalizable { 

    protected String id; 
    protected String secret; 

    public String getId() { 
     return id; 
    } 

    public void setId(String id) { 
     this.id = id; 
    } 

    public String getSecret() { 
     return secret; 
    } 

    public void setSecret(String secret) { 
     this.secret = secret; 
    } 

    public void readExternal(ObjectInput in) throws IOException, 
      ClassNotFoundException { 
     id = (String) in.readObject(); 
    } 

    public void writeExternal(ObjectOutput out) throws IOException { 
     out.writeObject(id); 
    } 
} 

Si j'ai appelé un service RPC qui retourne une User, le secret n'est pas envoyé sur le fil.

Est-il également possible de le faire pour le service de messagerie? En d'autres termes, si je crée un adaptateur de messagerie personnalisé et que j'utilise la fonction ci-dessous, puis-je également empêcher l'envoi de secret?

MessageBroker messageBroker = MessageBroker.getMessageBroker(null); 
AsyncMessage message = new AsyncMessage(); 
message.setDestination("MyMessagingService"); 
message.setClientId(UUIDUtils.createUUID()); 
message.setMessageId(UUIDUtils.createUUID()); 
User user = new User(); 
user.setId("id"); 
user.setSecret("secret"); 
message.setBody(user); 
messageBroker.routeMessageToService(message, null); 

Répondre

1

Cela devrait fonctionner avec la messagerie. Une autre option consiste à utiliser un BeanProxy (bel exemple dans ce here).

Questions connexes