Apache Tomcat バージョン 7 を使用しているときに、ある状況に行き詰まりました。メモ帳で簡単な index.jsp ファイルを作成し、スクリプトレット タグ内に次の JDBC コードを記述しました。
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection c = DriverManager.getConnection("jdbc:odbc:testdsn");
out.println(c);
Statement stmt = c.createStatement();
ResultSet rs = stmt.executeQuery("select * from login");
while(rs.next())
{
out.println(rs.getString(1));
}
JSP ファイルを WEB-INF と並行して「test」という名前のフォルダー内に配置し、クラス フォルダーと web.xml を WEB-INF 内に配置しました。cmd を使用して war ファイルを作成し、Tomcat にデプロイしました。
index.jsp ファイルを実行しようとすると、データ ソース名が見つからず、デフォルト ドライバが指定されていないというエラーが表示されます。
このエラーが Java で発生する理由はわかっていますが、今回は解決できません。
問題は、必要な dsn を作成したにもかかわらず、データ ソース名が見つからないことを受け入れず、表示しないことです。
スタック トレースは次のとおりです。
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:455)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
根本的な原因
javax.servlet.ServletException: java.sql.SQLException: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:912)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:841)
org.apache.jsp.index_jsp._jspService(index_jsp.java:98)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)