ひでっぷの技術メモ

はてなダイアリーから移行しました

TopLink EssentialsのEntityManagerFactoryで接続先が切り替わらない

O/RマッピングTopLinkを使用しています。
とある仕事で5箇所ほどのDBを順次接続していってデータ取得をしようとしています。
接続URL、ユーザー、パスワード、JDBCドライバの情報はPersistence#createEntityManagerFactoryの引数にHashMapで渡してます。
こんな感じ

HashMap dbSetting = new HashMap();
HashMap settings = new HashMap();
settings.put("toplink.jdbc.user", "user");
settings.put("toplink.jdbc.password", "pass");
settings.put("toplink.jdbc.url", DB_URL.toString());
settings.put("toplink.jdbc.driver", "jdbc:mysql://xxx.xxx.xxx.001:3306/hogehoge1");
EntityManagerFactory emf = Persistence.createEntityManagerFactory(name, dbSetting);

でデータを取得し終わったらEntityManagerFactory#closeして次の接続先に接続します。

HashMap dbSetting = new HashMap();
HashMap settings = new HashMap();
settings.put("toplink.jdbc.user", "user");
settings.put("toplink.jdbc.password", "pass");
settings.put("toplink.jdbc.url", DB_URL.toString());
settings.put("toplink.jdbc.driver", "jdbc:mysql://xxx.xxx.xxx.002:3306/hogehoge2");
EntityManagerFactory emf = Persistence.createEntityManagerFactory(name, dbSetting);

ところが接続先がxxx.xxx.xxx.001:3306/hogehoge1のままなんです・・・・。
確か数ヶ月前まではちゃんと切り替わってたと思うんだけどなあ・・・。
きちんとclose()しているのも確認したし、JPAController絡みの変数には切断後すべてnullを入れたけど改善せず。
一体何が原因か皆目検討がつきません。
そもそもこういう使い方をするのが間違っているのかなあ・・・