WTP&Tomcatのデータソースの設定
なんか、そこらじゅうでデータソースのlookupに失敗するってのを聞くので、試してみる。
ついでに、WTPをさわってみる。そろそろ慣れとかないと。
環境
Tomcatが5.0の場合は、Resourceのパラメータへの指定方法が違ってるので、
参考にならないはず。
あと、WTPは直感オンリーで触っていくので、間違ってても知らん。
サンプルプロジェクトの作成
Tomcatのデータソースの指定方法は(知ってる限りで)3種類あるけど、
ベーシックなserver.xmlへの指定でやってみる。
で、まずはプロジェクトの作成から。久しぶりにServletを1から作成してみる。
なつかしひ。
プロジェクトを作成しようとすると、Web→動的Webプロジェクトなんてのがあるので、
これて行ってみる。名前は適当。サーバもそのときに設定する。
あとはデフォルトのまんま。
作成すると、J2EEパースペクティブなるものに出会える。
サーバの作成
プロジェクト作成時に新規サーバで指定したのに、それがサーバのとこに出てこない。
仕方ないので、手動で作成する。
サーバー(サーバじゃないところがミソ)のとこで新規作成→その他とする。
ウィンドウでサーバー→サーバーを選択してTomcat5.5用のサーバを設定する。
んで、サンプルプロジェクトを追加して終了する。
よくわからないけど、これでいいっぽい。
サーバを作成すると、サーバの情報(ホームがどこだとか)が見れないんだけど、
こんなもんなのかね?
ServletやらJSPやらの作成
久しぶりのServletの作成。
別に必要ないけど、無駄にJSP→Servlet→JSPとやって、
Servlet内でデータソースが取得できるかを試す。
Servletも、ウィザードに従ってくと簡単にできる。
InitParameterまで指定できるなんて、ちょい感激。
できたのは、こんなの(データソースの部分はあとで)。
JSPはどーでもいいので省略。
public class TestServlet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {public TestServlet() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String next = getInitParameter("next");
request.getRequestDispatcher(next).forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
server.xmlの設定
ここからが本題。
server.xmlにデータソースを設定する。
まずはserver.xmlだけど、WTPは直でTomcatを動かすのではなく、webappをコピーするとか
なんたらかんたら・・・と聞いたことがあるので、インストールしたTomcatのconf/server.xmlを
いじっても有効なのかどうか、まったくわからん。
と思ってたら、ワークスペースに作成したサーバーの中に、server.xmlがあるじゃん。
こいつでいけると勝手に確信し、編集する。
データソースはマニュアル通りに要素を追加するだけ。
今回はHSQLDBを使うので、このようになった。
<Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="-1"
username="sa" password="" driverClassName="org.hsqldb.jdbcDriver"
url="jdbc:hsqldb:hsql://localhost" />
Connection取得処理の追加
設定は終わったので、Servletにデータソースとそのコネクションを取得する処理を追加する。
といっても↓のメソッドを追加して、コールした結果をsysoutするだけ。
# こんなコード、良い子はマネをしちゃいかん。
private Connection getConnection() {
try {
InitialContext ic = new InitialContext();
DataSource ds = (DataSource) ic.lookup("java:comp/env/jdbc/TestDB");
return ds.getConnection();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
あとは、ドライバのjarファイルをどっかに入れるんだが・・・どこに置けばいいかわからん。
ワークスペースのサーバにはそれっぽいフォルダはないので、
とりあえず、Tomcatインストールディレクトリのcommon/libに置いてみる。