アーキテクチャガイドには、読者に有用な基礎情報があるかもしれません。
org.apache.commons.logging.Log
インタフェースの実装を提供することです。さらに、org.apache.commons.logging.LogFactory
インタフェースの実装は、ロガーへの接続や統合させるための特別な要求があった場合に提供されます。
Log
インタフェースは、ログに対してログ/トレースメッセージを書くのに使用される次のメソッドを定義します:
log.fatal(Object message);
log.fatal(Object message, Throwable t);
log.error(Object message);
log.error(Object message, Throwable t);
log.warn(Object message);
log.warn(Object message, Throwable t);
log.info(Object message);
log.info(Object message, Throwable t);
log.debug(Object message);
log.debug(Object message, Throwable t);
log.trace(Object message);
log.trace(Object message, Throwable t);
log.isFatalEnabled();
log.isErrorEnabled();
log.isWarnEnabled();
log.isInfoEnabled();
log.isDebugEnabled();
log.isTraceEnabled();
これらのメソッドの意味は、メッセージの重要度の高い方から低い方に対して、以下が期待されます:
org.apache.commons.logging.LogFactory
インタフェースのデフォルト実装をオーバライドでき、JDK 1.3サービスプロバイダ発見処理にアプリケーションのニーズを指定するLogFactoryを位置付け、生成します。詳細は、LogFactoryImpl.java
のJavadocを参照して下さい。
LogFactory
は、org.apache.commons.logging.Log
プロパティを設定することによって、org.apache.commons.logging.Log
インタフェースの特定の実装をインスタンス化するために設定できます。このプロパティは、システムプロパティか、CLASSPATHに含まれなければならないcommons-logging.properties
ファイルで指定できます。
org.apache.commons.logging.Log
システムプロパティで指定されるorg.apache.commons.logging.Log
インタフェースを使用します。プロパティが設定されないか、クラスが利用可能でない場合、JCLは、以下の優先順位のツールキットのためにCLASSPATHを検索することによってデフォルトのロギングキットのアクセスを提供します:
public static java.util.ResourceBundle getMessageResourceBundle();
public static String getMessage(String key) throws java.util.MissingResourceException;
public static String getMessage(String key, String var) throws java.util.MissingResourceException;
public static String getMessage(String key, String var1, String var2) throws java.util.MissingResourceException;
public static String getMessage(String key, String[] vars) throws java.util.MissingResourceException;
AXISプログラマは、JavaUtils.getMessageResourceBundleを直接呼ぶことによりリソースバンドルを使用することができますが、getMessageメソッドは、2つの理由の代わりに使用されます:
変数があるメッセージの場合、"{X}"シンタックスを使用します。ここで、Xは、0から始まる変数の番号です。例えば:
String配列のgetMessageを呼ぶこともできます:
String配列版のgetMessageは全てに適用できますが、ほとんどのメッセージの変数は0、1、もしくは、2つなので、その他のgetMessageメソッドは、String配列版の複雑さを避けるための利便性として提供されています。
リソースが見つからない場合、getMessageメソッドは、MissingResourceExceptionをスローすることに注意して下さい。そして、引数の数よりも{X}エントリが多い場合、ParseExceptionがスローされます。これらの例外は、RuntimeExceptionなので、呼び出し元は明示的にキャッチすべきではありません。
リソースバンドルのプロパティファイルは、org/apache/axis/utils/resources.propertiesです。
プロパティファイルのエントリは、パターンに従わなければなりません:<string><2桁の接尾辞>。
プロパティファイル内のエントリは、キーがアルファベット順になっている必要があります。
プロパティファイル内のエントリは、変更されることがないようにしなければなりません。コードの変更によりメッセージの変更が必要な場合、既存のメッセージは変更しません。代わりに新しいエントリを生成し、2桁の接尾辞を増やします。これは、2つの理由があります。1.他の箇所でメッセージが使用されているか分からないため。2.トランスレータは新しい文字列のみ知っており、変換するため。この制限がないと、トランスレータに常に変換するためのプロパティファイルが与えられ、常に全ての文字列を変換しなければならなくなります。
if ( operationName == null )
throw new AxisFault( "No operation name specified" );
org/apache/axis/utils/resources.propertiesへエントリを追加しなければならないでしょう。例えば:
noOperation=No operation name specified.
そして、読み込むコードを変更します:
if ( operationName == null )
throw new AxisFault(JavaUtils.getMessage("noOperation"));
本ドキュメントは、日本Apache XMLプロジェクト(石神覚司)により翻訳されました。
翻訳に対するコメントは、