質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

解決済

1回答

36119閲覧

エクリプスで、「jdbc/mysqlはこのコンテキストにバインドされていません」が出てしまいます。context.xmlに問題?

退会済みユーザー

退会済みユーザー

総合スコア0

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

1クリップ

投稿2016/12/24 11:02

編集2017/01/21 11:23

私は今年、プログラミング未経験でIT企業に入社し、今年の4月〜7月まで外部の研修会社で研修を受講しておりました。

そこでWEBアプリケーションの開発を学び、簡単なWEBアプリケーションを作成したので、自宅で実行してみたいと思い、研修で使ったソース等をエクリプスに突っ込んで実行ボタンを押したら、コンソールの部分に
javax.naming.NameNotFoundException: 名前 jdbc/mysql はこのコンテキストにバインドされていません
というメッセージが出てしまったのですが、なにを修正すればよろしいのでしょう?

server.xmlやweb.xmlにどこか変更しなければいけない箇所があるのでしょうか?

「○○の情報がわからないと答えようが無い」等ありましたらご指摘お願いします。
毎回質問ばかりで恐縮ですが、ぜひ宜しくお願いします。

12月25日9:36頃編集
前提・など
☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
総合開発環境:Eclipse
DB←→Servret←→JSP
サーバー:Tomcat7
DB:MySQL(XAMPP)
ちなみに外部の研修会社では質問内容に挙げているような状況にはなりませんでした。
OS:研修先=Windows
現在(自宅)=Mac
☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

⬇️以下、コンソール部に表示された情報です⬇️

名前 jdbc/mysql はこのコンテキストにバインドされていません
javax.naming.NameNotFoundException: 名前 jdbc/mysql はこのコンテキストにバインドされていません
at org.apache.naming.NamingContext.lookup(NamingContext.java:825)
at org.apache.naming.NamingContext.lookup(NamingContext.java:173)
at work.LoginController.doPost(LoginController.java:73)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:650)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:218)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:442)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1083)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:640)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
12月24日 21:18追記
context.xmlの中身

<?xml version="1.0" encoding="UTF-8"?> <!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --><!-- The contents of this file will be loaded for each web application --><Context>
<!-- Default set of monitored resources --> <WatchedResource>WEB-INF/web.xml</WatchedResource> <!-- Uncomment this to disable session persistence across Tomcat restarts --> <!-- <Manager pathname="" /> --> <!-- Uncomment this to enable Comet connection tacking (provides events on session expiration as well as webapp lifecycle) --> <!-- <Valve className="org.apache.catalina.valves.CometConnectionManagerValve" /> -->
</Context>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

「jdbc/mysql」というJNDI名をきちんと登録できていますか? スペルミスもしくはcontext.xmlはちゃんと作成して配置できていますか?

投稿2016/12/24 11:54

amadablam

総合スコア406

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/12/24 12:18

回答ありがとうございます。 「jdbc/mysql」というJNDI名というのはどこで(どこに?)登録すればよろしいのでしょうか? また、context.xmlはeclipseのServers➡️ローカルホストでのTomcat v7.0サーバーの中に存在します。 context.xmlに記載されているものを質問欄に追記させていただきます。
amadablam

2016/12/25 23:37 編集

JNDIの仕組みと必要性、およびJNDI名に関して理解できていますか? また調べ物をする際には常に一次情報(多くの場合公式ドキュメント)を参照する癖を付けましょう(ITの世界では一次情報は英語が一般的なので、英語の技術文書を読み解く力も必要です)。 TomcatにおけるJNDI関連の設定は「context.xml」に記述します。詳細は「contex.xml」の公式ドキュメントを参照してください。 Jndi Resources Howto http://tomcat.apache.org/tomcat-7.0-doc/jndi-resources-howto.html ここに以下のように書かれています。 Tomcat specific resource configuration is entered in the <Context> elements that can be specified in either $CATALINA_BASE/conf/server.xml or, preferably, the per-web-application context XML file (META-INF/context.xml). したがってアプリケーション内の「META-INF」ディレクトリ内に「context.xml」ファイルを作成し、<Context>要素内の子要素として<Resource>要素を使用してJDBCデータソースに対するJDNI参照を記述するのが推奨される方法です。質問のアプリケーションでは、具体的には以下のようになるでしょう。 <Context> <Resource name="jdbc/mysql" type="javax.sql.DataSource" className="com.mysql.jdbc.Driver" url="データベースへの接続URL" username="ユーザー名" password="パスワード" /> </Context> この<Resource>要素で記述可能な属性に関しては、こちらもドキュメントがあるため、各属性の意味を理解しておくことも重要です。 Context.xml Resource Definitions http://tomcat.apache.org/tomcat-7.0-doc/config/context.html#Resource_Definitions 技術研修を受けたとのことですが、ほとんどの研修では「How to」は教えても「Why」については教えてくれませんね。しかし技術者としてやっていくのであれば教えられたことをそのままにするのではなく、常にその技術の背景と「Why(なぜ)」を自分でしっかりと理解することが大切です(すなわち、なぜそれをしなければいけないのか、あるいはなぜそれをしなくてもよいのか)。そうしなければ、応用力を身につけることはできません。単純なWebアプリケーションひとつにしても、数多くのテクノロジーの要素が詰まっています。ぜひそれらをひとつずつきちんと理解するように勉強していってください。
退会済みユーザー

退会済みユーザー

2016/12/25 23:54 編集

共通リソースなら共通コンテキストに記述しても大丈夫ですよ。 META-INF配下は個別リソース In the $CATALINA_BASE/conf/context.xml file: the Context element information will be loaded by all web applications.
amadablam

2016/12/26 00:14

外部リソースの参照設定をサーバーの共通コンテキストに設定することはアプリケーションを別のTomcatサーバーに移行した場合に動かなくなるなど、アプリケーションの移植性を損なうため推奨されません(それゆえにドキュメントにも "preferably" = 望ましくは、できれば、と書かれています)。
退会済みユーザー

退会済みユーザー

2016/12/30 06:31

ご返信ありがとうございます。 META-INF内にcontext.xmlを作成したのですが、 "データベースへの接続URL" "ユーザー名" "ログイン名" が何かわかりません。 この3項目はどこを参照すればわかるのでしょうか? 質問ばかりで申し訳ありませんが、何卒よろしくお願いします。
退会済みユーザー

退会済みユーザー

2016/12/30 12:14

なお、MySQLのConnector/Jをインストールしていないのですが、こちらはインストールしなければいけないのでしょうか?
amadablam

2016/12/30 23:19

JDBCによる接続では必ずJDBCドライバーが必要です。したがってConnector/Jをダウンロード解凍して「mysql-connector-java-x.x.x.jar」ファイルをWebアプリケーションの「lib」ディレクトリに配置してください。 接続URLはMySQLを使用しているのであれば「jdbc:mysql://ホスト名:ポート番号/データベース名」となります。ホスト名は自分のマシン上で動かしているなら「localhost」、ポート番号はデフォルト・ポート3306を使用しているのであれば省略可能です。データベース名は接続しようとしているデータベースの名前です。ユーザー名とパスワードは自身で設定したものを使ってください。
退会済みユーザー

退会済みユーザー

2017/01/11 13:05 編集

返信ありがとうございます。 こちらの返信が遅くなってしまい申し訳ありません。 こちらでConnecter/Jをダウンロードする前に WebContent/WEB-INF/lib 内にmysql-connector-java-5.1.35-bin.jarファイルが存在していたのですが、こちらとは別にConnector/Jをダウンロードする必要があるのでしょうか?
退会済みユーザー

退会済みユーザー

2017/01/08 07:14 編集

>ユーザー名とパスワードは自身で設定したものを使ってください。 パスワードはターミナルでMySQLを開く際に聞かれ、☆☆☆(下記参照)の部分で入力するものでよろしいでしょうか? 『Macの名前』-MacBook-Air:~ 『私の名前』$ cd /Applications/XAMPP/bin 『Macの名前』-MacBook-Air:bin 『私の名前』$ ./mysql -u root -p Enter password: ☆☆☆←ここで入力するやつ また、ユーザー名を忘れてしまったのですが、どこを参照すればわかりますでしょうか?
退会済みユーザー

退会済みユーザー

2017/01/08 12:04

>また、ユーザー名を忘れてしまったのですが、どこを参照すればわかりますでしょうか? ↑すみません、ユーザー名はrootですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問