- PR -

java web startのにおけるJNLP.APIの利用方法

投稿者投稿内容
ぶん
会議室デビュー日: 2002/04/04
投稿数: 15
投稿日時: 2002-06-25 11:57

いつもお世話になっております。ぶんです。

またまた質問があります。
Java Web Startにて開発中です。

jnlp.apiによるクライアントでのファイル出力を行いたいのですが、
うまく動作しません。
JNLP Developer's Pack は以下のURLからv1.2 Beta をダウンロードしました。
http://java.sun.com/products/javawebstart/ja/download-jnlp_ja.html

jnlp.jarファイルは、J2sdkインストールディレクトリのjre/lib/ext/へ入れて
クラスパスも問題ないようで、コンパイルはOKなのですが、いざ実行すると

try {
fos = (FileOpenService)ServiceManager.lookup("javax.jnlp.FileOpenService");
} catch (UnavailableServiceException e) {

でエラーが発生してしまいます。

1.jdk1.4では使えないのでしょうか?
2.環境の構築方法に、問題があるのでしょうか?

どなたか、ご存知の方がいましたなら教えてください。

環境:
サーバー
 OS:windows2000 Server SP2
HTTP/サーブレットコンテナ:resin
 JDK:J2SE1.4.0
クライアント
 OS:windows2000 Proffesional SP2
ブラウザ:IE 6.0
 JDK:J2SE1.4.0
Paul
ベテラン
会議室デビュー日: 2002/04/30
投稿数: 75
お住まい・勤務地: 東京
投稿日時: 2002-06-26 11:00
>1.jdk1.4では使えないのでしょうか?
問題ないはずです。

>2.環境の構築方法に、問題があるのでしょうか?
JNLPの<security>に、<all-permissions/>か<j2ee-application-client-permissions/>を指定していますか?

_________________
Paul K.Nakagome
ぶん
会議室デビュー日: 2002/04/04
投稿数: 15
投稿日時: 2002-06-26 19:57
nakagome さんレスありがとうございます。

JNLPの<security>に、<all-permissions/>を指定すると以下のエラーが,JWSで表示されて
しまいます。
「システムへの無制限のアクセスを要求する、署名されていないアプリケーションです」

署名を作成したマシンでは、問題なさそうに起動されますが、java Web Startのフレームには
乗っておらず、そのマシンにあるjarファイルが起動されているようです。
(jwsの動きや見た目は、ダウンロードしているようなダイアログが表示されています..)

署名ファイルの作成に問題ありでしょうか??

http://java.sun.com/products/javawebstart/ja/docs/developersguide_ja.html
サイトの「テスト証明書を使用した JAR ファイルの署名」を参考にして作成していますが..
何か思い当たるところがあれば、教えてください。
Paul
ベテラン
会議室デビュー日: 2002/04/30
投稿数: 75
お住まい・勤務地: 東京
投稿日時: 2002-06-27 21:49
> JNLPの<security>に、<all-permissions/>を指定すると以下のエラーが,JWSで表示されて
> しまいます。
>「システムへの無制限のアクセスを要求する、署名されていないアプリケーションです」
全てのJarに署名がないと、そのように動くと思います。基本的に、そのメッセージは警告であって、
それでも「起動する」ことを選択できるはずです。

> 署名を作成したマシンでは、問題なさそうに起動されますが、java Web Startのフレームには
> 乗っておらず、そのマシンにあるjarファイルが起動されているようです。
>(jwsの動きや見た目は、ダウンロードしているようなダイアログが表示されています..)
これは、サーバとクライアントが同一マシンで実行されているということでしょうか?そうであれば、サーバとクライアントを別マシンにして実行してみて下さい。
java Web Startのフレームに乗っていないというのは、Java Web Startアプリケーションマネージャーの「ダウンロードされたアプリケーション」の一覧に当該アプリケーションが表示されないということでしょうか?
そのリストに載っていればダウンロードされていることになりますから、リストから選択すれば、ローカルJarを起動するのと同様に起動されることと思います。

> 署名ファイルの作成に問題ありでしょうか??
「テスト証明書を使用した JAR ファイルの署名」にしたがって作成していれば問題ないと思います。

_________________
Paul K.Nakagome
ぶん
会議室デビュー日: 2002/04/04
投稿数: 15
投稿日時: 2002-06-28 10:05

>全てのJarに署名がないと、そのように動くと思います。基本的に、そのメッセージは
>警告であって、 それでも「起動する」ことを選択できるはずです
>
jarファイルは1つしかありません。
表示されているには、セキュリティの警告ではなくエラーです。
詳細を以下に記述します。

jws Dialog Window−−−−−−−−−−−−−−−−−−−−
タイトルバー: Java web startセキュリティエラー
内容:XXXXを起動できません
ボタン:「了解」「詳細」
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
 xxxxはアプリケーション名です。


「詳細」ボタンを押下した場合のメッセージ Dialog−−−−−−
 アプリケーションの起動または実行中にエラーが発生しました

 例外:JNLP Exception Categoryセキュリティ
    Exception:null:LaunchDesc:null
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

>これは、サーバとクライアントが同一マシンで実行されているということでしょうか?
>
クライアントマシンで開発し、JARファイルの署名を行いサーバー(別マシン)へ
配置して、開発しているクライアントマシンから配置したJWSの起動を行っています

>java Web Startのフレームに乗っていないというのは、Java Web Startアプリケーション
>マネージャーの「ダウンロードされたアプリケーション」の一覧に当該アプリケーションが
>表示されないということでしょうか?
>
署名の作業を行ったマシンでは、問題なく一覧にアプリケーションが表示されています。
また、起動も出来ます。しかし、起動されたWindowを見ると下のステータスバーへ
「Java Web Start Window」なる表示がされていません。
SUNのサンプルでdraw4 などを実行すると必ずその表示がされていますよね。
私のjarファイルでも署名しない状態で、JNLPの<security>に、<all-permissions/>の
記述もないときには、「Java Web Start Window」が左下に表示されていました
しかし、他のマシンからJWSのサイトに接続して起動を行うと前記のようなエラーが表示されて
起動できません。

以下にJNLPファイルの内容を記載します

<?xml version="1.0" encoding="utf-8"?>
<!-- JNLP File for LCM Clock System Prottype Application -->
<jnlp
spec="1.0+"
codebase="http://dellv433c:8080/Users/Demo"
href="sdemo.jnlp">
<information>
<title>Samples System</title>
<vendor>Meister, Inc.</vendor>
<homepage href="reference/tips.html"/>
<description>Sample Demo System</description>
<description kind="short">Sample Demo</description>
<icon href="sample.gif"/>
<offline-allowed/>
</information>
<security>
<all-permissions/>
</security>
<resources>
<j2se version="1.4+" />
<jar href="system/sample.jar" />
</resources>
<application-desc main-class="system.sample"/>
</jnlp>

以上です。
Paul
ベテラン
会議室デビュー日: 2002/04/30
投稿数: 75
お住まい・勤務地: 東京
投稿日時: 2002-07-02 19:35
状況に関しては、理解できました。
どうも署名されたファイルが、サーバからダウンロードされていないように見えます。
まず、正しく署名されていると思われる開発マシン上のJarファイルと、サーバ上の
ファイルが完全に同一かどうかを確認して下さい。
同じであれば、クライアントマシンのJWSのキャッシュを削除して、再度試してみて下さい。

_________________
Paul K.Nakagome
ぶん
会議室デビュー日: 2002/04/04
投稿数: 15
投稿日時: 2002-07-02 20:28
まいど、ありがとうございます。

>どうも署名されたファイルが、サーバからダウンロードされていないように見えます。
>まず、正しく署名されていると思われる開発マシン上のJarファイルと、サーバ上の
>ファイルが完全に同一かどうかを確認して下さい。
>同じであれば、クライアントマシンのJWSのキャッシュを削除して、再度試してみて下さい。
>
ファイルは、完全に同一です。
クライアントマシンのJWSのキャッシュも都度、削除して行ってますが改善されません。
さらに、サーバー上で同じように実行してみてもセキュリティエラーが発生しています。
ん〜
やはり署名がくさいですか???
以下が、その全容です。

D:\Win\classes>keytool -genkey -keystore myKeystore -alias myself
キーストアのパスワードを入力してください: meister
姓名を入力してください。
[Unknown]: satofumihito
組織単位名を入力してください。
[Unknown]: meister
組織名を入力してください。
[Unknown]: meister
都市名または地域名を入力してください。
[Unknown]: hakodate
州名または地方名を入力してください。
[Unknown]: hokkaido
この単位に該当する 2 文字の国番号を入力してください。
[Unknown]: 00
CN=satofumihito, OU=meister, O=meister, L=hakodate, ST=hokkaido, C=00 でよろしい
ですか?
[no]: yes

<myself> の鍵パスワードを入力してください。
(キーストアのパスワードと同じ場合は RETURN を押してください):

D:\Win\classes>keytool -selfcert -alias myself -keystore myKeystore
キーストアのパスワードを入力してください: meister

D:\Win\classes>keytool -list -keystore myKeystore
キーストアのパスワードを入力してください: meister

キーストアのタイプ: jks
キーストアのプロバイダ: SUN

キーストアには 1 エントリが含まれます。

myself, 2002/06/26, keyEntry,
証明書のフィンガープリント (MD5): 6A:05:64:1E:78:A0:7F:8F:CF:9C:E9:22:FA:67:7F:9
B

D:\Win\classes>jarsigner -keystore myKeystore lcmClock.jar myself
キーストアのパスワードを入力してください: meister

D:\Win\classes>
Paul
ベテラン
会議室デビュー日: 2002/04/30
投稿数: 75
お住まい・勤務地: 東京
投稿日時: 2002-07-03 11:38
> やはり署名がくさいですか???
ご提示の方法で、署名自体は問題ないと思います。

> ファイルは、完全に同一です。
> クライアントマシンのJWSのキャッシュも都度、削除して行ってますが改善されません。
> さらに、サーバー上で同じように実行してみてもセキュリティエラーが発生しています。
そうなると後は、署名に使った証明書が、テストに利用するクライアントマシンに正しくインストールできているかどうかが疑われます。
署名作業をしたマシンから証明書をエクスポートして、目的のマシンにインポートしたときの手順と結果を、再度確認して下さい。
_________________
Paul K.Nakagome

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