私はスタンドアロンの "コア"レイヤーを持つアプリケーションをビルドします。これはwebappをビルドするためにも使用されます(Mavenのマルチモジュールプロジェクトで、 'コア'モジュールと 'webapp'モジュールがあります。 「コア」モジュールへの依存性)。 MySQLデータベースを使用します。私はDataSource
を実装しようとしましたが、これは両方のコンテキストで問題ありません(スタンドアロンコンテキストでは1つの接続で十分です)。スタンドアロンとWebアプリケーションの両方のコンテキスト(Java 7、Tomcat 7)で使用されるアプリケーションのDataSourceはどれですか?
DataSourceに関する多くのドキュメントを読んだ後、私は少し失われていると言わざるを得ない。私はTomcat JDBC Connection Poolを使うべきであろうという結論に達しました。私の質問は次のとおりです:
1)スタンドアロンコンテキストでは、この設定がWebアプリケーションコンテキストで提供されることを知って、DataSourceを使用する設定をどのようにして提供する必要がありますか(スタンドアロンの設定はTomcat設定)?
私は、スタンドアロンのコンテキストでのみと呼ばれる方法でin this other questionような何かをすべきか?しかし、Webアプリケーションのコンテキストで、Tomcatがすでにデータソースを提供していることをどのように確認できますか?
または、私はむしろBean定義を使用する必要がありますか?しかし、このBeanがwebappコンテキストでどのように使われないのでしょうか?
2)他のプールされたDataSource実装についてはどうでしょうか?
MySQL DataSourceを使用しないでください。
Java EE 7では、データソースを使用する方が簡単です(https://blogs.oracle.com/arungupta/entry/default_datasource_in_java_ee)。だから、Java 7には何か突破口がありますか? Java 7で絶対に使用しなければならない新しいDataSourceプロバイダですか?
結論: うん、私は失われたんだ、と私はデータソースの使用のための「ゴールドスタンダード」が何であるかを知りません。ご協力ありがとうございました。
返信いただきありがとうございます。私の「コア」レイヤーは他のアプリケーションで使用できるライブラリです。これらのアプリケーションで2番目のリンクに記述されているタスクを実行させたくない場合は、InitialContextを**コアレイヤー内に**設定する必要があります。だから、もっと簡単にコアレイヤーでルックアップを実行し、Webアプリケーションのコンテキストではない場合はスローされた例外をキャッチし、その場合は自分のConnectionを設定する必要があります。それは有効でしょうか? – FBB
'コア'にこのような機能が含まれている場合は、他のアプリケーションによって実行される可能性があります。スタンドアロンアプリケーションから呼び出すことのできる3番目のコンポーネント(カスタム 'InitialContextFactory'を持つ)を生成することができます。私は、この要件の機能はスタンドアロンアプリケーションに固有のものだと思うので、そのようなアプリケーションに組み込むことができます。別の方法として、接続ファクトリを実装することができます。 –
JNDIを使用してDataSourceをロードできない場合、DriverManagerを使用する単純な接続ファクトリです。ドライバは、プロパティファイルを使用して設定できます。それは有効でしょうか? Osはそれはひどいデザインパターンですか? :p – FBB