アプリケーションをJBoss4からJBoss6にアップグレードしています。
アプリケーションのいくつかの部分が通常とは異なる方法でクライアントに配信されます。jarはアプリケーション内で検索され、サーブレットからクライアントに送信されます。ここで、クライアントは特定のサポート機能を実行するためにそれらを抽出します。
JBoss 4では、これらのjarをクラスローダーで検索し、jarを読み取ってその内容をクライアントに送信するために使用されるjar://URLを見つけます。
JBoss 6では、ルックアップを実行すると、vfs:/URLを取得します。これはorg.jboss.vfsパッケージからのものであることを理解しています。残念ながら、このURLでopenStream()を呼び出してストリームから読み取ると、すぐにEOFが取得されます(read()は-1を返します)。
何が得られますか?このURLが参照しているリソースを読み取れないのはなぜですか?
基盤となるVFSパッケージにアクセスしてJBossVFSAPIを介してファイルを開こうとしましたが、ほとんどのAPIがプライベートであるように見え、vfs:/URLからVFSに変換するルーチンが見つかりませんでした。 VirtualFileオブジェクトなので、どこにもアクセスできませんでした。
JBoss内のディスクでファイルを見つけようと試みることはできますが、そのアプローチはアップグレード時に非常に失敗しやすいように聞こえます。
以前のアプローチでは、Java Web Startを使用してjarをクライアントに配布し、JavaWebStartのキャッシュ内でそれらを検索して抽出していました。しかし、キャッシュのレイアウトが変更されたため、Javaのマイナーアップグレードごとに問題が発生しました。