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

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

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

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

JDBC

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

Java

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

Q&A

解決済

1回答

6863閲覧

EclipseLinkによるDBアクセス。DB接続情報を外部ファイルに持つとNG

nochi

総合スコア33

MySQL

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

JDBC

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

Java

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

0グッド

0クリップ

投稿2017/05/10 07:33

編集2017/05/10 07:52

JAVA SE7とEcliplseLinkで、mySQLにアクセスしようとしています。
Persistence.xmlにDB接続情報(DBサーバーのIP,ポート,ユーザー名,パスワード)を持たせていた時には正常に動作していました。

接続情報は外部ファイルに持つのが望ましいとの要望が有りましたので、
persistence.xmlのDB接続に関係する部分をdatasource.propertiesというファイル移動した所、
[EL Info]: 2017-05-10 16:18:07.712--ServerSession(1156833285)--EclipseLink, version: Eclipse Persistence Services - 2.6.4.v20160829-44060b6
[EL Severe]: ejb: 2017-05-10 16:18:07.72--ServerSession(1156833285)--Exception [EclipseLink-4003] (Eclipse Persistence Services - 2.6.4.v20160829-44060b6): org.eclipse.persistence.exceptions.DatabaseException
Exception Description: Configuration error. Class ["com.mysql.jdbc.Driver"] not found.
というエラーが発生するようになりました。

エラー発生箇所のコードは下記の通りです
static EntityTransaction et = null;
static EntityManagerFactory emf;
static EntityManager em;
Properties props = new Properties();
try {
props.load(new FileInputStream("./lib/datasource.properties"));
emf = Persistence.createEntityManagerFactory("myModelClass", props);
em = emf.createEntityManager();
} catch (IOException e) {
e.printStackTrace();
}

datasource.propertiesの内容は下記の通り
javax.persistence.jdbc.driver="com.mysql.jdbc.Driver"
javax.persistence.jdbc.url="jdbc:mysql://192.168.xx.xx:3306/mydb?tinyInt1isBit=false&characterEncoding=UTF-8"
javax.persistence.jdbc.user="myuser"
javax.persistence.jdbc.password="mypass"
javax.persistence.schema-generation.scripts.action="none"

デバッガ上で、datasource.propertiesの内容が変数propsに反映されるのは確認しています。
また、
mysql-connector-java-5.1.41.jarは
プロジェクト内のlibというフォルダに有り、ビルドパスも設定してあります。

mysql-connector-javaの読込が出来ていない事を疑い、
確認の意味で
String msg = "";
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
msg = "ドライバのロードに成功しました";
} catch (Exception e){
msg = "ドライバのロードに失敗しました";
}
System.out.println(msg);
というコードを入れてみた所、
「ドライバのロードに成功しました」が表示されます。

尚、
本件は、webアプリでは無いため、tomcat等は使っておりません。

よろしくお願い致します。

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

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

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

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

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

guest

回答1

0

ベストアンサー

動作確認はしていませんが、全てのプロパティ値にダブルクォーテーションを記載されておられるようですが

javax.persistence.jdbc.driver="com.mysql.jdbc.Driver"

ダブルクォーテーションが不要なのではないでしょうか。

投稿2017/05/10 09:16

A-pZ

総合スコア12011

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

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

nochi

2017/06/06 06:59

お礼を記入したつもりでしたが、送信されていなかったようです。 改めてご回答にお礼申し上げます。 ご指摘の内容で正しく動作致しました
A-pZ

2017/06/06 07:44

グッ d(・ω・
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問