- PR -

【JWS】JNLP APIのDownloadServiceについて

1
投稿者投稿内容
としあ
会議室デビュー日: 2004/05/25
投稿数: 2
投稿日時: 2004-05-26 10:11
お初にお目にかかります。JavaWebStartについて質問させて下さい。
JavaアプリケーションでのC/Sのシステムで、クライアント側のリソース(定数等)を
クライアントアプリケーション起動中にダウンロードして書き換えたいと考えています。

そこでJNLP APIのDownloadServiceが使用できるかと考え、試してみましたが
進捗ダイアログは出るものの、一向にダウンロードが始まりません。
jnlp-servletのログにもサーブレットが起動された旨のログが出力されません。

JavaWebStartで初回のアプリケーション、リソースファイルのダウンロードは
正常に実行できました。以下の環境で動作させています。

サーバ:WebLogic8.1J
OS:WindowsXP
JDK:141_05
JWS開発キット:javaws-1_2-i-dev.zip
※自前証明書で署名済み

【JNLPファイル】
<?xml version="1.0" encoding="utf-8"?>
<jnlp
spec="1.0+"
codebase="$$codebase"
href="$$name">
<information>
<title>ResourceTest</title>
<vendor>hoge.</vendor>
<offline-allowed/>
</information>
<security><all-permissions/></security>
<resources>
<j2se version="1.4"/>
<jar href="jar/GetResource.jar" main="true"/>
<jar href="jar/Resource.jar" version="1.0"/>
<jar href="jar/jnlp.jar"/>
</resources>
<application-desc main-class="test.GetResource"/>
</jnlp>

/jarフォルダには
Resource-1.0.jar、Resource-2.0.jar、version.xmlが配置されています。

【version.xml】
<jnlp-versions>
<resource>
<pattern>
<name>Resource.jar</name>
<version-id>1.0</version-id>
</pattern>
<file>Resource-1.0.jar</file>
</resource>
<resource>
<pattern>
<name>Resource.jar</name>
<version-id>2.0</version-id>
</pattern>
<file>Resource-2.0.jar</file>
</resource>
</jnlp-versions>

DownloadServiceを使用している箇所は以下の通りです。
http://java.sun.com/products/javawebstart/1.2/ja/docs/developersguide_ja.html#api
を参考にしました。

DownloadService ds;
try {
// キャッシュされているか確認
URL url =
new URL("http://hostname:7001/jar/Resource.jar");
boolean cached = ds.isResourceCached(url,"2.0");
// キャッシュされていれば削除
if (cached) {
ds.removeResource(url,"1.0");
}
// バージョン2.0をロード
DownloadServiceListener dsl = ds.getDefaultProgressWindow();

ds.loadResource(url, "2.0", dsl); // <※

} catch (Exception exp) {
exp.printStackTrace();
}

※の箇所進捗ダイアログは表示されるが無反応、DL始まらず、表示されたまま。
第二引数を"1.0"にするとResource-1.0.jarが正常にダウンロードされます。
(ダイアログは一瞬表示されます)

ちなみに
http://hostname:7001/jar/Resource.jar?version-id=2.0
とブラウザからリクエストすると「Resource-2.0.jar」が
ダウンロードできます。(サーブレットが動作したログも出ます。)

原因が分る方、そもそも使い方が誤っていると思う方
些細な情報でも結構ですのでご意見下さい。
長文失礼しました。
としあ
会議室デビュー日: 2004/05/25
投稿数: 2
投稿日時: 2004-05-26 10:14
boolean cached = ds.isResourceCached(url,"2.0");

boolean cached = ds.isResourceCached(url,"1.0");
です失礼しました。
1

スキルアップ/キャリアアップ(JOB@IT)