1

Resin Java サーバーには、ザクロ ( http://www.caucho.com/projects/pomegranate/ ) と呼ばれる優れた機能があり、さまざまな jar 依存関係をサーバーのディレクトリ (project-jars/) に置くだけで、それらをロードしてpom.xml ファイルからの web-app。

質問: jar を resin の project-jars に配置するにはどうすればよいですか? (コピーしただけではダメ)

詳細:

プロジェクトのpom.xmlファイルですべての依存関係が構成された、mavenを使用した作業プロジェクトがあります。webapp war などを構築できます。

jar ファイルは、この特定の Web アプリ用に maven によって生成されたため、resin の project-jars/ にコピーしました。

war を展開すると、resin は pom.xml を検出し、依存関係を解決しようとします。残念ながら、そのリポジトリ (project-jars) にアーティファクトが見つかりません。

これは、そこに置いたすべての jar ファイルに META-INF/maven/pom.xml ファイルがパックされていないためだと思います。これらは、maven によってダウンロードされたような通常の jar です。

ザクロの Web サイトでは、resin が project-jars をスキャンして pom.xml ファイルを含む jar を探し、そのバージョンを特定すると述べています。

pom.xml ファイルを含む jar を作成するにはどうすればよいですか?

または、foo-bar-1.0.pom ファイルを devel マシンのリポジトリからレジンの project-jars ディレクトリに手動でコピーする必要がありますか? (これは、すべての自動魔法の目的を打ち負かします)

ご回答ありがとうございます、

よろしくお願いします

ホレス

4

1 に答える 1

2

Pomegranate Draft 仕様についての私の理解は次のとおりです。

サーブレット コンテナーは、ザクロを の拡張機能として使用できWEB-INF/lib、次の利点があります。

  • 共通のリポジトリで .jar ファイルを共有し、管理を簡素化し、.war のサイズを縮小
  • サブモジュールの非互換性を処理する機能を含む、ライブラリの依存関係の解決
  • 現在の開発プラクティスを活用するための使い慣れた Maven pom.xml ファイル。
  • オプションのサーブレット Web アプリ コンテナーとの統合
  • Java CanDI (JSR-299) マネージャーとのオプションの統合

[...]

WEB-INF/pom.xmlWeb アプリには、Web アプリ自体の依存関係を宣言するオプションが含まれる場合があります。

したがって、戦争で依存関係を「提供済み」としてマークし、それらをResinにデプロイするためpom.xmlに追加するという考えだと思います。WEB-INF/pom.xml私はこれをテストしていないので、間違っているかもしれません。

実際、このザクロは面白そうですが、今のところ完全にはわかりません。私はその利点を理解していますが、大きな欠点である WAR を移植できないように思われます。もう少し掘り下げます…

(編集:以下のOPからのコメントへの回答を入れています)

正直なところ、仕様のドラフトはあまり明確ではありません。ただし、Caucho のブログに次のザクロ モジュールの投稿があり、Web アプリケーションで動作させる方法がもう少し詳しく説明されています。

Pomegranate は、エンタープライズ アプリケーションの観点から、モジュールのバージョン管理とクラスローダーの問題を解決するように設計されています。舞台裏でクラスローダーの魔法を少し実行していますが、開発者の視点はかなりシンプルでクリーンです。

  1. .war から jar を削除します
  2. それらを Resin の project-jars ディレクトリにドロップします
  3. Maven pom ファイルで jar の依存関係を宣言する
  4. それらをWEB-INF/pom.xmlまたはresin-web.xmlでWebアプリにインポートします

少なくとも、私はこれらの手順を理解しており、あなたの質問に答えています。jar を手動で Resin の project-jars ディレクトリにドロップする必要があります。それは私が期待していたものではありませんが、ザクロが何であるかを誤解していたと思います. 私が間違っていなければ、ザクロはOSGIの一種の代替品であり、モジュールのバンドルとクラスローディングブードゥーに関するものです。依存関係を説明するために Maven の規則を使用していますが、依存関係の管理に関するものではありません。

于 2009-11-03T01:10:15.143 に答える