次のクラスを使用するアプレットベースのアプリケーションがあります。
- javax.xml.parsers.DocumentBuilderFactory
- javax.xml.parsers.DocumentBuilder
- javax.imageio.ImageIO
- javax.imageio.ImageWriteParam
- javax.imageio.ImageWriter
- javax.imageio.stream.FileImageOutputStream . . 等
これは私がアプレットを初期化する方法です:
var attributes = {
codebase : "http://example.com/urlto/jars",
code : "AppletLauncher.class",
archive : "MyApp.jar?v=" + Math.random()
};
var parameters = {"java_arguments": "-Xmx512m"};
deployJava.runApplet(attributes, parameters, "1.6");
アプレットは、いくつかの GET 要求を行います。リクエストの例を次に示します。
[GET] /urlto/jars/META-INF/services/javax.imageio.spi.ImageInputStreamSpi
[HEAD] /urlto/jars/META-INF/services/javax.imageio.spi.ImageInputStreamSpi
[GET] /urlto/jars/META-INF/services/javax.imageio.spi.ImageTranscoderSpi
[HEAD] /urlto/jars/META-INF/services/javax.imageio.spi.ImageTranscoderSpi
[GET] /urlto/jars/META-INF/services/javax.imageio.spi.ImageReaderSpi
[GET] /urlto/jars/META-INF/services/javax.imageio.spi.ImageOutputStreamSpi
[GET] /urlto/jars/META-INF/services/javax.imageio.spi.ImageWriterSpi
[GET] /urlto/jars/META-INF/services/javax.xml.parsers.DocumentBuilderFactory
この投稿を読んだところ、codebase_lookup を無効にすることについて言及されていましたが、これもうまくいきませんでした。
クラスローダが最初に JVM のクラスとアプレット jar ファイルを検索することを理解しています。見つからない場合は、コードベースを検索してそれらのリクエストを行います。それが本当なら、私はすべてのコア クラスを使用していますが、なぜリクエストを行う必要があるのでしょうか? これらのリクエストを行わないように強制するにはどうすればよいですか?
すべての要求が失敗すると、アプレットは最終的に初期化されますが、アプレットの起動に時間がかかりすぎます。
アプリケーションでは、BufferedMemory で JPEG を読み取り、BufferedMemory から JPEG を書き込むだけです。