Internet Explorerにアドオンしているソフトウェアを導入している場合
アドオンのソフトウェアを無効にしてから、アプレットを動作させてください。有効にしている場合は、Internet Explorerが異常終了する場合があります。
タスクバーをクリックして画面遷移する場合
Internet Explorer 9以降では、JFDialogを継承するダイアログ画面を表示した状態で、タスクバーをクリックして画面遷移すると、元のダイアログ画面に戻ったときにフォーカスがなくなります。
アプレットの破棄
Internet Explorer 9以降では、ウィンドウが閉じられたときに即座に画面を閉じるようになりました。そのため、以下の場合、アプレットの破棄をキャンセルしても画面が消えてしまいます。また、このとき、ウィンドウが消えてもプロセスは残ったままになります
アプレットからJBKプラグインのアプレットへの終了問合せのdestroyRequestedを使用して、ブラウザを終了しようとしても終了しないようにし、かつ
前述のアプレットがあるタブまたはウィンドウを閉じた場合
[対処方法]
アプレットを貼り付けているHTML側で、windowにonbeforeunloadハンドラを実装してください。
<head> <script> function checkClose() { } window.onbeforeunload = new Function("checkClose()"); </script> </head> |
ただしInternet Explorer 10の場合、この対処を実施した状態でいったんdestroyRequested()でfalseを返した場合、その後にtrueを返却してウィンドウを閉じることを許可しても、ウィンドウが閉じられなくなります。Internet Explorer 10環境でdestroyRequestedを使用する場合は、trueを返すようにして終了処理の抑止を行わないでください。
アプレットの親ウィンドウ
アプレットの親ウィンドウを、親ウィンドウとしてダイアログを生成して表示した際に、リサイズ可能なダイアログの場合、表示されるアイコンが異なります。
AppletクラスのshowDocumentメソッド
showDocumentメソッドの第2引数に“”(空文字列)を指定すると、ドキュメントが表示されるウィンドウあるいはフレームが一意に定まらなくなる場合があります。showDocumentメソッドの第2引数には空文字列を指定しないようにしてください。
ズーム機能
ズーム機能で拡大率を変更してもアプレットのサイズは変更されません。
user.homeプロパティの設定値
JBKプラグインは、Java SEが設定するデフォルトのuser.homeプロパティの値をそのまま使用します。Java SEが設定するuser.homeプロパティの値は、以下のとおりです。
(Windowsのインストールドライブ)\Documents and Settings\(ユーザ名) |
例えば、(Windowsのインストールドライブ)="C:"、(ユーザ名)="foo"の場合は、user.homeプロパティの値は“C:\Documents and Settings\foo”になります。
JARファイルのキャッシュ
Java SEには、JARファイルのキャッシュ機能が独自に備えられています。サーバからダウンロードされたJARファイルはWindowsの一時フォルダに“jar_cacheXXXXX.tmp”(XXXXXは任意の数字)という名前で格納されます。
Java SEが持つJARファイルのキャッシュ機能と、JBKプラグインの“2.3.6 アプレットのダウンロード方式の指定”あるいは“2.3.7 HTTPSプロトコルの使用”における指定との関係は以下のとおりです。
“java”を指定した場合
JARファイルは、初めて読み込まれるときにWebサーバからダウンロードされます。
ダウンロードされたJARファイルはJava SEの機能によりWindowsの一時フォルダに格納されます。以降、ブラウザが終了するまではそのJARファイルはダウンロードされず、一時フォルダ内に格納されたJARファイルが使用されます。
ブラウザを終了すると、一時フォルダ内に格納されていたJARファイルは削除されます。次回ブラウザ起動時には、1の手順からの繰り返しになります。
“hybrid”あるいは“native”を指定した場合
JARファイルは、初めて読み込まれるときにブラウザの機能を用いてWebサーバからダウンロードされます。ブラウザのキャッシュ機能が有効な場合には以下のようになります。
JARファイルがブラウザのキャッシュに保存されていて、かつ、キャッシュの内容が更新される必要がない場合には、JARファイルはダウンロードされず、ブラウザがキャッシュしているファイルが使用されます。
JARファイルがWebサーバからダウンロードされた場合には、そのファイルはブラウザのキャッシュに保存されます。
読み込まれたJARファイルは、ブラウザのキャッシュ機能が有効であるかどうかに関わらず、Java SEの機能によりWindowsの一時フォルダに格納されます。以降、ブラウザが終了するまではこの一時フォルダ内に格納されたJARファイルが使用されます。
ブラウザを終了すると、Java SEの一時フォルダ内に格納していたJARファイルは削除されます。ブラウザのキャッシュに保存されているJARファイルはそのまま残ります。次回ブラウザ起動時には、1の手順からの繰り返しになります。
ブラウザが異常終了した場合には、Java SEのキャッシュしていたJARファイルが一時フォルダに残ったままになることがあります。これらのファイルは削除しても問題ありませんので、ファイルが残ったままになっている場合には手動で削除してください。
finalize()メソッドでの処理
finalize()メソッドの中では、System.out.println()やSystem.err.println()などの標準出力および標準エラー出力への出力を行わないようにしてください。このような出力を行うと、ガベージコレクトが起きたときに、まれにJBKプラグインのJavaコンソールへの出力時に処理が止まってしまうことがあります。どうしても必要な場合にはアプリケーションのデバッグ時のみ出力を行うようにし、実際の運用時には出力を行わないように処理を切り替えてください。
ダウンロード方式における差異
アプレットのダウンロード方式の違いにより、以下のような差異が生じます。
ダウンロード方式 | Javaのネットワーク通信クラス(API) | ブラウザ機能 |
---|---|---|
認証 | JBKプラグインが実装したjava.net.Authenticatorクラスにより処理されます。 | ご使用のブラウザの機能に依存します。認証処理はブラウザの認証機能をそのまま使用します。 |
Cookie | JBKプラグインが実装したJavaの通信処理クラス内でJavaScriptを呼び出し、ブラウザからCookie情報を取得してHTTPヘッダに追加します。(*1)(*5) | ご使用のブラウザの設定に依存します。(*2) |
プロキシの使用 | JBKプラグイン設定ファイルのプロキシ設定値によって以下のようになります。
| ブラウザのプロキシ設定をそのまま使用します。 |
*1) アプレット側で、Cookieヘッダを付加したときは追加しません。
*2) アプレット側で、Cookieヘッダを付加しても無効になります。
*3) プロキシ自動設定ファイルに対応していますが、以下の制限があります。
HTTPS通信のときにはプロキシ自動設定ファイルには対応していません。
関数dnsResolveは、ホストがIPアドレス以外の場合に常に空の文字列を返します。
関数isResolvableは、ホストがIPアドレス以外の場合に常にfalseを返します。
関数isInNetは、ホストがIPアドレス以外の場合に常にfalseを返します。
*4) SOCKSホストの設定がされていた場合、以下の条件でSOCKSホスト経由の接続を行います。
HTTPプロキシおよびHTTPSプロキシが設定されておらず、かつ、プロキシ除外リストに含まれないURLが指定された場合
プロキシ自動設定ファイルがSOCKSホスト経由での接続の応答を返した場合
*5) アプレットのロードが完了するまでは、Cookieは付加しません。
[プロトコルごとのダウンロード方式]
プロトコル | ダウンロード方式 | 独自キャッシュ | クラスファイル | JARファイル | イメージファイル(*1) | その他のファイル(*2) |
---|---|---|---|---|---|---|
HTTP/HTTPS | java | なし | JavaのAPI | |||
あり | ||||||
hybrid | なし | ブラウザ機能 | JavaのAPI | |||
あり | ブラウザ機能 | JavaのAPI | ||||
native | なし | ブラウザ機能 | ||||
あり |
*1) java.applet.AppletクラスのgetImage()メソッドを用いてWebサーバからダウンロードされたイメージファイル(*.gif、*.jpg)
*2) アプレットで使用するプロパティファイル(*.properties)やアプレットがJavaのURLクラスを用いてWebサーバから取得しているファイル
JavaScriptとの通信時の注意事項
アプレットからJavaScriptを呼び出す場合は、Javaの呼び出しメソッド内で排他制御されます。また、“ダウンロード方式における差異”のとおり、JavaのAPIを使用したHTTP通信時にはJBKプラグイン内部でJavaScriptの呼び出しを行う場合があります。したがって、アプレットからJavaScriptを呼び出し、そのJavaScriptがJavaのHTTP通信を行うメソッドを呼び出している場合には、デッドロックが発生する場合があります。そのようなアプリケーションは、ダウンロード方式にブラウザ機能を使用してください。