debian gnu/linux 上での
apache + jserv + gnujsp + postgresqlによる
webアプリケーションの試行
各ソフトのバージョンについて
Debian GNU/Linux potato
Apache 1.3.9-11
Jserv 1.1-2
;NUJSP 1.0.0-3
JDK 1.1.8v1-1
第一部:必要なソフトのインストール
apacheのインストール
Apache自体のインストールは、Debian GNU/Linuxではapacheのパッケージをインストールするだけです。
PostgreSQLのインストール
PostgreSQLを使うときに、/etc/apache/httpd.conf のUser www-data Group www-dataが引っかかりました。User/Groupのデフォルトの名称がwww-dataでは"-"が問題を起こします。他の名前に変えねばなりません。[debian-users:17354] PostgreSQL and "www-data" (Re: Re: apache suexec)を参照して下さい。Debian JP Projectのメーリングリスト検索がここでも有効です。PostgreSQLをインストールすると、PostgreSQL用のJDBCも一緒にインストールされます。
servとGNUJSPのインストール
dselectやapt-get installでインストール自体は簡単です。ただ、ここから先、一挙にDebianのコミュニティでは情報が希薄になってしまいます。
Jservの設定
概ねインストール時の設定で使えるはずです。下記も、ほとんどはデフォルト値です。何かいじる前に、Hello.classなど添付されているサーブレットが正しく動くことを確認しましょう。
- /etc/apache/httpd.conf
LoadModule jserv_module /usr/lib/apache/1.3/mod_jserv.so - /etc/jserv/jserv.conf
ApJServMount /servlets /root
ApJServMount /servlet /root
ApJServAction .jsp /servlets/gnujsp< - /etc/jserv/jserv.properties
wrapper.classpath=/usr/share/java/ApacheJServ.jar
wrapper.classpath=/usr/share/java/servlet-2.0.jar
wrapper.classpath=/usr/share/java/postgresql.jar
wrapper.classpath=/usr/share/java/servlets
zones=root
root.properties=/etc/jserv/zones/root.properties - /etc/jserv/zones/root.properties
repositories=/usr/share/java/servlets===>このディレクトリにサーブレットを入れます。 - >GNUJSP(version 1.0 )の設定
- JSPはバージョンが問題になります。 GNUJSP version 1.0は、JSP specification 1.0対応という事になっています。私は、JSPのサンプルプログラムは、DocumentRootの下に専用jspディレクトリを作ってそこにコピーしました。Jservと同様にhello.jspなどのサンプルが動くことがまず第一です。
- /etc/jserv/jserv.conf
ApJServAction .jsp /servlets/gnujsp - /etc/jserv/jserv.properties
wrapper.classpath=/usr/share/java/gnujsp.jar - /etc/jserv/zones/root.properties
repositories=/usr/share/java/gnujsp.jar
第二部:jsp=>Servletやhtml =>jsp=>servletなどの連携を試す
まず、基礎のお勉強から
そもそもServletとJSPはどう違うのか…(^^;- Servletは、Javaアプリケーションの中にHTMLを埋め込んだものです。ですから、perlにHTMLを埋めたり、PL/SQLで書いたストアードプロシジャにHTMLを埋めてOASのPL/SQLカートリッジから呼んで使うような感じに似ています。
- 一方、JSPはHTMLにJavaを埋めた感じなのでPHPと同じような感じになります。
- Servletについては、Java Pressの連載などでお馴染みの原田洋子さんのページと、Sunの"STORY OF A SERVLET: AN INSTANT TUTORIAL"あたりがとっつきやすいでしょう。
- ひよこサーブレットにも色々ありました。サーバの設定も参考になります。
- Sunの"A First JSP Application のThe Very Beginning"は文字通りHello Worldから始まります。
- The Johns Hopkins UniversityのMarty Hallさんのチュートリアル
プログラムは、自分で作るのは面倒なので、貰ってきましょう。
- MLでもお馴染み藤田一郎さんの「イチローのJavaと遊ぼう! 」というのが日本IBMのサイトにありました。WindowsベースなのでLinuxユーザは色々と置き換えて読まねばいけないのが難点ですが勉強になりました。
- SPやServletからJavaBeanを呼んで仕事を任せましょう。
- Beanはパッケージの形にして、servletsディレクトリの下に、パッケージ名と同じディレクトリを作り、そこへ入れておきます。ここではtestというパッケージ名=ディレクトリ名を使います。
- mkdir/usr/share/java/servlets/testでディレクトリを作ります。
- たとえば、
package test;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.net.*;
import java.sql.*;
public class ................................
とパッケージ名もtestにします。 - javac -d /usr/share/java/servlets/test XXXXXXXX.java でコンパイルします。
- 上で紹介したSunの後半は簡単なBeanを使っています。
ソースは、(1)hellouser.jsp、(2)response.jsp、(3)NameHandler.javaとなっています。
(3)は、javacでコンパイルして、/usr/share/java/servlets/testに入れておきます。(1)(2)はDocumentRootの下のjspディレクトリに入れます。
実行すると、こうなります。
- Jservを使っているにもかかわらず、JRun Scripting Examplesからもサンプルを貰いました。バージョンが0.92など古いので、自分で1.0対応に直さねばなりません。
ava Server Pages 0.92 SamplesにあったDate/Time at server を直して走らせるとこうなります。
JSPのソースは、こうで、 Beanはこうなっています。
第三部:いよいよJDBC経由でpostgreSQLへのアクセスへ
検索
- T工文社のサンプルはJSPのバージョンがJSP 0.92と古いので、自分で直す必要がありました。
工文社のオリジナルは、Servletとしても動くように作ってあります。 - TJSP
ソースはこうなっています。 - TJavaBean
ソースはこうなっています。
javacでコンパイルして、/usr/share/java/servlets/test/dbtest.class として入っています。 - THTMLソースはこうなっています。
実行するとこうなります。Tamamuraとユーザ名を入れるとメールアドレスを検索してくれます。
追加・訂正・削除・一覧表示
- /etc/jserv/jserv.conf