fc2ブログ
先日作ったJavaアプレット(週間天気一覧)での環境作成手順です。
(後注:都合によりJavaアプレット(週間天気一覧)の記事はココでは掲載していません。以下はJavaアプレット環境作成手順の参考程度にご覧ください)

(お断り)
当ブログ(FC2)の表示の都合上(文字化け・文字消えする)、<>文字を含むサンプルコード等はそのままコピー&ペーストして使用出来ません。<>の文字は<>に変換しています(小文字を大文字にして表示)のでコピー&ペーストする場合は文字変換をお願いします。

=================================================
Javaアプレット環境作成手順
=================================================
======================Javaアプレット環境作成手順
アプレット作成環境
======================
Javaアプレットプログラム(週間天気一覧)はEclipseで作成しています。プログラムの中では以下の5つのJarを使っています。Eclipseではこれらを[ビルドパス]→[外部アーカイブの追加]で登録し単体デバッグしていました。

httpunit.jar
js-1.6R5.jar
nekohtml-0.9.5.jar
xmlParserAPIs-2.6.1.jar
xercesImpl-2.6.1.jar

アプレットを作成後、アプレット自体もtenkiweek02.jarとしてJarにしてしまいます。これはclassのままでサイトに設定したらセキュリティエラーで引っかかってしまった対策でした。ここで起動しているアプレットtenkiweek02.classは構成上の理由で jp.ridgeline.tenkiweek02というパッケージにまとめているのですが、サイトにjp/ridgeline/tenkiweek02とフォルダを作ってやらなくともtenkiweek02.jarでまとめてやるとその中でパッケージ(フォルダ)を認識してくれます。(後から考えたらパッケージの必要も無かったのかもですが?)したがってこのアプレットの場合は.classのサイトへのアップを行なっていません。

以下はHTMLのアプレット定義です。
<APPLET
CODEBASE="http://www.ridgeline.jp/tenki/"
code ="jp.ridgeline.tenkiweek02.tenkiweek02.class"
NAME = "週間天気一覧"
archive ="tenkiweek02.jar,httpunit.jar,js-1.6R5.jar,nekohtml-0.9.5.jar,xmlParserAPIs-2.6.1.jar,xercesImpl-2.6.1.jar"
WIDTH=800 HEIGHT=550>
</APPLET>

archiveでは””の中に複数のJarをカンマで区切って定義します。サイト側にはhttp://www.ridgeline.jpの下に/tenki/というフォルダを作ってそれ以下に全てのメンバを登録しました。


======================
サイトに登録
======================
アプレットの各クラス(tenkiweek02.class+α)をtenkiweek02.jarというJarを作製してまとめてから、キーストアの作成を行ない署名します。その後他の使っているJarにも全部署名します。

Eclipse 対象プロジェクトで右クリック

エクスポート

JARファイル

[次へ]

エクスポートするリソースの選択

エクスポート先を選択して下さい(JARファイルの出力先指定)

[終了]

[OK]

作成したJARファイル(tenkiweek02.jar)の確認(日付/時刻確認)

Jarのあるフォルダに移動。
# cd /home/k/☆workspace/tenkiweek02/bin
(このフォルダは私の環境設定です)

キーストアの作成
以下の形式でキーストアを作成する
ストア名 tenki キーストアファイル tenkistore

# keytool -genkey -alias tenki -keystore tenkistore -validity 2000
キーストアのパスワードを入力してください: yyyyyyyyyyyy(パスワード)
新規パスワードを再入力してください: yyyyyyyyyyyy(パスワード)
姓名を入力してください。
[Unknown]: zzzzzzz  →(テキトーです)
組織単位名を入力してください。
[Unknown]: zzzzzzz  →(テキトーです)
組織名を入力してください。
[Unknown]: zzzzzzz  →(テキトーです)
都市名または地域名を入力してください。
[Unknown]: zzzzzzz  →(テキトーです)
州名または地方名を入力してください。
[Unknown]: zzzzzzz  →(テキトーです)
この単位に該当する 2 文字の国番号を入力してください。
[Unknown]: jp
CN=zzzzzzz, OU=zzzzzzz, O=zzzzzzz, L=zzzzzzz, ST=zzzzzzz, C=jp でよろしいですか?
[no]: yes

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

有効期限は適当に2000日としています。yyyyyyyyyyyyやzzzzzzzは任意の値になります。


作成したJARファイルに署名する。
# jarsigner -keystore tenkistore tenkiweek02.jar tenki
キーストアのパスワードを入力してください: yyyyyyyyyyyy(パスワード)

他の使用Jarを揃える(コピー)。

他の使用しているJarに全て署名する。(上記と同様手順)
# jarsigner -keystore tenkistore httpunit.jar tenki
# jarsigner -keystore tenkistore js-1.6R5.jar tenki
# jarsigner -keystore tenkistore nekohtml-0.9.5.jar tenki
# jarsigner -keystore tenkistore xmlParserAPIs-2.6.1.jar tenki
# jarsigner -keystore tenkistore xercesImpl-2.6.1.jar tenki

サイト登録HTMLパラメタの編集
アプレットを埋め込むため <APPLET から </APPLET> タグを編集して、表示サイトのHTMLに埋め込む。

FTPツールでサイトにJarとHTML等を転送(あと、正確には他に表示する天気マーク等も転送しています)

Firefox(ブラウザ)の再立ち上げ
アプレットを登録(又は入れ替えたら)FIREFOX(ブラウザ)も立ち上げ直しが必要。そうしないと、Javaコンソールも確実に出てこないし、「アプリケーションのデジタル署名を検証出来ません。このアプリケーションを実行しますか?」のメッセージウィンドウも毎回確実に出てこないようです。

サイト接続。作成したアプレットを含むHTMLを起動する。
http://www.ridgeline.jp(例)

<a href="http://blog-imgs-46.fc2.com/a/n/o/anoyamanomukouni/tenkiichiran01.png" target="_blank"><img src="http://blog-imgs-46.fc2.com/a/n/o/anoyamanomukouni/tenkiichiran01s.png" alt="tenkiichiran01.png" border="0" width="319" height="208" /></a>
PCにJARが読み込まれたのちに「アプリケーションのデジタル署名を検証出来ません。このアプリケーションを実行しますか?」とメッセージウィンドゥが出るので[実行]ボタンを押すとアプレットプログラムが実行される。

<a href="http://blog-imgs-46.fc2.com/a/n/o/anoyamanomukouni/tenkiichiran02.png" target="_blank"><img src="http://blog-imgs-46.fc2.com/a/n/o/anoyamanomukouni/tenkiichiran02s.png" alt="tenkiichiran02.png" border="0" width="319" height="211" /></a>
結果確認


================================================
<参考>JAVAコンソールログ
================================================
JAVAコンソールを表示させている場合、今回のアプレット(週間天気一覧)では以下のようなログを排出しています。

*** 週間天気一覧 (Init) Start ***
*** 最終更新日時:xx月xx日 xx時 ***
*** 週間天気一覧 (Init) End ***

一般のJavaプログラムでは System.out.println("hogehoge");とすると標準出力(コンソール)にメッセージが出ますが、Javaアプレットプログラムで System.out.println("hogehoge"); とすると、JAVAコンソールにメッセージが出せます。

================================================
<参考>サイト登録HTMLパラメタ
================================================
以下はテスト時のHTMLパラメタです。サイトテスト時にはこのHTMLを CODEBASEである http://www.ridgeline.jp/tenki/フォルダに転送してそのHTMLを直接起動して確認していました。実際のサイトに埋め込む時は <APPLET から </APPLET>までを切り出してそのまま必要な場所に埋め込んでやります。

<HTML>
<HEAD>
<TITLE>tenkiweek</TITLE>>
<HEAD>
<BODY>
<APPLET
CODEBASE="http://www.ridgeline.jp/tenki/"
code ="jp.ridgeline.tenkiweek02.tenkiweek02.class"
NAME = "週間天気一覧"
archive ="tenkiweek02.jar,httpunit.jar,js-1.6R5.jar,nekohtml-0.9.5.jar,xmlParserAPIs-2.6.1.jar,xercesImpl-2.6.1.jar"
WIDTH=800 HEIGHT=550>
</APPLET>
</BODY>
</HTML>

================================================
最後に
================================================
今回は私の勉強不足と少々難解?なアプレット環境のために署名に頼らざるを得ませんでした。また実行時に[実行]ボタンを押す操作が余計なのでその辺を省く仕組みを考えたいものです。他に今回のは表示されるまで時間が掛かるのが課題になってしまったのですが環境も含めて改善したいものですがどうなることやらです。(^^;)

2010.05.04 / Top↑
Secret(管理者にだけ表示を許可する)