5

Webアプリケーションの構築にも使用されるスタンドアロンの「コア」レイヤーを持つアプリケーションを構築します(これは、「コア」モジュールと「webapp」モジュールを備えたMavenマルチモジュールプロジェクトであり、 'コア'モジュール)。MySQLデータベースを使用します。両方のコンテキストで問題ないを実装しようとしてDataSourceいます(スタンドアロンコンテキストでは1つの接続で十分です)。

データソースに関する多くのドキュメントを読んだ後、私は少し迷っていると言わざるを得ません。おそらくTomcatJDBC接続プールを使用する必要があるという結論に達しました。私の質問は次のとおりです。

1)スタンドアロンコンテキストでは、この構成がWebappコンテキストでTomcatによって提供されることを知って、データソースを使用するための構成をどのように提供する必要がありますか(スタンドアロン構成はTomcat構成をオーバーライドしないはずです)?

  • スタンドアロンコンテキストでのみ呼び出されるメソッドで、この他の質問のようなことを行う必要がありますか?しかし、Tomcatがすでにデータソースを提供していることをWebアプリケーションのコンテキストでどのように確認できますか?

  • または、Bean定義を使用する必要がありますか?しかし、このBeanはWebアプリケーションのコンテキストではどのように使用されないのでしょうか。

2)他のプールされたデータソースの実装はどうですか?

結論:うん、私は迷子になっていて、データソースの使用に関する「ゴールドスタンダード」が何であるかわかりません。ご協力ありがとうございました。

4

1 に答える 1

2

コアモジュールでデータソースを検索できます。Webappモジュール用にTomcatでJNDIデータソースを作成し、スタンドアロンモジュール用にスタンドアロンJNDIサポートを作成する必要があります。

たとえばConnection、データソースから取得する場合は、両方のコンテキストで同じです。

Context ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/MySQLDB");
Connection conn = ds.getConnection();

ただし、データソースの構成は異なります。Tomcatでは、リンクの例にそのようなものが表示されます。

<Context>
<Resource name="jdbc/MySQLDB" ... />
</Context>

ctx.lookupスタンドアロンのリソースの名前は、スタンドアロンの呼び出しと同じである必要があります。

Properties prop = new Properties();
prop.put("java:comp/env/jdbc/MySQLDB", ds1);

スタンドアロンモジュールのInitialContextFactoryは、コアモジュールとは独立して作成する必要があります。

これについてはこちらcom.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSourceをご覧ください。Tomcatは、Apache Software FoundationのDBCPライブラリを使用します。これは、Java以外の独自のEEコードでも使用できます:http://jakarta.apache.org/commons/dbcp/

TomcatのJDBC接続プールについてはこれを参照してください。ApacheDBCPプールについてはこれを参照してください。

于 2013-03-04T23:33:26.580 に答える