EJB3、seam コンポーネント、Spring Bean、および JSF を使用して構成されたかなり典型的な JavaEE アプリケーションがあり、それらはすべて ear ファイル内の複数の jar ファイルおよび war ファイルにパッケージ化されています。当然 JavaEE の場合、アプリケーションの一部として多くの XML ファイルがあります。これらの XML ファイルの一部は、DTD (seam) を使用して検証され、一部はスキーマを使用して検証されます。
例や他のプロジェクトから取得したほとんどのファイルと同様に、すべての DTD とスキーマは、デフォルトの DTD またはスキーマが存在するプロジェクトのサイトを参照します。ここで問題が発生します: なんらかの理由で、現在 JBoss サイトに Seam DTD がありません ( http://www.jboss.com/products/seam/components-1.1.dtd、http://www.jboss.com/productsを確認してください)。 /seam/components-1.2.dtd、http://www.jboss.com/products/seam/components-2.0.dtd )。JBoss サーバーはこの場所を使用してブートストラップで XML を検証するため、アプリケーションのデプロイは失敗しました。
私の質問は次のとおりです。この場合、DTD と定義ファイルをどこに置くべきですか? 次の 3 つのオプションが表示されます。
- 前に行ったように、デフォルトの場所を使用します。アプリケーションを再デプロイする必要がある場合に備えて、JBoss、Sun、Spring、およびその他のベンダーの安定性をシステムに追加することを意味するため、そうしないことを好みます。
- すべての DTD ファイルとスキーマ ファイルを自分のサーバーにコピーし、URL が自分の管理下にあるサーバーを指すようにします。
- すべての DTD ファイルとスキーマ ファイルをアプリケーションまたはアプリ サーバーにコピーし、ローカルで使用します。
ネットワークに依存せずにファイルを完全に制御できるため、オプション #3 を使用する傾向があります。私たちが行ったテストでは、サーバーのブートストラップ時間も大幅に短縮されました。明らかに、XML パーサーは定義をキャッシュしていません。この道をたどって何か見逃していることはありますか?