LoginSignup
TomKitty
@TomKitty (tom kitty)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

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

No Answers yet.

Your answer might help someone💌