1

Web アプリケーションに単一の .war ファイルがあります。問題の根本は、(環境が異なる) すべての顧客に対して 1 つの .war ファイルを保持したいということです。このために、さまざまなバージョンのライブラリを .war に保持し、展開時に使用するライブラリを決定する必要があります。

例えば:

最初の顧客は oracle 10 を使用し、2 番目の顧客は oracle 11 を使用しています。戦争で両方の ojdbc.jar ファイルを保持し、プロパティ ファイルのパラメータに従ってどちらを使用するかを選択します。

この問題を解決する 1 つの解決策は、無駄なファイルをロードしない独自の ClassLoader を作成することです (ここに示すように: https://serverfault.com/questions/317901/tomcat-possible-to-exclude-jars-during-app-deployment)。

問題は、ClassLoader クラスが「tomcat\lib」ディレクトリにある必要があることです。これにより、アプリケーションのインストールがより複雑になります。

たぶん、この問題を解決する別の方法がありますか?リフレクションなどを使用して、アプリケーション内でプログラムで行うのは素晴らしいことです。

手伝ってくれてありがとう!

4

1 に答える 1

2

あなたが与える例(データベースドライバー)のベストプラクティスは、Tomcatを介してデータソースを提供することです。これは、データベース ドライバ jar がグローバル クラスパス ( tomcat/lib) にある必要があることを意味します。これにより、すべての顧客に同じ .war ファイルを使用するという意図も保持されます。これを更新するときは、すべてのユーザーに同一のファイルを提供するだけで済みます。

データベース接続の場合、顧客ごとにカスタマイズされたデータベースが必要になる可能性が高くなります。これを tomcat を介してデータソースとして提供すると、(最初のインストール時に) 1 回構成する必要がありますが、心配する必要はありません。その後について。

データベース ドライバーだけが問題ではない場合は、異なる環境/jar の例を追加して質問を更新してください。

于 2012-12-19T08:56:43.133 に答える