- PR -

Tomcat5.0.28とPostgreSQL8でDBCPでの値取得がうまくいかない

1
投稿者投稿内容
[I]
会議室デビュー日: 2005/03/04
投稿数: 9
お住まい・勤務地: Tokyo
投稿日時: 2005-03-04 16:53
お世話になります。

下記の環境にて、DBCPを使用したDB接続&値の取得表示を行っておりますが、うまく動作しません。

Tomcat 5.0.28
PostgreSQL 8.0
Struts 1.2.4
JRE 1.4.6
JSTL 1.1.2

-----------------------
DBCPの動作確認用にtest.jspを作り、
実行するとDBへの接続はするものの値を取ってきません。
初めてDBCPを利用するので、どうしたらよいのか全くわかりません。
同じような経験をされ、解決した方はどうすれば良いのか
ご教授していただけますと幸いです


----test.jsp----
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>

<html>
<head>
<title>test</title>
</head>
<body>
<sql:query var="rs" dataSource="jdbc/postgres">
SELECT member_id, member_name FROM member_master
</sql:query>

<c:forEach var="row" items="${rs.rows}">
<c:out value="${row.member_id}" /><br>
<c:out value="${row.member_name}" /><br>
</c:forEach>
</body>
</html>

----test.jsp(実行後)----
${row.member_id}
${row.member_name}

と表示されてしまいます。

DBCPの設定
----[TOMCAT_HOME]/conf/Catalina/localhost/Test.xml

<?xml version='1.0' encoding='utf-8'?>
<Context crossContext="true" debug="5" docBase="D:/test00" path="/test00" reloadable="true" workDir="D:\test00\work">
<Logger className="org.apache.catalina.logger.FileLogger" directory="logs" prefix="localhost_test00_log." suffix=".txt" timestamp="true"/>
<Resource name="jdbc/postgres" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/postgres">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>org.postgresql.Driver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:postgresql://localhost:5432/test</value>
</parameter>
<parameter>
<name>username</name>
<value>postgres</value>
</parameter>
<parameter>
<name>password</name>
<value>postgres</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>20</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>10</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>-1</value>
</parameter>
</ResourceParams>
</Context>




[ メッセージ編集済み 編集者: 未記入 編集日時 2005-03-04 16:55 ]
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-03-04 17:08
DBCPの問題ですか?それともJSTLの問題ですか?
ぱっと見たところDBCPの問題ではないように見受けられます。
・JSTLを使わず直にDataSourceからコネクションを取り出してクエリを投げたら動作するか
・DBCPを使わない場合に期待度通り動作するか
・そもそもデータベースを使わず変数に設定した値を使った場合期待通り動作するか
といった点からまず切り分けてみてはいかがでしょうか。

また、直接関係ないとおもいますが JRE 1.4.6 って?
#バージョンが変なのと、JRE ではく J2SDK(またはJDK)が必要です。

[ メッセージ編集済み 編集者: インギ 編集日時 2005-03-04 17:16 ]
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-03-04 17:18
失礼致しました、JSTLで直接クエリを投げているのですね。
>・そもそもデータベースを使わず変数に設定した値を使った場合期待通り動作するか
というのはちょっと的はずれでした。
まずは
>・JSTLを使わず直にDataSourceからコネクションを取り出してクエリを投げたら動作するか
からやるのがいいと思います。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2005-03-04 19:14
web.xmlに記述されているバージョンが2.4になっていないのでは。
EL式がそのまま出力されていますよね。
jsp-examples/WEB-INF/web.xmlを参考にweb.xmlの設定をしてみてはいかがでしょうか。
[I]
会議室デビュー日: 2005/03/04
投稿数: 9
お住まい・勤務地: Tokyo
投稿日時: 2005-03-04 22:05
皆様ありがとうございます。

>・JSTLを使わず直にDataSourceからコネクションを取り出してクエリを投げたら動作するかからやるのがいいと思います。

JSTLを使わずにクエリを投げたら動作しました。
JSTLが問題だったようです。

>web.xmlに記述されているバージョンが2.4になっていないのでは。
>EL式がそのまま出力されていますよね。
>jsp-examples/WEB-INF/web.xmlを参考にweb.xmlの設定をしてみてはいかがでしょうか。

web.xmlの記述を下記のように変更したらうまく動作しました。
皆様、有り難うございました。

-------変更前----
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/j2ee/dtds/web-app_2_3.dtd">
<web-app>


-------変更後----
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<web-app>

1

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