このページでは, Eclipse を使い, Java サーブレットプログラムを作る手順を,見本となるプログラムと図解で説明する. ここでの Java サーブレットプログラムは,JDBC を使って,リレーショナルデータベースを操作する.
⇒ SQL とは,リレーショナルデータベースを扱うためのプログラミング言語です. Java と SQL を組み合わせて動かすために,JDBCを使う. このとき,Java のプログラムが,SQL のプログラムをリレーショナルデータベースに送りつけて,結果を待つ,という振る舞いになる. 変数を使って、Java と SQL との間のデータのやり取りを行う.
⇒ そのために,Tomcat を使う.
【補足説明】
下記の 2つのサーバは別物です. 2つを同時に動かすことはできません(ポートを奪い合うことができないので).一方を動かすときは,もう一方を止めることになる.
Eclipse では,Eclipse 内部の tomcat サーバが動き, Java サーブレットの動作テストなどに使う.
Eclipse とは無関係の tomcat サーバ(C:\tomcat55\bin\tomcat5w.exe 等で起動する Tomcat サーバのこと).当然, 公開 tomcat サーバが管理するディレクトリも Eclipse とは独立している.
なお,「Eclipse 内部の tomcat サーバ」を使えるようには, Eclipse で「新規サーバの定義」を行う必要がある.これは,1回行うだけで十分です.
C:\Program Files\Java\jdk1.6.0_11 のようなディレクトリがあれば,インストール済み.
インストールしていないときは,下記の Web ページを参考に,インストールを済ませておくこと.
前もって,Tomcat インストールディレクトリを調べておいてください.
前もって, Spring 2 インストールディレクトリを調べておいてください.このページでは,次のように書く.
データベースシステムに関する項目
データベースシステムに関するいくつかの設定内容があります. このページでは,設定内容を下記のように書くので, 違う設定にする場合には, この Web ページの説明を読み替えてください.
データベース名と, PostgreSQL にログインするために使うデータベース・一般ユーザのアカウント(ユーザ名とパスワード)を決めておくこと. このページでは,次のように書く.
使用するデータベースの名前のことを,「データベース名」と呼ぶことにする. データベース名は,自由に決めてよいが,半角文字(つまり英字と英記号)を使い,スペースを含まないこと, すでに存在するデータベースを使ってもいい(つまり,既存のデータベースのデータベース名を使う)し,新しいデータベースを作ることにしてもいいです.
データベース名 testdb の権限を持ったユーザにして下さい.(そうで無いとエラーが出ます).
この Web ページの手順を試すために,新しいデータベースと,新しい一般ユーザのアカウントを作りたいという場合は, phpPgAdmin などを使ってください.
psql のようなコマンドライン・クライアントを使う場合には,次のようになります(エンコーディングについて調べきっていません.まだ不完全です.参考情報ということでご理解下さい).
CREATE ROLE testuser LOGIN PASSWORD 'hoge$#34hoge5' NOINHERIT VALID UNTIL 'infinity'; CREATE DATABASE testdb WITH ENCODING='UTF8' OWNER=testuser;
パスワードは,説明を簡単にするために hoge$#34hoge5 と書いているが,実際には,これとは違うものを,必ず適切に設定してください.
PostgreSQL の利用 を使うために,次の設定を行うことになるので,確認しておく.
PostgreSQL 用 JDBC の Java ファイルが存在するディレクトリ C:\Program Files\psqlJDBC を探すとすぐに見つかります.
データベース名と,MySQL にログインするために使うデータベース・一般ユーザのアカウント(ユーザ名とパスワード)を, このページでは,次のように書く.
使用するデータベースの名前のことを,「データベース名」と呼ぶことにする. データベース名は,自由に決めてよいが,半角文字(つまり英字と英記号)を使い,スペースを含まないこと, すでに存在するデータベースを使ってもいい(つまり,既存のデータベースのデータベース名を使う)し,新しいデータベースを作ることにしてもいいです.
データベース名 testdb の権限を持ったユーザにして下さい.(そうで無いとエラーが出ます).
この Web ページの手順を試すために,新しいデータベースと,新しい一般ユーザのアカウントを作りたいという場合は, MySQL コマンドライン・クライアントの主な機能 や MySQL GUI Tools などを使い,次のコマンドを実行してください.
* それぞれのツールの操作法(起動法,ログインの方法など)は,MySQL コマンドライン・クライアントの主な機能 や MySQL GUI Tools の Web ページを見てください.
create database 'testdb' default character set cp932 collate cp932_japanese_ci; create user testuser identified by 'hoge$#34hoge5'; grant all on testdb.* to 'testuser';
パスワードは,説明を簡単にするために hoge$#34hoge5 と書いているが,実際には,これとは違うものを,必ず適切に設定してください.
MySQL の利用 を使うために,次の設定を行うことになるので,確認しておく.
JDBC で MySQL を使うために必要になるので、 https://dev.mysql.com/downloads/connector/ から Connector/J をダウンロードして、解凍しておく(展開(解凍)するディレクトリは何でもよい。この資料では上記のディレクトリにあるものとして説明する)。
ダウンロードの手順は, 「MySQL コネクタ (Connector) Java のダウンロード」の Web ページで説明している.
次の設定を確認しておく.
Java DB のデータベースファイルが置かれるディレクトリのことです. これは自由に決めてよいが,半角文字(つまり英字と英記号)を使い,スペースを含まないこと, データベース名と Java DB データベースディレクトリとは別ものです.混同しないこと.
なお,Java DB データベースディレクトリは,「dbdir」 のように,相対パス形式で書く場合と,「C:\hoge\dbdir」のように,絶対パス形式で書く場合があります. 今回は,相対パス形式で書く.
データベース・ロケーションとは, データベースファイルが置かれる実際のディレクトリのことです.
Java DB データベースディレクトリを,「dbdir」のような相対パス形式にする場合, データベース・ロケーションは,Eclipse インストールディレクトリである C:\Program Files\eclipse3.5\eclipse のサブディレクトリになる. (一方で,絶対パス形式の場合は,データベース・ロケーションは,Eclipse インストールディレクトリと無関係になります). このデータベース・ロケーションは, Eclipse インストールディレクトリと,Java DB データベースディレクトリ(相対)を連結したものになる.
Java DB (Derby) インストールのときに,Eclipse プラグインもインストールしますが,その中に Java DB 用 JDBC の jar ファイルが含まれています.
テスト用データベースとして,下記の SQL コマンドで,テーブル commodity が作られ,データが入っていること.
create table commodity ( id integer primary key not null, name varchar(32) not null, price integer ); insert into commodity values( 1, 'apple', 50 ); insert into commodity values( 2, 'orange', 20 ); insert into commodity values( 3, 'strawberry', 100 ); insert into commodity values( 4, 'watermelon', 150 ); insert into commodity values( 5, 'melon', 200 ); insert into commodity values( 6, 'banana', 100 ); select * from commodity;
以下,Eclipse を使う. プロジェクトの作成,クラスの定義と実行という一連の操作を,図解で説明する.
Java サーブレット・プログラムを動かすために,Eclipse のプロジェクト等を作る. このページでは,Eclipse のプロジェクト名,Java パッケージ名,Java サーブレットのクラス名は次のように記述します. (すでに同じ名前のプロジェクトがある,といったときは,プロジェクト名を変えてください).
下記の手順で,動的 Web プロジェクトを新規に作成する.
「ウインドウ (Window)」→「ビューの表示 (Show View)」→「プロジェクト・エクスプローラ (Project Explorer)」 と操作する.
「ファイル」→「新規 (New)」→「プロジェクト (Project)」
または,プロジェクト・エクスプローラ内で,右クリック→「新規 (New)」→「プロジェクト (Project)」
新規プロジェクトのウインドウが開くので, 「Web」を展開する.
展開した「Web」の下にある 「動的 Webプロジェクト (Dynamic Web Project)」を選び, 「次へ」をクリック.
設定用のウインドウが開くので,下記の設定を行う. 設定が終わったら,「次へ」をクリック.
プロジェクト名は,好きな名前でよいが,スペースや全角文字は避けること. ここでは,プロジェクト名を,「hoge」と付けることにする.
「デフォルトの使用 (Use default)」にチェックを入れたままで良い.
他のもの(例えば「なし」)になっていたら,「Apache Tomcat v5.5」に変更しておく
* 変更のとき,「なし」だけしか無くて,「Apache Tomcat v5.5」が候補として表示されない場合は, 「Eclipse を使用しての Java サーブレット・プログラムの開発」の Web ページに記載の「新規サーバの定義」を行うこと.
「次へ」をクリック.
* このウインドウが開かないことがある.気にしなくてよい.
「終了」をクリック.
* このウインドウが開かないことがある.気にしなくてよい.
プロジェクト・エクスプローラで,いま作成した動的 Web プロジェクト hoge が表示されていることを確認する.
Java DB (Derby) を使うときに限り,プロジェクトへのApache Derby ネーチャーの追加 と,Java DB (Derby) サーバの開始を行う. これは, Java DB (Derby) を使うための追加的な設定です.
「Apache Derby」が候補として現れないときは, Java DB (Derby) インストール の手順に従って,インストールと設定を行う.
ポート1527 で Derby サーバが起動します.
「Derby ネットワーク・サーバの開始」が選べない状態になっているときは, すでに開始済みなので,この手順は不要.
リレーショナルデータベース・ソフトウェアとして,Java DB (Derby) 以外を使う場合は,上記は不要です.
今度は,Spring JDBC を使うための設定です.
プロジェクトへの Spring プロジェクト・ネーチャーの追加を,次の操作で行う.
「Spring ツール (Spring Tools)」が候補として現れないときは, Eclipse の SpringIDE プラグイン の手順に従って,インストールを行う.
プロジェクト名 HelloWorld の左横の 「+」をクリックして展開すると, 「Spring Elements」が増えている. (Spring プロジェクト・ネーチャーの追加ができたことが分かる).
次の2種類の jar ファイルを,今度は,WebContent\WEB-INF\lib にインポートします.
Spring 2 を Java サーブレット・プログラムから使えるようにするために, Spring 2 に関する 2 つの jar ファイルをインポートします. 次の 2 つです.
C:\Program Files\Java\spring-framework-2.5\dist\spring.jar C:\Program Files\Java\spring-framework-2.5\lib\jakarta-commons\commons-logging.jar
JDBC を使いリレーショナルデータベース・ソフトウェアと接続できるようにするため,リレーショナルデータベース・ソフトウェアに付属の JDBC ファイルをインポートする必要がある. (JDBC ファイルは,使用するリレーショナルデータベース・ソフトウェアごとに違う,ということ).
プロジェクトの WebContent\WEB-INF\lib へのインポートを行う手順を下記に示す.
プロジェクト・エクスプローラで, プロジェクト名 hoge の左横の「+」をクリックして展開すると,「Java リソース; src」などが現れる(その他,いろいろ,プロジェクトの構成物が現れる).
* すでに展開済みのときは,この手順は不要.
WebContent の左横の「+」をクリックして展開する.
* すでに展開済みのときは,この手順は不要.
WEB-INF の左横の「+」をクリックして展開する.
* すでに展開済みのときは,この手順は不要.
「一般」→「ファイルシステム」と操作した後, 「次へ」をクリック.
インポートの手順は下記の通りである.
インポートするファイルが複数あるので, lib を右クリックし,「インポート」を選ぶという手順に戻って,やり直す必要がある. (つまり,ファイルの数だけ,インポートの操作を繰り返す). 上にも書きましたが,インポートすべきファイルは,次の2種類です.
C:\Program Files\Java\spring-framework-2.5\dist\spring.jar C:\Program Files\Java\spring-framework-2.5\lib\jakarta-commons\commons-logging.jar
上記のファイルが現れないときは,Spring 2 インストール の手順に従ってインストールを行う.
C:\Program Files\psqlJDBC\postgresql-8.3-603.jdbc4.jar をインポート
C:\Program Files\Java\mysql-connector-java-5.1.6\mysql-connector-java-5.1.6-bin.jar をインポート
JDBC の jar ファイルが無い,というときは,MySQL Connector Java のダウンロードの Web ページを見てください.
C:Program Files\eclipse3.5\eclipse\plugins\org.apache.derby.core_10.5.1\derby.jar をインポート
インポートの結果,ファイルが増えたことを確認したいときは,プロジェクト・エクスプローラで,「lib」を展開する.
Eclipse のプロジェクト・エクスプローラを使って, Java パッケージを作成します. Java パッケージ名には hoge.hoge.com のようなドメイン名を付ける習慣があることに注意してください. このページでは,作成するJava パッケージ名は,hoge.hoge.com と書く. (Java パッケージ名を変えるときは,読み替えてください).
「ウインドウ」→「ビューの表示」→「プロジェクト・エクスプローラ」 と操作する.
Java パッケージの作成,クラスの作成などの作業は,プロジェクト・エクスプローラで行う.
プロジェクト・エクスプローラに,プロジェクト一覧が表示されているはずです. Java パッケージを新規作成したいプロジェクト名 hoge を右クリックして, 「新規」→「パッケージ」と操作する.
「Java パッケージ (Java package)」の名前として,Java パッケージ名 hoge.hoge.comを記入する.
その後,「終了」をクリック.
プロジェクト・エクスプローラにおいて, Java パッケージ hoge.hoge.com が増えていることを確認する.
* プロジェクト・エクスプローラで, Java パッケージ名 hoge.hoge.comが表示されていないときは, プロジェクト hoge の左横の「+」をクリックして展開した後, 下の 「Java リソース; src」の左横の「+」をクリックして展開して下さい.
プロジェクト・エクスプローラにおいて, サーブレットを作成したいJava パッケージ名 hoge.hoge.com を右クリック.
* プロジェクト・エクスプローラで, Java パッケージ名 hoge.hoge.comが表示されていないときは, プロジェクト名の下の 「Java リソース; src」を展開して下さい.
サーブレットを作成したいので, 「Web」→「サーブレット (Servlet)」と操作し, 「次へ」をクリックします.
新規に作成するサーブレットについて,Java パッケージ名,クラス名等を入力できるウインドウが開くので,設定を行う.
* 「hoge.hoge.com」になっていなければ修正すること.
「次へ」をクリックします.
「終了」をクリックします.
プロジェクト・エクスプローラで, Java パッケージ名 hoge.hoge.com の左横の「+」をクリックして展開すると, クラスファイル HelloWorld.java が現れるはず.確認しておく.
プロジェクト・エクスプローラで, プロジェクト名 hoge の左横の「+」をクリックして展開すると,「Java リソース; src」などが現れる(その他,いろいろ,プロジェクトの構成物が現れる).
* すでに展開済みのときは,この手順は不要.
プロジェクト・エクスプローラで, 「Java リソース; src」の左横の「+」をクリックして展開すると,Java パッケージ一覧などが現れる.
* すでに展開済みのときは,この手順は不要.
プロジェクトエクスプローラで, 先ほど作成したJava パッケージ名 hoge.hoge.com の左横の「+」をクリックすると, クラスファイル一覧が現れる.
* すでに展開済みのときは,この手順は不要.
HelloWorld クラスを定義したいので, プロジェクト・エクスプローラの クラスファイル一覧の中から, 「HelloWorld.java」をダブルクリックします. すると,エディタが開きます.
このように,Eclipse のプロジェクト・エクスプローラで,定義したいクラスの「クラス名.java」 をダブルクリックすると,エディタが開くことになっています.
* なお,別のクラスを追加したいときは, Java パッケージ名を右クリックして「新規」→「クラス」です.
下記のクラス定義をカットアンドペーストしてみて下さい(テスト用に作ったクラス定義です). (Java パッケージ名を「hoge.hoge.com」と書いているので,Java パッケージ名を別の名前にしている場合には,適切に読み替えてください).
----------------------ここから--------------------- package hoge.hoge.com; import java.io.*; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.sql.*; import java.text.DecimalFormat; import java.util.Properties; /** * Servlet implementation class for Servlet: HelloWorld * */ public class HelloWorld extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet { // 決まり文句 private static String PostgresJDBCDriver = "org.postgresql.Driver"; private static String MySQLJDBCDriver = "org.gjt.mm.mysql.Driver"; private static String JavaDBJDBCDriver = "org.apache.derby.jdbc.EmbeddedDriver"; private static String HiRDBDriver = "JP.co.Hitachi.soft.HiRDB.JDBC.PrdbDriver"; // 下記の変数を正しく設定する // DBNAME, USER, PASS, JDBCDriver, DBURL // PostgreSQL 用デフォルト // Eclipse で PostgreSQL を使いたいときは,次の手順で,WebContent\WEB-INF\lib にインポートしておく. // WebContent\WEB-INF\lib を右クリック.「一般」→「ファイルシステム」 // その後インポートすべきファイルとして,次のファイルを指定 // C:\Program Files\psqlJDBC\postgresql-8.3-603.jdbc4.jar final private static String DBNAME = "testdb"; // Database Name final private static String USER = "testuser"; // user name for DB. final private static String PASS = "hoge$#34hoge5"; // password for DB. final private static String JDBCDriver = PostgresJDBCDriver; final private static String DBURL = "jdbc:postgresql://localhost/" + DBNAME; // MySQL 用デフォルト // Eclipse で MySQL を使いたいときは,次の手順で,WebContent\WEB-INF\lib にインポートしておく. // https://dev.mysql.com/downloads/connector/ から,Connector/J をダウンロード // c:\Program Files\Java\mysql-connector-java-5.1.6\ に置く. // WebContent\WEB-INF\lib を右クリック.「一般」→「ファイルシステム」 // その後インポートすべきファイルとして,次のファイルを指定 // c:\Program Files\Java\mysql-connector-java-5.1.6\mysql-connector-java-5.1.6-bin.jar を追加 // final private static String DBNAME = "testdb"; // Database Name // final private static String USER = "testuser"; // user name for DB. // final private static String PASS = "hoge$#34hoge5"; // password for DB. // final private static String JDBCDriver = MySQLJDBCDriver; // final private static String DBURL = "jdbc:mysql://localhost/" + DBNAME; // JavaDB用デフォルト // final private static String DBNAME = "dbdir;create=true"; // Java DB の場合は,Java DB データベースディレクトリ(相対) // final private static String DBDIR = "C:\\Program Files\\eclipse3.5\\eclipse\\"; // データベースが存在するディレクトリ // DTP, DBViewer などを使ってデータベースを生成した場合は Eclipse インストールディレクトリ // ij などを使ってデータベースを生成した場合は,c:\\<ワークスペース>\\<プロジェクト名> // final private static String USER = ""; // user name for DB. Java DB (Derby) の場合は空 // final private static String PASS = ""; // password for DB. Java DB (Derby) の場合は空 // final private static String JDBCDriver = JavaDBJDBCDriver; // final private static String DBURL = "jdbc:derby:" + DBDIR + DBNAME; // HiRDB用デフォルト // Eclipse で HiRDB を使いたいときは,次の手順で,WebContent\WEB-INF\lib にインポートしておく. // WebContent\WEB-INF\lib を右クリック.「一般」→「ファイルシステム」 // その後インポートすべきファイルとして,次のファイルを指定 // C:\win32app\hitachi\hirdb_s\CLIENT\UTL\pdjdbc.jar // ユーザ名,パスワード: C:/windows/HiRDB.iniのPDUSER の値を調べておく // final private static String USER = "ユーザ名"; // user name for HiRDB. see C:/windows/HiRDB.ini // final private static String PASS = "パスワード"; // password for HiRDB. see C:/windows/HiRDB.ini // final private static String JDBCDriver = HiRDBDriver; // final private static String HiRDBServerName = "hitachi-664320D"; // HiRDB サーバのコンピュータ名 // final private static String DBURL = "jdbc:hitachi:PrdbDrive://DBID=22200,DBHOST=" + HiRDBServerName + ",ENCODELANG=MS932"; // 'DBID=22200' is in "conf\pdsys"; // この先は決まり文句 private static Statement stmt = null; /* (non-Java-doc) * @see javax.servlet.http.HttpServlet#HttpServlet() */ public HelloWorld() { super(); } /* (non-Java-doc) * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Connection try { connect( USER, PASS ); // 実行するSQL文と,出力フォーマットを記述する ResultSet rs = execute( "select * from commodity" );; DecimalFormat dformat = new DecimalFormat ("#,###円"); /* HTTP レスポンス */ response.setContentType("text/html;charset=iso-2022-jp"); PrintWriter out = response.getWriter(); out.println("<HTML>"); out.println("<p>"); out.println("Database"); out.println("</HTML>"); while(rs.next()){ int t = rs.getInt("type"); String n = rs.getString("name"); int p = rs.getInt("price"); out.println("<p>" + t + " " + n + " " + dformat.format( p ) ); } rs.close(); stmt.close(); disconnect(); } catch (Exception e) { // Error Message and Error Code System.out.print(e.toString()); if (e instanceof SQLException) { System.out.println("Error Code:" + ((SQLException)e).getErrorCode()); } // Print Stack Trace e.printStackTrace(); if (conn != null) { try { conn.rollback(); conn.close(); } catch (SQLException e1) { e1.printStackTrace(); } } } } /* * Service Functions * ここから先は,決まり文句を関数化したもの. */ static Connection conn = null; // database open public static void connect( String user, String pass ) throws SQLException, ClassNotFoundException { try { // JDBC Driver Loading Class.forName(JDBCDriver).newInstance(); System.setProperty("jdbc.driver",JDBCDriver); } catch (Exception e) { // Error Message and Error Code System.out.print(e.toString()); if (e instanceof SQLException) { System.out.println("Error Code:" + ((SQLException)e).getErrorCode()); } // Print Stack Trace e.printStackTrace(); } try { // Connection if ( user.isEmpty() && pass.isEmpty() ) { conn = DriverManager.getConnection(DBURL); } else { Properties prop = new Properties(); prop.put("user", user); prop.put("password", pass); conn = DriverManager.getConnection(DBURL,prop); } } catch (Exception e) { // Error Message and Error Code System.out.print(e.toString()); if (e instanceof SQLException) { System.out.println("Error Code:" + ((SQLException)e).getErrorCode()); } // Print Stack Trace e.printStackTrace(); if (conn != null) { conn.rollback(); conn.close(); } } } // database close public static void disconnect() throws SQLException { try { conn.close(); } catch (Exception e) { // Error Message and Error Code System.out.print(e.toString()); if (e instanceof SQLException) { System.out.println("Error Code:" + ((SQLException)e).getErrorCode()); } // Print Stack Trace e.printStackTrace(); if (conn != null) { conn.rollback(); conn.close(); } } } public static ResultSet execute( String sql ) throws SQLException { try { conn.setReadOnly(true); // Execute 'commit' Automatically after each SQL // conn.setAutoCommit(true); // Query Exection stmt = conn.createStatement(); return stmt.executeQuery(sql); } catch (Exception e) { // Error Message and Error Code System.out.print(e.toString()); if (e instanceof SQLException) { System.out.println("Error Code:" + ((SQLException)e).getErrorCode()); } // Print Stack Trace e.printStackTrace(); if (conn != null) { conn.rollback(); conn.close(); } return null; } } /* (non-Java-doc) * @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub } } ----------------------ここまで----------------------
「ファイル」→「保管」または CTRL+S で保存される. 保存時にコンパイルされる
コンパイル時のエラーや警告があれば, Eclipse 内の問題・ビューに表示されるので確認する.
Eclipse のプロジェクト・エクスプローラを使用して,上記で作ったJava サーブレットのプログラム をテスト実行してみる.
Eclipse のプロジェクト・エクスプローラで,実行したいクラス名.java (つまり HelloWorld.java) を右クリック
ウインドウが開くので, 「ローカルホストの Tomcat v5.5 サーバ」が選択されていることを確認の後,「次へ (Next)」をクリック.
「終了」をクリック.
* 下記のエラーが出て,Eclipse 内部の Tomcat サーバが起動しない場合には,C:\tomcat55\bin\tomcat5w.exe を使い,公開 Tomcat サーバを停止する
* すでに,C:\tomcat55\bin\tomcat5w.exe などを使って,「公開 Tomcat サーバを稼働させている」ときは, Eclipse 内部の Tomcat サーバが起動しない(ポートを奪い合うので)ので, C:\tomcat55\bin\tomcat5w.exe を使って, 公開 Tomcat サーバを停止させて下さい.
コンソール・ビューに表示される.
Eclipse の 組み込み Web ブラウザ (Internal Web ブラウザ)が開き,そこに実行結果が出る. 実行結果は次のようになる.
Database 1 apple 50円 2 orange 20円 3 strawberry 100円 4 watermelon 150円 5 melon 200円 6 banana 100円
組み込みWeb ブラウザ内のアドレスバーの部分は,
http://localhost:8080/hoge/HelloWorld
のようになっていることを確認しておきます.(「hoge」の部分は,実際のプロジェクト名に読み替えて下さい).
原因としては,プログラム中に書かれたユーザ名,パスワード名,データベース名の記述ミスが考えられます.確認してください. あるいは,上記に書いた手順での「jar ファイルのインポート」が正しく行われていない(あるいは,この Web ページ自体のミス)可能性がある.
C:\tomcat55\bin\tomcat5w.exe を実行してみる. サーバが stop できる状態(STOP ボタンが有効になっている状態)になって いたら,「公開 Tomcat サーバを稼働させている」ということなので, エラーが出て当然. STOP ボタンを押して,公開 Tomcat サーバを停止し,もう1度,上記の操作を行う.
「Apache Derby」→「Stop Derby Network Server (Derby ネットワーク・サーバの停止)」と操作し,もう1度実行するとうまくいく場合がある.
Java サーブレット・プログラムのデバッグについては,「Eclipse を使用しての Java サーブレット・プログラム開発」の Web ページ を見てください.
Eclipse でエクスポートを行い、単体で動くようにします。
「Web」→「WARファイル」→「次へ」
Webモジュール:「derbydb」 宛先:「C:\tomcat55\webapps\derbydb.war」
混乱を防ぐために、エクスポートしたいプロジェクトの名前をそのまま付ける。
「ソースファイルのエクスポート」「既存ファイルを上書き」→必要ならチェック 「終了」で、エクスポートが実行される
apacheインストールディレクトリのconfフォルダ内 にあるworkers2.propertiesに以下の2行を追加
[uri:/derbydb/*] group=lb
直接(tomcat5w.exeから)Tomcatを実行し、Eclipseとは無関係にサーブレットが動くことを確認する。
http://localhost:8080/derbydb/HelloWorld
また、Apacheとの連携も従来どおり行える(別途、apache サーバを起動のこと)。 なお、WEB-INFなどの、サーブレット実行に必要なディレクトリは、実行時に作成される。
参考Webページ: http://allabout.co.jp/internet/java/closeup/CU20070119A/index4.htm
参考Webページ: http://www.atmarkit.co.jp/fjava/javafaq/jdbc/jdbc01.html
参考Webページ: https://d.hatena.ne.jp/benikujyaku/20070127 (現存しない)
http://www.itarchitect.jp/enterprise/-/30601-3.html (現存しない)