サードパーティのdll(JTwainから)がパッケージ化されたアプレットがあります。私のアプレットは、TWAIN互換のデフォルトプリンタからドキュメントをスキャンします。アプレットは紙詰まりで失敗し、回復しません。ユーザーがページから離れると、アプレットが破棄されます。ページに戻ると、再び失敗します。ブラウザを閉じて(PC上のjava.exeプロセスを強制終了します)、ページに戻ると問題が解決し、すべてが機能します。
ユーザーがブラウザを閉じなくても、すべてを再起動したい。アプレットリソースがロードされるURLにGUIDクエリ文字列を追加したので、何もキャッシュされていないことがわかります。Windowsタスクマネージャーをチェックインしましたが、dllによって作成されたプロセスはありません。すべて、メインのjava.exeプロセス内で発生しています。スキャンプロセスをスレッドでラップして、stopメソッドまたはdestroyメソッドで中断できるようにしました(アプレットが破棄されたときにアプレットスレッドが停止されなかった場合に備えて)が、うまくいきませんでした。
任意の提案をいただければ幸いです。理想的には、アプレットがアンロードされたときにJavaを再起動する方法が必要です(ただし、それが可能かどうかは疑問です)。
アップデート
アプレットが失敗する原因を特定するために、数日を費やしました。私はまだ知りません:(
紙詰まりが発生すると(私のコードではありません)、いくつかのポップアップが表示されます。1つ目は、ユーザーに紙詰まりを警告し、[OK]ボタンをクリックして閉じることができます。2つ目は、「デバイスからの読み取り」と表示され、ハングします。上隅にある赤いウィンドウを閉じるアイコンで閉じることはできません。タスクマネージャーから削除すると、ウィンドウは「応答しないプログラム」に関するレポートを送信するように要求します。これらのポップアップはdllによって生成されると思います。そして、2番目がハングすることを考えると、私の仮定は、dllによって開始されたスレッドが、TWAINアプリケーションの一部のコンポーネントのロックを保持したままハングしたことです。私は得る
com.asprise.util.jtwain.JTwainException: Failed to open the specified data source:
Source: TW-Brother MFC-9970CDW LAN Thrown
..スキャナーにアクセスしようとしたとき。
どうすればもっと情報を得ることができるのか、少し戸惑っています。私は(ie7を使用するために)Windows Virtual PCでアプレットをテストしていますが、この環境でステップデバッグする方法がありません。(そして、とにかくソースがないサードパーティのコードでクラッシュしています)