アプリケーションの設計


Java アプレットのヒントとトラブルシューティング
アプレットが実行されると、ステータスバーには、「<アプレット名> を読み込みました」、「<アプレット名> を初期化しました」、「<アプレット名> を開始しました」などのメッセージが表示されます。アプレットが正しくロードされない場合は、代わりに薄い灰色のドットの四角形が表示されます。以下のセクションを参照して [ファイル] - [ツール] - [Java デバッグコンソールの表示] を選択し、アプレットを調べて問題を判別してください。

アプレットが実行されない場合のトラブルシューティングアプレットが Web サイトにリンクされている場合は、Web プロキシが稼動しているかどうかを調べます。ロケーション文書で Web プロキシの名前を確認します。Windows を実行している場合は、DOS プロンプト画面を表示させます。次に、接続が有効かどうか判断するために、プロキシ名を指定した ping コマンドを実行します。ping コマンドから、応答でなくエラーが返される場合は、Web プロキシを回復してもらうために、システム管理者に連絡してください。


リソースファイルへアクセスするJava アプレットでは、イメージファイルやオーディオファイルなどのリソースファイルが頻繁に使用されます。アプレットからリソースファ
イルにアクセスするには、次の 3 つの方法が一般的です。
アクセス方法によっては、アプレット用のリソースファイルを検出できないことがあります。リソースファイルを指定する方法としては、getCodeBase メソッドを使用するのが最も信頼性の高い方法です。アプレットがリソースファイルを検出できない場合には、getCodeBase メソッドを使用するようにアプレットを変更します。文書内のリソースファイルを置換するために、ファイルを再コンパイルしてから [Java アプレット] - [更新] を選択します。

完全な URL を指定するリソースファイルを検出するために完全な URL を指定するアプレットの場合は、アプレットは指定された URL でファイルを探します。たとえば、getImage("http://www.someplace.com/images", "image.gif") のように指定する場合です。Lotus Domino Server が管理する文書内で、IBM(R) Lotus Notes(R) Client を使用してアプレットを実行させる場合は、この方法で通常は問題ありません。ただし、インターネット上のファイルにアクセスできるように、Lotus Notes Client が正しく設定されている必要があります。
同様に、[$FILE] を組み込むように Lotus Domino URL を構成することで、Lotus Notes 文書に添付されているイメージにアクセスできます。たとえば、getImage("http://www.someplace.com/database.nsf/MasterView/862..12E/$FILE", "image.gif") のように指定する場合です。前述の場合と同様に、Lotus Notes Client で実行中のアプレットからイメージファイルにアクセスできるようにするには、Lotus Notes Client から Lotus Domino Server にアクセスできるように設定しておく必要があります。

アプレットのリソースファイルの完全な URL を指定する方法には、インターネットを経由するためリソースファイルへのアクセススピードが遅くなるという欠点があります。また、すべての Lotus Notes Client が直接インターネットにアクセスできるように設定されているわけではありません。さらに、この方法は、リソースファイルの位置が変更されないことを前提としています。こうしたことが問題でない場合は、完全な URL を指定する方法は、リソースファイルにアクセスするための信頼性の高い方法です。

getDocumentBase メソッドを使用するgetDocumentBase メソッドを使用する方法は、リソースファイルを指定する方法として、最も信頼性が低い方法です。 リソースファイルを指定する getDocumentBase メソッドは、アプレットが存在する文書のベースとなる URL (つまり完全な文書 URL から文書ファイル名を除いたもの) を返します。たとえば、アプレットが次の文書上で実行されている場合を考えます。
http://www.someplace.com/test/example.html

この場合、getDocumentBase メソッドは、次の URL の指定を返します。

http://www.someplace.com/test

一部のアプレットでは、getImage(getDocumentBase(), "image.gif") のように、getDocumentBase メソッドを使ってリソースファイルの URL を指定します。上記の URL の場合は、getDocumentBase メソッドを使用するアプレットは、次の URL によりイメージファイルを探します。

http://www.someplace.com/test/image.gif

文書の Lotus Domino URL は、単にファイルを参照するものではないことに注意してください。Lotus Domino URL は、文書を表す HTML を Lotus Domino Server に作成させるためのコマンドです。Lotus Domino URL に対して getDocumentBase メソッドを使用すると、予測外の結果が生じます。たとえば、次の Lotus Domino URL を使ってアプレットをリンクしたとします。

http://www.someplace.com/database.nsf/MasterView/862..12E?OpenDocument

この場合は、getImage コールと getDocumentBase メソッドを併用することにより、次の URL が返されます。

http://www.someplace.com/database.nsf/MasterView/image.gif

ここでは、アプレットはファイルを見つけることができません。これは、文書の ID が削除されているからです。また、イメージが文書の添付ファイルとなっているので、ファイル名を識別するために [$File] 識別子が必要だからです。

文書の ID が削除されているため (また、イメージが文書の添付ファイルとなっているので、ファイル名の識別に [$FILE] 識別子が必要であるため)、アプレットは要求されたイメージを見つけることができません。

getCodeBase メソッドを使用するgetCodeBase メソッドを使用する方法は、アプレットのリソースファイルを指定する方法として最も信頼性の高い方法です。 getCodeBase メソッドは、アプレットのロード元の位置をベースにした URL を返します。アプレットのコードベースは、<APPLET> タグ中の CODEBASE 属性で指定できます。Lotus Domino により、Lotus Notes 文書内に挿入されているアプレット用の HTML が作成される場合は、CODEBASE 属性の完全な URL が作成されます。たとえば、上の例の場合は、getCodeBase メソッドは次の URL を返します。
http://www.someplace.com/database.nsf/MasterView/862..12E/$FILE

getImage コールなどのリソースコールと getCodeBase を併用すると、getCodeBase によりリソースファイルを正確に指定できます。次に例を示します。

getImage(getCodeBase(), "image.gif")

アプレットが Lotus Domino によって管理されている場合は、次の URL が返されます。

http://www.someplace.com/database.nsf/MasterView/862..12E/$FILE/image.gif

この URL により、アプレットはファイルを正しく見つけることができます。

リソースファイルを検索するためのパラメータ値を変更する一部のアプレットには、リソースファイルを参照するためのパラメータや、リソースファイルが格納されているディレクトリを参照するためのパラメータがあります。たとえば、背景のイメージとして使用するファイルや、オーディオファイルのディレクトリを指定するパラメータなどです。これらのパラメータが文書ベースではなくコードベースに関連するように、アプレットを編集する必要が生じることもあります。
他人が作成したアプレットの場合は、パラメータを編集する必要があります。たとえば、インターネット上のアプレットにリンクしている場合や、CLASS ファイルだけが入手済みでソースコードがない場合などです。このような場合は、フォームまたは文書にアプレットを挿入してから、パラメータ値を編集する必要があります。この場合は、パラメータ値の前に「$notes_codebase」という文字列を付加します。

たとえば、「images/image.gif」の代わりに、「$notes_codebase/images/image.gif」をパラメータ値として使用します。Lotus Domino により、パラメータの中の $notes_codebase 文字列は、すべてアプレット用のコードベースに変換されます。したがって、「$notes_codebase/images/image.gif」というパラメータ値は、Lotus Domino により次のように変換されます。

http://www.someplace.com/database.nsf/MasterView/862..12E/$FILE/images/image.gif

この方法では、パラメータ値の指定時に完全な URL を指定していることになり、アプレットの getDocumentBase メソッドは上書きされます。これにより、アプレットはリソースファイルを見つけることができます。

関連項目