Fiverwoks Homepageへ

Java Web StartとXoneでリッチクライアントアプリを作る 3/3

初版 2004-09-15
沼倉 均
Numakura Hitoshi
|Page1|Page2|Page3|

■ はじめに

今回は、第2回で作成したGUIアプリをJWSで実行する方法です。JWSに関する全般の解説は下記URLを参照してください。
http://java.sun.com/products/javawebstart/1.2/ja/docs/developersguide_ja.html

■ サーバ側の設定

ここではTomcat(4.1.30)に内蔵のHTTPサーバを利用します。本格的な運用にはApacheなどのWebサーバを使うべきでしょうが、LAN内で実験するにはTomcatでも十分です。最初にTomcatをインストールしておきます。インストールしたフォルダをTOMCAT_HOMEとします。

1.MIMEタイプの設定
Webサーバに、拡張子が.JNLPのファイルに対して、application/x-java-jnlp-fileというMIMEタイプを設定します。しかし、Tomcat4.1.30では最初からこの設定が入っているので必要ありません(TOMCAT_HOMEのconf/web.xml)。

2.アプリをjarファイルにする
第1回で作成したGUIアプリ(TextEditor.java)をコンパイルておき、xone_sampleのフォルダがあるところでコマンドプロンプト(シェル)から

jar -cvf texteditor.jar xone_sample

と実行し、texteditor.jarを作ります。

もう一つ、XONE_HOMEのconfigフォルダ内のファイルもXoneから参照されるのでjarにします。XONE_HOMEで、

jar -cvf xone-config.jar config/*.*
c として作っておきます。ただし、ここでは簡単のため上記のようにしてjarを作っていますが、config内のtorque.propertiesやbizLogic-config.xmlはサーバ側だけで使われるもので、これらはjarに含める必要はありません。特に、RDBのパスワード等が記述されたtorque.propertiesは不用意に配布しない方がよいでしょう。

3.jarに署名する
TextEditorは、ローカルでファイルの読み書きを行います。こうしたアプリは、使う側からすると怖くて使えないものですが、問題のないアプリであることを証明するために署名を行います。もし、これを多くの方に使ってもらうというのであれば、VeriSign等のような認証機関から証明書を得る必要があるでしょうが、今回は自己署名した証明書を作ります。

keytool -genkey -keystore keystore -alias mykey

とすると、パスワードや名前などを聞いてくるので入力してください。

これで、keystoreファイルが作成されます。次にこのkeystoreファイルをおいてある場所で、jarファイルに署名します。

jarsigner -keystore keystore -storepass xxx -keypass yyy zzz.jar mykey

ここでxxxやyyyには、先ほどのkeytoolで作ったキーストアのパスワードと鍵パスワードをそれぞれ指定します。zzzにはjarのファイル名を指定します。これで、jarファイルには署名が書き込まれるので、オリジナルのjarファイルをコピーしてから行ってください。署名が必要なjarファイルは、先ほど作成したtexteditor.jar、xone-config.jarの他に、実行に必要なライブラリにも署名します。クライアントに必要なライブラリは、XONE_HOMEのlibの中のすべてのファイルです。

4.JNLPファイルを作成する
JNLPファイルの内容は以下のようになります。jnlpタグのcodebase属性、homepageタグのhref属性はそれぞれ自身の環境に変更してください。

リスト内ではoffline-allowedタグを入れていますが、これはオフラインでも利用できることを指定するものです。TextEditorではログインできなければ、使えないことになっているのでこのタグは意味ありません。ただ、実際のアプリではローカルにもデータを保存できるようにしたほうがよいと思います。iconタグはコメントにしていますが、これもできれば適当なものを作るとよいでしょう。
なお、このファイルではエンコードをutf-8に指定しているので、この形式で書き出せるエディタで編集してください(そうでない場合はエンコード指定を変更してください)。また、パーソナル版をご使用の方は、xoneのjarファイル名を変更してください。

<?xml version="1.0" encoding="utf-8"?>

<jnlp spec="1.0+"
  codebase="http://xone-01:8080/texteditor/jws"
  href="texteditor.jnlp">
  
  <information>
    <title>Text Editor</title>
    <vendor>Fiverworks</vendor>
    <homepage href="http://xone-01:8080/texteditor/index.html"/>
    <description>Tiny Text Editor</description>
    <description kind="short">TextEditor</description>
    <!-- icon href="images/te.jpg"/ -->
  </information>

  <information locale="ja">
    <title>テキストエディタ</title>
    <vendor>Fiverworks</vendor>
    <description>テキストエディタ</description>
    <description kind="short">簡易版テキストエディタ</description>
  </information>
  
  <security>
    <all-permissions/>
  </security>
  
  <offline-allowed/>
  
  <resources>
    <j2se version="1.4+" initial-heap-size="96m" max-heap-size="256m" />
    <jar href="lib/axis.jar"/>
    <jar href="lib/commons-beanutils-1.6.1.jar"/>
    <jar href="lib/commons-collections-2.1.jar"/>
    <jar href="lib/commons-discovery.jar"/>
    <jar href="lib/commons-lang-2.0.jar"/>
    <jar href="lib/commons-logging-1.0.3.jar"/>
    <jar href="lib/commons-validator.jar"/>
    <jar href="lib/csv.jar"/>
    <jar href="lib/highstandard.jar"/>
    <jar href="lib/jakarta-oro-2.0.7.jar"/>
    <jar href="lib/jaxrpc.jar"/>
    <jar href="lib/jdom.jar"/>
    <jar href="lib/jndi-1.2.1.jar"/>
    <jar href="lib/log4j-1.2.8.jar"/>
    <jar href="lib/saaj.jar"/>
    <jar href="lib/xercesImpl-2.0.2.jar"/>
    <jar href="lib/xmlParserAPIs-2.0.2.jar"/>
    <jar href="lib/xone1.0.3.jar"/>
  </resources>
  
  <application-desc main-class="xone_sample.jws.TextEditor"/>
</jnlp>
5.HTMLファイルとweb.xmlを作る
HTMLファイルは、最低でもJNLPファイルへのリンクあればOKです。以下の内容をindex.htmlとして作成します。

<a href="texteditor.jnlp">テキストエディタを起動</a><BR>
web.xmlも次のように最小限の内容です。
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
  <welcome-file-list>
  	<welcome-file>index.html</welcome-file>
  </welcome-file-list>  
</web-app>
6.デプロイ
以上ですべての要素は揃ったので、warファイルを作ります。これまで準備したファイルを、次のような構成で適当なフォルダにコピーしておきます。
(適当なフォルダ)
|   index.html
|   texteditor.jar
|   texteditor.jnlp
|   xone-config.jar
|
+---lib
|       torque-3.1-xone1.0.jar
|       xercesImpl-2.0.2.jar
|       commons-beanutils-1.6.1.jar
|       xmlParserAPIs-2.0.2.jar
|       avalon-framework-4.1.4.jar
|       xone1.0.3.jar
|       stratum-1.0-b3.jar
|       village-2.0-dev-20030825.jar
|       commons-collections-2.1.jar
|       commons-dbcp-20030825.184428.jar
|       commons-discovery.jar
|       commons-lang-2.0.jar
|       jaxrpc.jar
|       jdom.jar
|       commons-configuration-1.0-dev-3.20030607.194155.jar
|       commons-pool-20030825.183949.jar
|       commons-validator.jar
|       csv.jar
|       commons-logging-1.0.3.jar
|       highstandard.jar
|       jakarta-oro-2.0.7.jar
|       jndi-1.2.1.jar
|       junit-3.8.1.jar
|       jdbc-2.0.jar
|       jcs-20030822.182132.jar
|       log4j-1.2.8.jar
|       logkit-1.0.1.jar
|       saaj.jar
|       axis.jar
|
\---WEB-INF
        web.xml
このフォルダで、

jar -cvf texteditor.war *

としてtexteditor.warを作成します。このファイルをTOMCAT_HOMEのwebappsにコピーします。

■ 実行

クライアント側にはJWSの環境を準備するだけです。これにはJava1.4.2以降をインストールすれば、JWSもインストールされます。これ以前のバージョンでは、JWSだけを別にインストールする必要があります。

サーバ側のTomcatを起動し、クライアントからhttp://xone-01:8080/texteditorにアクセスすると、次のような画面になります。



ここで表示されたリンクをクリックすると、ダウンロードの画面が表示された後に次のような警告のためのダイアログが表示されます。



この警告のメッセージにひるまず(^^;)、開始ボタンをクリックするとテキストエディタが起動できます。

■ 最後に

この文書中では、説明のためjarファイルの作成等にコマンドを使うように書いていますが、手順が多いのでantを使うことをおすすめします。最初に起動するまでは少々面倒ですが、一度作れば後はアプリの開発だけに専念できます。

今回のGUIアプリではSwingを使いましたが、EclipseのSWTで作ることもできます。これについては、
http://www-6.ibm.com/jp/developerworks/opensource/030822/j_os-jws.html を参照してください。antのスクリプトも参考になると思います。

ここで紹介したように、ブラウザを利用するWebアプリだけではなく、JWSを使ったクールな業務アプリというのも選択肢に入れてはいかがでしょうか。

mailto:hnumakura@fiverworks.com

|ページTOP|サンプルTOP|

『Java』は米国および、その他の国における米国Sun Microsystems, Inc.の商標です。
その他本文に記載されている会社名、商品名は、各社の登録商標または商標です。
| 会社案内 | 著作権 | 免責事項 | 通信販売法規に基づく表記 | プライバシーポリシー | お問い合せ | サイトマップ |
COPYRIGHT(C) 2004 Fiverworks Ltd. ALL RIGHTS RESEREVED.