2

私の質問は2つあります。最初に問題を説明し、次に、解決策がクラスローダーを実装することであると仮定して、Webアプリケーションでそれを実行する方法を説明します。

私の問題はこれです:私たちの会社は他の会社によって作られたフレームワークを使用しています。xmlファイルを使用してWebページを生成し、これらのxmlファイルは別のライブラリ(jarファイル)内にあります。これらのライブラリは頻繁に(毎週?)生成されるため、動的である必要はありませんでしたが、フィールドの数、収集する情報の種類(日時、コンボボックスなど)などを決定します。

今、私の会社から、これらのフィールドを動的に移動できるかどうかという質問が提案されました(動的とは、理想的には、ページを更新して、レイアウトに加えられた変更の影響を確認できることを意味します)。いくつかの予備テストを行ったところ、xmlを変更するとWebページに望ましい効果が得られることがわかりましたが、これらのxmlファイルはjarにあるため、2つの可能性があります。

  1. 私のWebアプリケーションの範囲外でjarを変更するツールを作成しますが、これは明らかに動的ではないことを意味します。さらに、ツールを管理するには、Webアプリケーションとは別にインターフェイスを作成する必要があります。さらに、これは信じられないほどハッキーなアプローチであり、このソリューションは絶対に避けなければならないという印象を揺るがすことができないようです。
  2. 私はクラスローダーを(具体的にgetResourceAsStreamは)実装し、デフォルトの動作を行うのではなく、そのようなxmlファイルをロードする呼び出しを見つけたら、元の情報に基づいてxmlファイルを生成し、必要に応じて情報を変更してから、リソースをに返します。呼び出し元(この場合はサードパーティのフレームワークになります)。

最初の質問は、#2が私の最善の選択肢ですか、それとも他の選択肢がありますか(または#1に固執する必要があります)?

2番目の質問は、独自のクラスローダーを実装する必要があると仮定して、Webアプリケーションでこれをどのように実行できるかということです。私はTomcat7を使用していますが、可能であれば、使用しているWebコンテナーに依存しないソリューションを使用したいと思います。

どんな助けでも大歓迎です!

4

2 に答える 2

1

おそらく、jarをクラスパス上にあるディレクトリに展開し、その場でXMLファイルを更新することができます。これは、アプリケーション内の内部キャッシングを考慮しません(もしあれば、それは別の問題です)が、実装するのは簡単で、シェナニガンで満たされたClassLoaderビジネスにあなたを入れません。

于 2012-05-08T21:24:59.023 に答える
0

あなたの質問を理解できるかどうかわかりません.しかし、あなたは思考ワークスのxstream apiを使用してみることができると思います.Javaオブジェクトを指定してその場でxmlを生成できます.この時点から、これらのxmlをあなたのやり方で扱うことができます.今すぐあなたのウェブページを生成します。私はこの答えが非常に些細なものであることを知っていますが、これが最小限の手間でxmlを生成する新しいアプローチに移行するのに役立つ新しいAPIにつながることができれば、それはあなたの目的をうまく果たしたと思います.

于 2012-05-08T20:47:25.300 に答える