1

XMLを受け取り、それにXSLTを適用してHTMLを生成するJavaEEアプリケーションがあります。このプロセスは、カスタムサーブレットで発生します。これは通常、特定のWebページにコンテンツの一部を作成するために使用されます。実際のデータはすでにXMLとして保存されているため、サーブレットで変換を行うのは理にかなっています。

これは実際には、 CruiseControlがレポートを作成する方法をモデルにしています。サーブレットは生成されたHTMLをキャッシュして、毎回変換のコストが発生しないようにします。XSLファイルを表すDOMもメモリにキャッシュされます。

現在、XSLTはWARファイル内にデプロイされています。WARファイルにデプロイされたデフォルトのXSLTをサポートするだけでなく、アプリ全体を再デプロイせずにXSLTのみを更新する機能もサポートしたいと思います。この種の問題を解決するための良いアイデアを持っている人がいることを願っています。


アップデート

私が受け取ったコメントから、これを行うためのサーバー固有の方法がいくつかあることがわかりました。しかし、私はそれをより一般的な方法で解決したいと思っています。次の機能を維持できることを確認する必要があります...

  1. 新しいXSLTが検出されたら、XSLT自体をキャッシュします(新しいバージョンが検出されるまで)
  2. 生成されたHTMLのキャッシュされたバージョンを保持し、新しいXSLTがあるときにそれらを更新します。
4

1 に答える 1

2

XSLTをwarファイル内に配置するのではなく、構成可能なxslt-folderをwar外に配置することを選択します。「構成可能」とは、Webアプリケーションにxslt-folderのパスを通知する構成ファイル(プロパティまたはその他の形式)があることを意味します。次に、そのフォルダーのコンテンツを定期的に監視し、XSLTが変更された場合は、対応するキャッシュを無効にし、XSLTを再ロードして、新しいキャッシュの使用を開始します。操作のアトミック性にも注意する必要があります。キャッシュを無効にしてXSLTをリロードすると、そのXSLTによって生成されたコンテンツに対する進行中のサービス要求が中断される可能性があります。

于 2011-03-28T08:19:11.400 に答える