- PR -

JSTLのでDerby(Embedded)に接続できない

1
投稿者投稿内容
ぶち
会議室デビュー日: 2005/08/31
投稿数: 5
投稿日時: 2008-01-08 16:19
ぶちと申します。お世話になっております。
J2SE 1.5.0_13 (Mac OS X) + Tomcat 5.5.25 + JSTL 1.1.2 という環境で,Apache Derby 10.3.2.1の組み込み(Embedded)ドライバを使ったWebデータベースアプリケーションを作ろうとしていますが,<sql:setDataSource>でDerbyに接続する設定がうまくできずに困っております。

[やったこと]
1)アプリケーションフォルダを {TOMCAT_HOME}/webapps/derby/ とし,WEB-INF/lib の下に derby.jar と derbyLocale_ja_JP.jar を置いた。
2)DerbyにSQL文を投げるためのJSPファイル(sqltest.jsp)を1のフォルダに置いて,Tomcatを起動。
3)http://localhost:8080/derby/sqltest.jsp にアクセスして,SQL文を投入。
※JSTLのcoreおよびsqlライブラリ自体は,別のデータベース(MySQL)で正常に利用できることを確認しています。
※JNDIリソースによる接続設定(server.xmlへの記述)は使っていません(出来れば使いたくない)。

[状況]
<sql:query>および<sql:update>でSQL文を実行させようとすると,
javax.servlet.ServletException: DataSource が無効であるため、Connection を取得できません: "java.sql.SQLException: No suitable driver"
という例外が発生する。

[sqltest.jspのソースコード]
おおよそ下記の通りです。
-----
<body>
<form action="sqltest.jsp" method="post">
<textarea name="sql"></textarea>
<input type="submit" value="問い合わせ" onclick="this.name='query'">
<input type="submit" value="更新" onclick="this.name='update'">
</form>
<hr>
<sql:setDataSource var="ds"
driver="org.apache.derby.jdbc.EmbeddedDriver"
url="jdbc:derby:tcha238;create=true;upgrade=true"
/>
<%-- ↑derby.jarと同じ場所(WEB-INF/lib)にデータベースを作るつもりです --%>
<c:catch var="exception">
<c:choose>
<c:when test="${!empty param.query}">
<sql:query var="result" dataSource="${ds}">
${param.sql}
</sql:query>
(resultの内容を表示する:ここでは省略)
</c:when>
<c:when test="${!empty param.update}">
<sql:update var="result" dataSource="${ds}">
${param.sql}
</sql:update>
(resultの内容を表示する:ここでは省略)
</c:when>
</c:choose>
</c:catch>
<h3>${exception}</h3>
</body>
-----
setDataSourceのurlを絶対パスにする等いろいろ変えてみても変化がなく,困っています。
何かすごくしょーもないところで間違っているような気もするのですが…。
ちなみに,同じマシンで Eclipse3.2.2+WTP1.5 のデータベース・エクスプローラを使って上記のDerbyに接続してみたところ,きちんと接続できて,データベースの作成やSQL文の投入もうまくいきました。
どなたかご助言いただける方がいらっしゃったら,どうかお助けください。よろしくお願いいたします。
1

スキルアップ/キャリアアップ(JOB@IT)