作成者 城風敏彦 2005/05/02
JBOSSを前提にしたJ2EEアプリーケーションの開発環境を説明する。
JBOSSのHTTPポートはデフォルトで8080であり、オラクルサーバーなどとぶつかるの可能性があるので、
C:\java\jboss-3.2.5\server\default\deploy\jbossweb-tomcat50.sar\server.xml
でポート番号を8080から8082などに変更した方が良い。
ここではjboss3.2.5でポート番号を8082にしているので、自分の環境のjbossのバージョンとポート番号に
読み替えて欲しい。
まずLombozの設定をする。これでJSPなどの文法チェックや、
Webサーバーへのデプロイ(配置、インストール)ができる。
を解凍する。C:\java\jboss-3.2.5以下にbinがあるように配置する。
JBOSSは以下からダウンロードできる。
http://www.jboss.org/products/index
注:うまく動作しなかった場合jboss325.serverを修正する。
eclipse.exeを起動する。
ウインドウ>設定>Lomboz
JDK Tool jarで、C:\java\j2sdk1.4.2\lib\tools.jar など、JDKのtools.jarを指定する。
ServerDefinitionで以下のように設定してOKを押する。
Server typesにJBOSS 3.2.5が出てこない時は、eclipseを再起動してやってみる。
ここでJBOSS3.2.5を設定しても、デフォルトはJboss2.4.4のまま。プロジェクトごとにサーバーを選べるので
これで良い。
OK を押す。
ファイル>新規>プロジェクト>Java>Lomboz J2EE Project
次へ
ここではプロジェクト名「jboss」とする。
次へ
フォルダーの追加
srcを入れてOK
はい
次へ
Add
jbossWebと入力してOKを押す。
Ejbを作る人は、Ejbタブを押してjbossEjbなどと打つが、今回は省略する。
Targeted Serversタブを押す。
JBOSS3.2.5を選択して、Add を押し、終了を押す。
http://www.apache.org/dist/jakarta/struts/binaries/
からjakarta-struts-1.1.zipを落として、適当なフォルダに展開しておく。ここでは、C:\java\jakarta-struts-1.1フォルダとした。
ウインドウ>設定>EasyStruts Struts1.1 で以下のように、
Add JARS で、C:\java\jakarta-struts-1.1\lib の全てのjarを一つずつ追加する。
Add TLDS で、C:\java\jakarta-struts-1.1\lib の全てのtldを一つずつ追加する。
以下のようになる。
jbossプロジェクトを右クリックし、設定>Easy Struts を選択
Add Struts support to project…
Webapp folder のdefaultroot をjbossWeb と書き換えて「終了」
Base packageはパッケージ規約が決まってから修整するとして、今回は修整しない。
OK
eclipseのパッケージエクスプローラのjbossプロジェクトのjbossWebを右クリックし、
Lomboz J2EE > Deploy Module を選択。
コンソールにメッセージが出てくる。
eclipseのパッケージエクスプローラのjbossプロジェクトのjbossWebを右クリックし、
Lomboz J2EE > Run Server を選択。
コンソールにメッセージが出てくる。
http://localhost:8082/jbossWeb/ にブラウザでアクセスする。
Lomboz J2EE > Show in Browserでもアクセスできる。
DBへのコネクションプーリングを実現するデータソースの設定をする。
LAN環境にOracleとPostgresのサーバーが動いている前提。
Webではこちらから入手。
http://otn.oracle.co.jp/software/products/oracle9i/index.html
http://www.postgresql.org/ftp/binary/v8.0/win32/
ここではPostgres8がlocalhostで動いていて、DB名はtemplate1、ユーザ名postgres、パスワードpasswordとする。
Oracleについては、localhost、DB名orcl,ユーザscott,パスワードpasswordとする。
Oracle9,10であればclasses12.jar(Oracle9iの場合 C:\oracle\ora92\jdbc\lib 、
Oracle10の場合 C:\oracle\product\10.1.0\Db_1\jdbc\lib にある)
をsample/sampleWeb/WEB-INF/lib にコピーする。
Postgres8であればpostgresql-8.0.309.jdbc3.jar (C:\Program Files\PostgreSQL\8.0\jdbcにある)
をsample/sampleWeb/WEB-INF/lib にコピーする。
jbossWebを右クリックし、Lomboz J2EEで Add WEB-INF/lib jars to classpath を選択する。
上の2つのjarを、
C:\java\jboss-3.2.5\server\default\lib
にコピーする。
C:\java\jboss-3.2.5\server\default\deploy に以下のような内容のoracle-ds.xmlを作成する。
http://www5.plala.or.jp/shirokaze/java/oracle-ds.xml
同様に、postgres-ds.xmlを作成する。
http://www5.plala.or.jp/shirokaze/java/postgres-ds.xml
jbossWeb/jndi.jsp を以下の内容で作成する。
http://www5.plala.or.jp/shirokaze/java/jndi.jsp.txt
sampleプロジェクトをデプロイして、サーバーを再起動してブラウザで見ると以下のように出る。
データソースが取得できれば、Jakarta-dbUtilsが使えるし、自分でJDBCを駆使してDBアクセスもできる。
またTomcatなどのコンテナがない環境で、DBアクセスするプログラムの開発をするために、
コンテナが無いとプロパティファイルから接続情報を取得してJNDIを経由しないでデータソースを
作成するクラスも作成すると便利である。
OracleDataSourceManager
PostgresDataSourcemanager
という名前で作成してある。以下のソースにあるように、catalina_baseシステムプロパティからコンテナを判別する。
/* コンテナの判別 */ static { String catalina_base = System.getProperty("catalina.base"); if(catalina_base != null && !catalina_base.equals("")) { String base = catalina_base.toLowerCase(); if(base.indexOf("tomcat") != -1) { container_flag = 1; } else if(base.indexOf("jboss") != -1) { container_flag = 2; } } }
以下の内容のsql.jsp をjndi.jspと同様の手順でjbossWebに作成する。
http://www5.plala.or.jp/shirokaze/java/sql.jsp.txt
strutsのtablibを用いていないが、これは初心者への説明のためであり、
通常はbean:write などのtaglibを用いる。
以下の内容の style.css もjspと同様に作成する。
TABLE {border:solid 0.5px gray;
border-collapse:collapse;
background:black;
}
TH { border: solid 1px darkblue;
background:yellow}
TD {border: solid 1px darkred;
background:white; }
デプロイと再起動して実行すると以下のようになる。
http://localhost:8082/jbossWeb/sql.jsp
これをStrutsのActionで作ってみる。入力JSPと結果JSPをつなぐのがActionである。
jbossプロジェクトで、新規>その他
East Struts> Easy Action associed with a form を選択して「次へ」
Use case にsql と入力、 Form properties 右のAdd…を押す。
Nameにsqlを入力して、「OK]
「終了」。他にあれば入力し最後に「終了」を押す。
「次へ」
「次へ」
「終了」
「終了」
com.youcompany.struts.action.SqlAction.java
com.youcompany.struts.action.SqlForm.java
tomcatWeb.form/sql.java
ができており、config.xmlが変更されている。
SqlForm.java のvalidateメソッドがUnsupportedException を投げて実装していないことを表しているので、
public ActionErrors validate( ActionMapping mapping, HttpServletRequest request) { // Perform validator framework validations ActionErrors errors = super.validate(mapping, request); return errors; } と何もチェックしないように修整しておく。チェックする場合は、チェック処理を実装する。
SqlAction.java のexecuteメソッドを以下のように実装する。Inport文は、前記のsql.jspを参考にされたい。 public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { SqlForm sqlForm = (SqlForm) form; String sql = sqlForm.getSql(); if(sql == null || sql.equals("")) { sql = "select * from pg_tables"; } DataSource ds = PostgresDataSourceManager.getDataSource(); QueryRunner qr = new QueryRunner(ds); ResultSetHandler rsh = new MapListHandler(); List list = (List)qr.query(sql, rsh); request.setAttribute("result", list); return mapping.findForward("success"); }
著者:城風敏彦
Java道場に戻る。