2009-09-03 9 views
2

BlazeDS文檔顯示瞭如何在ActionScript和Java對象之間顯式映射。例如,這對RPC服務工作正常,例如,BlazeDS消息服務的ActionScript和Java對象之間的顯式映射

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); 
    } 
} 

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); 
    } 
} 

如果我叫一個返回User RPC服務,該secret不通過網絡發送。

是否也可以爲通訊服務做到這一點?也就是說,如果我創建自定義消息適配器並使用下面的功能,我是否也可以阻止發送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); 

回答

1

這應該與Messaging工作。另一種選擇是使用BeanProxy(這是here中的一個很好的例子)。