24.11. 返されるデータの制御


リモートメソッドが実行されると、 その結果は XML レスポンスにシリアライズされ、クライアントに返されます。次にこの応答はクライアントにより JavaScript オブジェクトにアンマーシャルされます。 他のオブジェクトへの参照を含む複雑なタイプの場合 (JavaBeans など)、参照されるオブジェクトもすべて応答の一部としてシリアライズされます。 これらのオブジェクトは他のオブジェクトを参照することができ、それらはまた別のオブジェクトを参照できるといった具合になります。返されるデータを制御しないままにしておくと、このオブジェクト「グラフ」は非常に膨大になる可能性があります。
このため、クライアントに対して機密情報が公開されないようにするために、 Seam Remoting はリモートメソッドの @WebRemote アノテーションの exclude フィールドを指定することでそのオブジェクトグラフを制約できます。このフィールドはドット (「.」) 表記を使って指定される 1 つ以上のパスを含む String 配列を受け取ります。 リモートメソッドを呼び出すと、 これらのパスと一致する結果のオブジェクトグラフにあるオブジェクトがシリアライズされる結果パケットから除外されます。
すべての例は次の Widget クラスに基づいています。
@Name("widget")
public class Widget {
    private String value;
    private String secret;
    private Widget child;
    private Map<String,Widget> widgetMap;
    private List<Widget> widgetList;
    
    // getters and setters for all fields
Copy to Clipboard Toggle word wrap

24.11.1. 通常のフィールドの制約

リモートメソッドが Widget のインスタンスを返すけれど secret フィールドには機密情報が含まれているため公開したくない場合は、次のように制約します。
@WebRemote(exclude = {"secret"}) 
public Widget getWidget();
Copy to Clipboard Toggle word wrap
値「secret」は返されるオブジェクトの secret フィールドを参照します。
ここで、 返される Widget 値には child フィールドがあり、 これも Widget になる点に注意してください。フィールドではなくこの childsecret 値を隠したい場合は、ドット表記を使用して結果となるオブジェクトグラフ内のこのフィールドのパスを指定することができます。
@WebRemote(exclude = {"child.secret"}) 
public Widget getWidget();
Copy to Clipboard Toggle word wrap
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat