空に向ければ森が真っ黒。 森に向ければ空がまっ白。 カメラのダイナミックレンジが狭いせいでどっちかに偏ってしまいがちなのだが、ちょうど境目辺りに向けると、どっちもそれなりに見れるのだな。 まあ、それでもやっぱりそれなりでしかなくて、見た目の印象とはまるで違うのだけど。
JDBCで別マシンのデータベースに接続するようなWEBアプリケーションが、何らかの理由でデータベースに繋がらなくて、調査することがたまにある。 そんな時、まずは問い合わせと同じ画面操作をして実際に繋がらないことを確認し、それから個別の要素を調査する。 個別の要素ってのは、例えば、データベースは生きているか、pingは届くか、WEBサーバー側の接続設定は正しいか、といったこと。 ポイントは、動くはずのアプリケーションがあるので、まずそれを使ってみることで繋がるかどうか、繋がらなかった場合に発生する例外などが確認できること。
これが、似ているけど内容はより単純な 「老朽化更新で新しく立てたサーバー間でJAVAで接続できるかどうかだけを確認する」 なんて場合だと、今動いているものが無いために、接続を試す何かを準備するところから始める必要があって面倒なのだな。
で、その度に、きっとまた使うからとコネクションを取得するだけのクラスを、ちょっとだけ汎用化を意識して作る。 だいたいこんな感じ。
import java.sql.DriverManager;
import java.util.ResourceBundle;
public class ConnTest {
public static void main(String[] args) {
int returnValue = 0;
try {
ResourceBundle rb = ResourceBundle.getBundle("DbResource");
Class.forName(rb.getString("Driver"));
DriverManager.getConnection(
rb.getString("URL"),
rb.getString("User"),
rb.getString("Password")
).close();
System.out.println("OK");
} catch (Exception e) {
e.printStackTrace();
returnValue = 1;
}
System. exit(returnValue);
}
}
実際の接続先の情報はプロパティファイルに持たせる。
#DbResource.properties
Driver=oracle.jdbc.driver.OracleDriver
URL=jdbc:oracle:thin:@localhost:1521:ORCL
User=SCOTT
Password=TIGER
こんな感じで、プロパティファイルの内容と接続先のDBに応じたJDBCドライバーとを用意して、接続確認をするのだ。 って、これだと別サーバーじゃなくて自分のOracleに接続する例か。
まあこれはこれでいいのだが、問題は 「その度に」 ってこと。 いつかまた使えるようにと、わざわざ接続情報を外だしにして汎用性を持たせているのに、その 「いつか」 が実際に来たときに、前に作ったものが大抵見つからなくてまた作るのだ。 奴らはどこに姿を隠したのか。 何かもう3回ぐらい同じものを作った気がする。