※ ChatGPTを利用し、要約された質問です(原文:TomcatのJDBC連携について)
TomcatのJDBC連携について
このQ&Aのポイント
TomcatのJDBC連携についてエラーが発生し解決策を探しています。
環境はWindows XP SP3、Eclipse3.6、apache-tomcat-5.5.29、mysql-essential-5.1.48です。
設定としてserver.xml、Tomcat 5.5/conf/Catalina/localhost/Test.xml、Webアプリケーションのweb.xmlに変更が加えられています。
TomcatのJDBC連携について
javax.servlet.ServletException: Cannot create JDBC driver of class '' for connect URL 'null'
というエラーが消えず、知恵をお貸しください。
他にも同様のケースについて調べては見たのですが解決しません。
■環境
Windows XP SP3
Eclipse3.6(Pleiades All in One 3.6.0.20100623)
apache-tomcat-5.5.29
mysql-essential-5.1.48
■設定
■server.xml に下記を追加
<Context docBase="Test" path="/test" reloadable="true" source="org.eclipse.jst.j2ee.server:Test">
</Context>
■Tomcat 5.5/conf/Catalina/localhost/Test.xml に下記を記載
<Context docBase="${catalina.home}/server/webapps/test"
privileged="true" antiResourceLocking="false" antiJARLocking="false">
<Resource name="jdbc/MySQL_JDBC"
auth="Container"
type="javax.sql.DataSource"
factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=sjis"
username="**"
password="**"
maxActive="20"
maxIdle="30"
maxWait="1800"/>
</Context>
■Webアプリケーション配下の web.xmlに下記を追加
<resource-ref>
<res-ref-name>jdbc/MySQL_JDBC</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
■JSPソースに下記を記載
jdbc.jsp
<%
InitialContext initCon = new InitialContext();
DataSource ds = (DataSource) initCon.lookup("java:comp/env/jdbc/MySQL_JDBC");
Connection con = ds.getConnection();
Statement stmt = con.createStatement();
ResultSet result = stmt.executeQuery("select * from mytable;");
while (result.next()) {
表示処理
}
con.close();
initCon.close();
%>
別途作成した下記JSPではデータ取得はできています。
<%
Class.forName("com.mysql.jdbc.Driver");
Connection conn=DriverManager.getConnection("jdbc:mysql://localhost/test?" +
"user=tester&password=tester&useUnicode=true&characterEncoding=Shift_JIS");
Statement st=conn.createStatement();
ResultSet res = st.executeQuery("select * from mytable");