4

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.dtdhttp://www.jboss.com/productsを確認してください)。 /seam/components-1.2.dtdhttp://www.jboss.com/products/seam/components-2.0.dtd )。JBoss サーバーはこの場所を使用してブートストラップで XML を検証するため、アプリケーションのデプロイは失敗しました。

私の質問は次のとおりです。この場合、DTD と定義ファイルをどこに置くべきですか? 次の 3 つのオプションが表示されます。

  1. 前に行ったように、デフォルトの場所を使用します。アプリケーションを再デプロイする必要がある場合に備えて、JBoss、Sun、Spring、およびその他のベンダーの安定性をシステムに追加することを意味するため、そうしないことを好みます。
  2. すべての DTD ファイルとスキーマ ファイルを自分のサーバーにコピーし、URL が自分の管理下にあるサーバーを指すようにします。
  3. すべての DTD ファイルとスキーマ ファイルをアプリケーションまたはアプリ サーバーにコピーし、ローカルで使用します。

ネットワークに依存せずにファイルを完全に制御できるため、オプション #3 を使用する傾向があります。私たちが行ったテストでは、サーバーのブートストラップ時間も大幅に短縮されました。明らかに、XML パーサーは定義をキャッシュしていません。この道をたどって何か見逃していることはありますか?

4

2 に答える 2

0

いいえ、これは正しいことです。最初のものはコードをいじったり遊んだりするためにのみ使用する必要があり、深刻なことには使用しないでください。2番目のものは3番目のものよりも利点がなく、同時により複雑です。

于 2009-04-20T20:17:30.570 に答える
0

本当の問題は、xml ファイルを検証する必要が本当にあるのかということです。ほとんどの場合、検証は本番コードでは行われません。ほとんどの場合、処理が遅すぎます。

本当に検証したい場合は、オプション #3 を選択してください。

于 2009-04-22T16:26:48.940 に答える