eclipse/tomcat/mariaDBの接続設定について。
windows10環境eclipseでmariaDBに接続するためのjspファイルを作成しましたが、例外(HTTPステータス500)
が発生し接続ができない状況です。
単体操作でeclipseからmariaDB・eclipseからtomcatサーバへそれぞれ接続は出来ています。
①eclipseで作成した動的WEBプロジェクト内のWEB-INFのcontext.xmlの設定が間違えている。
②jspコードに記述しているmariaDBへのデータソース接続先が間違えている。
どれかだと考え試行錯誤していますが、どれも同様の例外発生します。
eclipse上でJSP/JSTLファイルからmariadb・tomcatを連携させたいです。
初心者で質問の内容も稚拙で申し訳ありませんが、ご教示よろしくお願いいたします。
発生している問題・エラー
タイプ 例外報告
メッセージ [/chap2/connect1.jsp] の処理中に行番号 [12] で例外が発生しました。
説明 サーバーは予期しない条件に遭遇しました。それはリクエストの実行を妨げます。
例外
org.apache.jasper.JasperException: [/chap2/connect1.jsp] の処理中に行番号 [12] で例外が発生しました。
9: <body>
10: <%
11: Context context=new InitialContext();
12: DataSource ds =(DataSource)context.lookup("java:comp/env/jdbc/test");
13: Connection db=ds.getConnection();
14: db.close();
15: %>
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:610)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:489)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:380)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:328)
jakarta.servlet.http.HttpServlet.service(HttpServlet.java:777)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
根本原因
jakarta.servlet.ServletException: javax.naming.NameNotFoundException: 名前 [jdbc:mysql://localhost:3306] はこのコンテキストにバインドされていません
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:667)
org.apache.jsp.chap2.connect1_jsp._jspService(connect1_jsp.java:151)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
jakarta.servlet.http.HttpServlet.service(HttpServlet.java:777)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:466)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:380)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:328)
jakarta.servlet.http.HttpServlet.service(HttpServlet.java:777)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
根本原因
javax.naming.NameNotFoundException: 名前 [jdbc:mysql://localhost:3306] はこのコンテキストにバインドされていません
org.apache.naming.NamingContext.lookup(NamingContext.java:840)
org.apache.naming.NamingContext.lookup(NamingContext.java:172)
org.apache.naming.SelectorContext.lookup(SelectorContext.java:161)
java.naming/javax.naming.InitialContext.lookup(InitialContext.java:409)
org.apache.jsp.chap2.connect1_jsp._jspService(connect1_jsp.java:132)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
jakarta.servlet.http.HttpServlet.service(HttpServlet.java:777)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:466)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:380)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:328)
jakarta.servlet.http.HttpServlet.service(HttpServlet.java:777)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
注意 原因のすべてのスタックトレースは、サーバのログに記録されています
Apache Tomcat/10.0.20
コンソール
重大: パス [/webapp1] を持つコンテキスト内のサーブレット [jsp] のServlet.service() が例外 [[/chap2/connect1.jsp] の処理中に行番号 [12] で例外が発生しました。
9: <body>
10: <%
11: Context context=new InitialContext();
12: DataSource ds =(DataSource)context.lookup("java:comp/env/jdbc/test");
13: Connection db=ds.getConnection();
14: db.close();
15: %>
Stacktrace:] が根本的要因と共に投げられました [水 6月 01 13:17:36 JST 2022]
または、問題・エラーが起きている画像をここにドラッグアンドドロップ
該当するソースコード
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="java.sql.*, javax.naming.*, javax.sql.*"%>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>データベースへの接続確認</title>
</head>
<body>
<%
Context context=new InitialContext();
DataSource ds =(DataSource)context.lookup("java:comp/env/jdbc/test");
Connection db=ds.getConnection();
db.close();
%>
データベース接続確認OK
</body>
</html>
Context.xml
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE Configuration SYSTEM "RootElement.dtd">
<Context>
<Resource
DriverClassName="org.mariadb.jdbc.Driver"
initialSize="1"
maxIdle="1"
maxWaitMillis="-1"
name="jdbc/dbusername"
type="javax.sql.DataSource"
url="jdbc:mysql://127.0.01/test?useOldAliasMetadataBehavior=true"
username="dbusername"
password="dbpass"
</Resource>
</Context>
0