2

BlazeDS のドキュメントには、ActionScript と Java オブジェクトを明示的にマッピングする方法が示されています。たとえば、これは RPC サービスでは問題なく機能します。

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

を返す RPC サービスを呼び出した場合、Usersecretネットワーク経由で送信されません。

メッセージングサービスでもこれを行うことは可能ですか? つまり、カスタム メッセージング アダプターを作成し、以下の関数を使用すると、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);
4

1 に答える 1

1

これはメッセージングで機能するはずです。もう1つのオプションは、BeanProxyを使用することです(この例の良い例です)。

于 2009-09-03T14:29:34.403 に答える