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

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

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

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

JDBC

JDBC(Java DataBase Connectivity)は、Javaとリーレーショナルデータベースに接続させる基本的なAPIです。Java上でSQLステートメントを発行することで、データベースの種類に影響を受ないDB操作を可能とします。

Java

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

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

Q&A

解決済

3回答

7243閲覧

javaアプリからEC2上のmysqlのDBへ接続する

chikashi_4645

総合スコア3

MySQL

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

JDBC

JDBC(Java DataBase Connectivity)は、Javaとリーレーショナルデータベースに接続させる基本的なAPIです。Java上でSQLステートメントを発行することで、データベースの種類に影響を受ないDB操作を可能とします。

Java

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

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

1グッド

1クリップ

投稿2020/07/18 17:57

前提・実現したいこと

前提:すみません、新米SEです。javaにてHPを作っており、AWSを使って公開しようとしています。稚拙な質問かもしれませんがどうかお願いいたします。
結論:AWSのEC2上にインストールしたDB(mysql)のJDBC URLの記述方法や、EC2サーバー上でjavaからmysqlを扱う際に必要な設定・作業が知りたい。

詳細
:①アプリケーションサーバー ⇨ AWS EC2にtomcatをインストール、ローカルのeclipseで作成したWARファイルを搭載。
:②データベース      ⇨ ①と同じEC2上にmysqlをインストール。DBの作成まで完了。

①にて作成したjavaのアプリは動作するが、DBアクセスの部分ができていない。
ローカルで開発していた際は接続できており、jdbc周りが原因ではないかと考えています。

他におすすめの方法がありましたら別の方法でも大丈夫です。
※この方法に拘っていません。

以下のソースコードは、上がローカルで動作していた時のもの。
下は、EC2に移行させた後自分で考えていくつか書き換えています。
書き換えた箇所
・jdbcUrlの文字列。
localhostから、DNS名:ポート/DB名に変更。
localhostから、IPアドレス:ポート/DB名に変更。
・com.mysql.cj.jdbc.Driverをcom.mysql.jdbc.Driverへ。

発生している問題・エラーメッセージ

・EC2上でWEBアプリを動作させると、DBアクセスの部分が機能しなくなる。 ・DBから情報を引っ張ってこれない。 (ログイン機能を実装しており、正しいパラメータを渡してもログインできない。)

該当のソースコード

java

1/**----------------------------------------------------------------------* 2 *■■■TJMEMDaoクラス■■■ 3 *概要:DAO(「MEMBERS」テーブル) 4 *----------------------------------------------------------------------**/ 5public class TJDao { 6 7 //------------------------------------------- 8 //データベースへの接続情報 9 //------------------------------------------- 10 //いずれはここを、AWSのDBにしたい。 11 String jdbcUrl = "jdbc:mysql://localhost/takejam2020"; 12 String userId = "chikashi"; 13 String password = "takejam"; 14 15 //---------------------------------------------------------------- 16 //メソッド 17 //---------------------------------------------------------------- 18 /**----------------------------------------------------------------------* 19 *■doSelectメソッド 20 *概要 :引数のユーザー情報に紐づくユーザーデータを「MEMBERS」テーブルから抽出する 21 *引数①:ユーザーID(ユーザー入力) 22 *引数②:パスワード(ユーザー入力) 23 *戻り値:「MEMBERS」テーブルから抽出したユーザーデータ(UTJMEMDto型) 24 *----------------------------------------------------------------------**/ 25 26 public TJDto doSelect(String inputUserName, String inputPassWord) { 27 28 //------------------------------------------- 29 //JDBCドライバのロード(不要) 30 //------------------------------------------- 31 try { 32 Class.forName("com.mysql.cj.jdbc.Driver"); 33 }catch(ClassNotFoundException e) { 34 e.printStackTrace(); 35 } 36 37 //------------------------------------------- 38 //SQL発行 39 //------------------------------------------- 40 Connection con = null; 41 //prepared statementの準備 importが必要 42 PreparedStatement ps = null; 43 //result setの準備 importが必要 44 ResultSet rs = null; 45 //DTOの準備 46 //TJMEMDto dto = null; 47 TJDto dto = new TJDto(); 48 49 //------------------------------------------- 50 //takejam2020 DBへ接続 51 //------------------------------------------- 52 try {//try with resource文 53 54 55 //------------------------------------------- 56 //接続の確立(Connectionオブジェクトの取得) 57 //------------------------------------------- 58 con = DriverManager.getConnection(jdbcUrl, userId, password); 59 60 61

java

1/**----------------------------------------------------------------------* 2 *■■■TJMEMDaoクラス■■■ 3 *概要:DAO(「MEMBERS」テーブル) 4 *----------------------------------------------------------------------**/ 5public class TJDao { 6 7 //------------------------------------------- 8 //データベースへの接続情報 9 //------------------------------------------- 10 String jdbcUrl = "jdbc:mysql://ec2-35-72-4-42.ap-northeast-1.compute.amazonaws.com:3306/takejam2020"; 11 String userId = "chikashi"; 12 String password = "takejam"; 13 14 //---------------------------------------------------------------- 15 //メソッド 16 //---------------------------------------------------------------- 17 /**----------------------------------------------------------------------* 18 *■doSelectメソッド 19 *概要 :引数のユーザー情報に紐づくユーザーデータを「MEMBERS」テーブルから抽出する 20 *引数①:ユーザーID(ユーザー入力) 21 *引数②:パスワード(ユーザー入力) 22 *戻り値:「MEMBERS」テーブルから抽出したユーザーデータ(UTJMEMDto型) 23 *----------------------------------------------------------------------**/ 24 25 public TJDto doSelect(String inputUserName, String inputPassWord) { 26 27 //------------------------------------------- 28 //JDBCドライバのロード 29 //------------------------------------------- 30 try { 31 Class.forName("com.mysql.cj.jdbc.Driver"); 32 }catch(ClassNotFoundException e) { 33 e.printStackTrace(); 34 } 35 36 //------------------------------------------- 37 //SQL発行 38 //------------------------------------------- 39 Connection con = null; 40 //prepared statementの準備 importが必要 41 PreparedStatement ps = null; 42 //result setの準備 importが必要 43 ResultSet rs = null; 44 //DTOの準備 45 //TJMEMDto dto = null; 46 TJDto dto = new TJDto(); 47 48 //------------------------------------------- 49 //takejam2020 DBへ接続 50 //------------------------------------------- 51 try {//try with resource文 52 53 54 //------------------------------------------- 55 //接続の確立(Connectionオブジェクトの取得) 56 //------------------------------------------- 57 con = DriverManager.getConnection(jdbcUrl, userId, password); 58 59 60

試したこと

上のソースコードは、上がローカルで動作していた時のものになります。
下は、EC2に移行させた後自分で考え、いくつか書き換えています。
●書き換えた箇所
・jdbcUrlの文字列。
localhostから、DNS名:ポート/DB名に変更。
localhostから、IPアドレス:ポート/DB名に変更。
・com.mysql.cj.jdbc.Driverをcom.mysql.jdbc.Driverへ。

●その他試したこと。

  1. 以下を参考に、EC2のポート3306を開放。

https://medium.com/modernnerd-code/connecting-to-mysql-db-on-aws-ec2-with-jdbc-for-java-91dba3003abb
2. サーバーの再起動。(WARを修正するたび再起動しています。)

素人考えで大変恐縮ですが、DBアクセスする部分のjavaまでは問題なく動作していますのでDAOが原因と思い、ソースを載せさせていただきました。
また、プログラミングの質問をさせていただくのは人生初でして、何かこの情報も載せて欲しいというものがあれば仰っていただきたいです。

みなさま、レベルの低い質問で大変恐縮ですが、重ねてどうかよろしくお願いいたします。

補足情報(FW/ツールのバージョンなど)

各種バージョン
・mysql Ver 8.0.21 for Linux on x86_64 (MySQL Community Server - GPL)
・Apache Tomcat/7.0.76
・openjdk version "1.8.0_252"
・OpenJDK Runtime Environment (build 1.8.0_252-b09)
・OpenJDK 64-Bit Server VM (build 25.252-b09, mixed mode)
・開放ポート:80,443,22, 8080(tomcat用), 3306(mysql用)

Okam0chan👍を押しています

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

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

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

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

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

dodox86

2020/07/18 19:46

WEBサーバー(というかtomcat)とmysqlは、同じEC2インスタンスの1つのVM上で動作しているのですよね。そうであれば、記事を参考にして「EC2のポート3306を開放」などとしているのは大間違いです。その設定は、外部のマシンからEC2のインスタンス上のmysqlへ接続するためのものです。そのEC2インスタンスのmysqlサーバーをインターネットに晒している訳なので、即刻止めてください。また、アカウントとパスワードをEC2のホスト名と共に晒している訳ですから、これらも即刻、コード上から削除し、変更してください。 https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/using-instance-addressing.html#concepts-private-addresses やらなければならないことは、まず、EC2のインスタンス上のコンソールからmysqlに接続できるようにすることです。localhostの"takejam2020"データベースに指定のユーザー、パスワードでログインできるようにします。(<これは確認済みですか?)それができれば、ローカルPC上で設定していたものとほぼ同等の設定内容で接続できるようになるはずです。
dodox86

2020/07/18 19:57

それともう一点確認なのですが、 > DBアクセスする部分のjavaまでは問題なく動作していますのでDAOが原因 この文を読むと、「DBアクセスする部分のJavaコードはOKだが、DAOを使うとNG」なのか「DBアクセスする部分のJavaコードの"前まで"はOK」なのか判然としません。mysql DBにアクセスこと全般がNG、と言うことですね?
chikashi_4645

2020/07/18 19:57

dodox86さん、迅速に回答頂きましてありがとうございます。一応、このいEC2は今は使っていないものです。ご指摘いただきありがとうございます。 EC2のコンソール上からは指定のユーザー、パスワードでのログインができることを確認しています。 そうですと、jdbcのurlは、"jdbc:mysql://localhost/takejam2020" このままで良いということになりますか? 幼稚な質問でお手数をおかけしますが、よろしくお願い致します。
dodox86

2020/07/18 19:59

「DBにアクセスできてない」と言うのは、どのようにして確認、判断しましたか?
chikashi_4645

2020/07/18 20:03

ローカルホスト環境ではDB内の情報を取得できていたが、ソースに変更がないにも関わらずEC2環境では取得できなくなっているため、DBにアクセスできていないものと考えました。見当違いかも知れませんが、ご指導お願い致します。
dodox86

2020/07/18 20:07

それではダメです。コード上で、どこでNGになっているか分かっていない訳ですよね。ローカルPCとEC2インスタンスと言う違いは確かに大きく接続方法を疑うのは順番としては分かりますが、それをエラーメッセージなどで確認した訳ではないのであれば、言うなればそれは単なる「思い込み」です。
chikashi_4645

2020/07/18 20:10

おっしゃる通りです。ローカルではエラー箇所がイクリプスのコンソールに出力されますが、EC2のような環境上ではどのように判断したら良いでしょうか。
dodox86

2020/07/18 20:37

tomcat/Javaサーブレットであれば、サーブレットのエラー(Exceptionなど)はHTTPレスポンスでのHTML内に出力したり、標準エラー出力でエラーログファイルに出力したりします。がんばればEC2インスタンスとローカルPCをつないでリモートデバッグもできるようになるはずですが、たぶん、かなり大変です。 まずはDAOを使うとかややこしいことをせずに、必要最小限のコード、つまりJDBCでの接続、簡単なSELECT文を実行するだけのJavaのテストコードを書いてExceptionを出力するのがよいです。コンソール上で動く、static void main(String[] args) がある単純なコンソールプログラムで試します。(<私なら、まずそれをします) Javaサーブレットが既に動くのであれば、その中でExceptionを出力させてもよいかもしれません。ここまでで分かりますか? そういった手順、というか確認の代替方法は、どの道この先、必要になります。
dodox86

2020/07/18 20:42

同じマシン上、つまりEC2インスタンスのコンソール上でstatic void main(String[] args)なJavaプログラムでmysqlに接続できるようになったらJDBCの接続文字列とアカウント情報の設定には問題が無い、と言う切り分けになります。Javaサーブレットにしたら動かなくなったら、それはまた別の問題を持っている可能性がある、と言うことです。そうやって切り分けていきます。
chikashi_4645

2020/07/19 11:53

dodox86さん ご丁寧に返信いただきありがとうございます。以下のようなテストプログラムを作り、実行してみました。 (ほぼベタ書きで申し訳ありません。) まずEC2上でコンパイル、実行してみましたが、 java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver でエラーになっています。自分のローカル環境(macのターミナル)でも同様でしたが、 eclipse上では正常に動作し、DBの情報を抽出できています。 JDBCドライバのパスが通っていないことを疑い、まずmacにてhttps://qiita.com/s_hino/items/a185deb4f9fc31c0f5e2 を参考にJDBCドライバのjarファイルのパスを追加しましたが、解消しませんでした。 いったんここまででアドバイスいただければと思います。どうかお願いいたします。 import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class test { public static void main(String[] args) { //------------------------------------------- //データベースへの接続情報 //------------------------------------------- //JDBCドライバの相対パス String driverName = "com.mysql.cj.jdbc.Driver"; //接続先のデータベース String jdbcUrl = "jdbc:mysql://localhost/takejam2020"; //接続するユーザー名 String userId = "chikashi"; //接続するユーザーのパスワード String userPass = "takejam"; //------------------------------------------- //① JDBCドライバのロード //------------------------------------------- try { Class.forName(driverName); //JDBCドライバをロード&接続先として指定 } catch (ClassNotFoundException e) { e.printStackTrace(); } //JDBCの接続に使用するオブジェクトを宣言 //※finallyブロックでも扱うためtryブロック内で宣言してはいけないことに注意 Connection con = null ; // Connection(DB接続情報)格納用変数 PreparedStatement ps = null ; // PreparedStatement(SQL発行用オブジェクト)格納用変数 ResultSet rs = null ; // ResultSet(SQL抽出結果)格納用変数 try { //------------------------------------------- // ②接続の確立(Connectionオブジェクトの取得) //------------------------------------------- con = DriverManager.getConnection(jdbcUrl, userId, userPass); //------------------------------------------- // ③SQL文の送信 & ④抽出結果の取得 //------------------------------------------- //SQL文の生成(SELECT) StringBuffer buf = new StringBuffer() ; buf.append(" SELECT "); buf.append(" id , "); buf.append(" NickName "); buf.append(" FROM "); buf.append(" MEMBERS "); //PreparedStatementオブジェクトを生成&発行するSQLをセット ps = con.prepareStatement(buf.toString()); //SQL文の送信&抽出結果(ResultSetオブジェクト)の取得 rs = ps.executeQuery(); while (rs.next()) { //ResultSetオブジェクトから1レコードデータを表示する StringBuffer rsbuf = new StringBuffer(); //加工作成した1レコード分のデータを表示 rsbuf.append(rs.getString("NickName")); System.out.println(rsbuf.toString()); }
dodox86

2020/07/20 02:35

回答として投稿しました。ご提示のテストプロソースコードは末尾が不完全でコンパイルエラーになります。今後はコードを提示するときは質問文中に追記、修正でお願いできればと思います。(他の閲覧者さんの為でもあります)
guest

回答3

0

ベストアンサー

ご質問の[2020/07/19 20:53]のコメントを見て:

まずEC2上でコンパイル、実行してみましたが、
java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver
でエラーになっています。
自分のローカル環境(macのターミナル)でも同様でしたが、
eclipse上では正常に動作し、DBの情報を抽出できています。
JDBCドライバのパスが通っていないことを疑い、

「JDBCのPATHを通す」とは、PATH環境変数で示されるサーチPATHに追加することではありません。*.jarCLASSPATHに追加し、Javaの実行時に当該クラスをロードできるようにする処置です。

MySQLのJDBCドライバーがインストールされていないかまたは正しくCLASSPATH上にセットされていないのではないでしょうか。static void main(String args[])なスタンドアロンのプログラムでも、Tomcat上で稼働するJavaサーブレットでも、com.mysql.cj.jdbc.Driverに合致したMySQL用のJDBCドライバーを使う必要があります。ローカルPCのEclipseをセットアップするときに、そのような手順があったと思いますが違いますでしょうか。

7.1 Connecting to MySQL Using the JDBC DriverManager Interface - MySQL

こちらで確認したところ、MySQL Community Downloadsからダウンロードした圧縮ファイルmysql-connector-java-8.0.21.tar.gzを展開して得られた「mysql-connector-java-8.0.21.jar」を利用することで、質問者さんが試したテストプログラムを一部改変した下記のもので動作させることができました。確認した環境はAmazon EC2のインスタンスではなく、別のクラウドのUbuntu18.04で、ユーザーアカウントやデータベース名も違いますが、localhostへ接続させているので状況としては同じはずです。

Java

1import java.sql.Connection; 2import java.sql.DriverManager; 3import java.sql.PreparedStatement; 4import java.sql.ResultSet; 5import java.sql.SQLException; 6 7public class Test2 { 8 9 public static void main(String[] args) { 10 //JDBCドライバの相対パス 11 String driverName = "com.mysql.cj.jdbc.Driver"; 12 13 //接続先のデータベース 14 String jdbcUrl = "jdbc:mysql://localhost/takejam2020"; 15 16 //接続するユーザー名 17 String userId = "chikashi"; 18 19 //接続するユーザーのパスワード 20 String userPass = "takejam"; 21 22 try { 23 Class.forName(driverName); //JDBCドライバをロード&接続先として指定 24 } catch (ClassNotFoundException e) { 25 System.out.println("----1"); 26 e.printStackTrace(); 27 } catch (Exception e) { 28 System.out.println("----2"); 29 e.printStackTrace(); 30 } 31 32 Connection con = null; 33 PreparedStatement ps = null; 34 ResultSet rs = null; 35 36 try { 37 con = DriverManager.getConnection(jdbcUrl, userId, userPass); 38 39 // MySQLが既定で持つテーブルのデータを出力 40 String sql = "SELECT SCHEMA_NAME, DEFAULT_CHARACTER_SET_NAME FROM INFORMATION_SCHEMA.SCHEMATA"; 41 ps = con.prepareStatement(sql); 42 43 rs = ps.executeQuery(); 44 45 while (rs.next()) { 46 String s1 = rs.getString("SCHEMA_NAME"); 47 String s2 = rs.getString("DEFAULT_CHARACTER_SET_NAME"); 48 System.out.println(String.format("%s, %s", s1, s2)); 49 } 50 } catch (Exception e) { 51 System.out.println("----3"); 52 e.printStackTrace(); 53 } 54 } 55} 56

実行例です。実行時には当然、CLASSPATH上にmysql-connector-java-8.0.20.jarを含める必要があります。javaコマンド実行時のコマンドラインオプションに注意して読んでみてください。

sh

1user01@DevVM1:~/work$ ls -l *.jar 2-rw-r--r-- 1 user01 user01 2397321 Jun 16 15:17 mysql-connector-java-8.0.21.jar 3 4user01@DevVM1:~/work$ javac -version 5javac 1.8.0_252 6user01@DevVM1:~/work$ javac Test2.java 7user01@DevVM1:~/work$ java -classpath ./:./mysql-connector-java-8.0.21.jar Test2 8information_schema, utf8 9userdb, utf8 10userdb2, utf8 11mysql, latin1 12performance_schema, utf8 13sys, utf8

Tomcatで稼働させるJavaサーブレットでも、CLASSPATH上で参照できる必要があります。

投稿2020/07/20 02:33

dodox86

総合スコア9256

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

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

chikashi_4645

2020/07/20 10:08

dodox86さん こんなに親切にご指導いただき、感動しています。心からお礼申し上げます。回答者様の親切に甘えまして、またしてもレベルの低い質問をさせていただきます。 *.jarをCLASSPATHに追加し、とありますが具体的な操作手順はどのようになるのでしょうか。当然ながら自分なりに方法は調べたのですが、期待通りの結果は得られませんでした。 やったこととしては、macのターミナルにてバッシュプロファイルにexport CLASSPATHと記述し、jdbcのjarのパスを記載しました。 そもそもLinuxのパスの通し方に自信がないです… それからMySQLやjdkのバージョンや配置場所なども、yumコマンドにてインストールを行なっており(versionは最初の質問の末尾に記載)、本当にこのままの設定でうまく行くのかなと思いながら実行しています。(配置場所やバージョンなどはあまり関係ないでしょうか?) もし、その辺りもクリティカルな要素になり得るとしたら、(もちろんjdbcは、対応するMySQLのバージョンでなくてはならないですが)細かな手順も記載頂けますと非常に嬉しいです。(かなり甘ったれてますが、近くに質問できる方がおらず、大変申し訳ございません) このままDBに接続できないWEBサイトでは我慢できなく、お力添えいただきたいです。本当に重ね重ねありがとうございます。
退会済みユーザー

退会済みユーザー

2020/07/20 14:45

最終的には $CATALINA_HOME/lib か WEB-INF/lib に入ってなかっただとおもうけどどう解決したんだろうね。
guest

0

みなさま、大変お世話になりました。linuxの環境変数の定義を一から学び直し、linux周りを業務で扱っている方がわざわざ声をかけていただき解決しました。

環境変数の定義の方法がやはり間違えており、PATHとCLASSPATHの違いをはっきり理解した後で接続を試みたところ正常に動作しました。

今回学んだことは、eclipseは非常に便利なツールであるが、本質を理解する上では足枷になる可能性もあるということです。
基本的な理解がないままコードがかけ、プログラムが動作するというのは便利な一方、こうした情けない事態を招いてしまうことがよくわかりました。

回答いただきましたお二方、見ず知らずの若輩者にここまで丁寧にアドバイスいただきまして心から感謝しています。これを皮切りにしっかりとまた一段と精進していきたいと思います。人の温かみに触れ、素晴らしい経験をさせていただきました。
繰り返しになりますが、ご親切にコーディングのイロハまでも学ばせていただき感謝しています。ありがとうございました。

投稿2020/07/20 14:53

chikashi_4645

総合スコア3

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

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

dodox86

2020/07/20 16:14

しばらく離れていて追記しようかと思い、PCに向きあったところこちらの報を読みました。解決できてよかったです。環境変数PATH, CLASSPATHについては意味合いも違えば設定の仕方もWindows, macOS、Linux、それぞれで少しずつ違っていたりして特に初心者の方には理解もしづらかったと思います。ひき続きがんばってください。
guest

0

  1. ローカルとリモート の ${CATALINA_HOME}/lib に過不足がないか確認する。
  2. ローカルとリモート の ${CATALINA_HOME}/Catalina/localhost に過不足がないか確認する。
  3. ローカルとリモート の ${CATALINA_HOME}/server.xml で設定が違わないか確認する
  4. ローカルとリモート の ${CATALINA_HOME}/context.xml で設定が違わないか確認する
  5. ローカルとリモート の ${CATALINA_HOME}/web.xml で設定が違わないか確認する

投稿2020/07/19 01:47

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

dodox86

2020/07/19 02:15

そうですね。意外とJDBC"jdbc:mysql://localhost/takejam2020"ではDBに接続可能な状態になっていて、asahina1979さんの回答でのご指摘のように、tomcat/サーブレットの設定自体の問題の可能性もあります。(それを見極める為の必要最小限なコード、と言うのもありますが)
退会済みユーザー

退会済みユーザー

2020/07/19 02:31

@dodobox86 環境依存の処理を書かない+Pure Java でかけば、「Write once, run anywhere」なんで 今回の件だと JDBC URL が ベタがきなんで lib 以外は不要ではあるが ・・
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問