- PR -

sql:setDataSourceの例外の捕捉方法

1
投稿者投稿内容
ぶち
会議室デビュー日: 2005/08/31
投稿数: 5
投稿日時: 2007-04-19 01:18
Tomcat5.5.20+mySQL5.0+JSTL1.1.2の環境下で,sqlライブラリにある setDataSource タグの使い方についてお尋ねします。
setDataSourceタグで,DBのURLが違っていたり,ユーザー名/パスワードが間違っていたら,接続に失敗して例外が発生するか,var属性で指定した接続オブジェクトの変数が空になるか,どちらかだと思っていたのですが,どうもどちらでもないようです。「接続が確立できなかった」ことをアプリケーション側で知る方法はないのでしょうか?ご存知の方がいらっしゃったら,どうかご教示ください。
----- (login.jsp)
<%@ page language="java" contentType="text/html; charset=Shift_JIS"
pageEncoding="Shift_JIS"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
</head>
<body>
<FORM action="login.jsp" method="POST">
<TABLE border=0>
<TR><TD>接続先DBサーバ名:</TD>
<TD><INPUT type="text" name="dbServer" value="${param.dbServer}"></TD></TR>
<TR><TD>ログイン名:</TD>
<TD><INPUT type="text" name="dbName" value="${param.dbName}"></TD></TR>
<TR><TD>パスワード:</TD>
<TD><INPUT type="password" name="dbPass" value="${param.dbPass}"></TD></TR>
<TR><TD></TD>
<TD align="right"><INPUT type="submit" name="login" value="ログイン"></TD></TR>
</TABLE>
</FORM>
<c:if test="${!(empty param.login)}">
<sql:setDataSource var="conn" user="${param.dbName}"
password="${param.dbPass}" driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://${param.dbServer}/${param.dbName}" />
<c:choose>
<c:when test="${!(empty conn)}">
<!-- 明らかに接続できないサーバー名やログイン名を入れても,connは空にならない -->
<jsp:forward page="execSQL.jsp">
<jsp:param name="connCheck" value="${conn}"/>
</jsp:forward>
</c:when>
<c:otherwise>
<H3>データベースに接続できませんでした。</H3>
</c:otherwise>
</c:choose>
</c:if>
</body>
</html>
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2007-04-19 14:16
気になったのでドキュメントを当たって見ましたが…

http://java.sun.com/products/jsp/jstl/1.1/docs/tlddocs/sql/setDataSource.html

接続ができなかった際の挙動については言及が無いのですよね。
JSTLのカスタムタグのソースでも追いかけてみないと分からないかもしれません。
1

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