ハンドラーで実行される共通アクション

Web サービスのエントリー・ポイントの作成

多くのフレームワークは、アプリケーションへの独自のエントリー・ポイントを提供しています。一般的な例として、構成ファイル内またはコードの注釈内のいずれかで識別されている Web サービスを公開する場合が挙げられます。アプリケーションの構成ファイル内を検索するか、バイトコード内を直接検索することで、指定されたエントリー・ポイントを見つけた後は、F4FAction.addTaintedCallback メソッドを使用して、汚染されたデータ・エントリー・ポイントを適切なメソッドに作成できます。

例で注目する点 :EJB 2 では、Web サービス・エントリー・ポイントを宣言するために、アプリケーションの構成ファイル (ejb-jar.xml) にエンドポイントを定義します。handleApp は、ejb-jar.xml で宣言された Bean をループし、エンドポイント・クラスが定義されている場合は常に、メソッド名のリストを取得します。そして、これらの実装を、addTaintedCallback メソッドを使用して Web サービス・エントリー・ポイントとして宣言します。

メソッドの置換

現代的なフレームワークでは、仮想関数や抽象化を利用することで、ビジネス・コンポーネント同士の結合をより緩やかにすることがよく行われています。これは開発プロセスに改善をもたらす場合がありますが、仮想関数とその実装の間の関連付けが構成ファイル内やコードの注釈内で処理されている場合には、静的分析に困難をもたらします。F4FAction.replaceCalls を使用すれば、ハンドラーでそれらの関連付けを指定することができます。

例で注目する点 :EJB 2 では、各 Bean にインターフェース (ローカルおよびリモート) のセットがあり、これらのインターフェースが、他の Bean がその Bean と対話できる方法を宣言します。これは、Bean のインターフェース class.method が呼び出されると、このメソッドは常に、フレームワークによって実際の ImplementationClass.method に置き換えられることを意味します。

行 62 から、サンプル・ハンドラーは各 Bean をループして、それぞれのリモート・インターフェースとローカル・インターフェースを取得し、これらのインターフェースを実際の実装に置き換えます。

ロギング

ハンドラーは、com.ibm.wala.andromeda.util.logging.TaintLogger クラスを使用して、実行中に通知メッセージをログに記録できます。また、AppScan® ソース のユーザー・インターフェースにエラー・メッセージを表示できます。TaintLogger クラスは log4j ライブラリーを使用します。メッセージをログに記録するには、最初に TaintLogger.i().getLogger() を呼び出すことによって Logger オブジェクトを取得します。その後、Logger に対してロギング・メソッド (例えば Logger.warn) を起動して、必要なメッセージをログに記録します。ログ・メッセージは <data_dir>\logs\StaticAnalyzer_Errors.log (<data_dir>AppScan® ソース プログラム・データの場所です。詳細は インストールとユーザー・データ・ファイルの場所) に表示されます。Logger.error または Logger.fatal を使用してメッセージをログに記録すると、エラー・メッセージも AppScan® ソース のユーザー・インターフェースの「コンソール」ビューに表示されます。