7

したがって、次の問題があります。背後にn台のサーバーがあるロードバランサーがあります。各サーバーには、同じearfile(異なるwar)内のpdf-builderプロジェクトと一緒にearにインストールされたpdfプロジェクト(war)があります。私は今、他の戦争からのpdfを読みたいと思います。

問題は次のとおりです。実行しているサーバーのIPアドレスがわからないため、DNSルックアップを使用すると、ロードバランサーを介して別のサーバーで終了する可能性があります。さらに、サーバー自体はpdf戦争プロジェクトのpdfファイルの場所にアクセスする権限を持つ有効なユーザーではないため、アクセス/セキュリティの制約に問題がある可能性があります。

耳の中の異なるモジュール/warファイル間で機能するgetResourceAsStream()のようなものを取得する方法はありますか?

4

5 に答える 5

5

.PDF を別の jar (pdf-builder.jar) に移動して、.EAR に入れることができます。.WAR ( META-INF/MANIFEST.MF) のマニフェストに次の行を追加します。

Class-Path: pdf-builder.jar

これで、クラス ローダーを使用して .PDF を読み込むことができます。これは J2EE 準拠です。

于 2012-05-25T09:32:30.443 に答える
3

現在のクラスパスにないリソースにアクセスするには、ファイルへの絶対パスを指定する必要があります。

あなたは呼び出すことができます

serverletContext.getRealpath("/");
サーバーノード(コンテキスト)までのパスを提供します。そこからファイルに移動できます。

もう1つの方法は、Jbossがブートストラップ中にいくつかの環境変数を使用(または設定)することです。これらのプロパティを使用して、現在のノードを取得できます(「デフォルト」など)。次の2つのプロパティにより、現在のサーバーノードへの絶対パスがわかります。

System.getProperty("jboss.server.base.dir") + File.separator + System.getProperty("jboss.server.name");
System.getenv('varname')getPropertyが機能しない場合に使用してください)。そこからナビゲートできます。 jbossが使用するシステム変数の完全なリストは次のとおりです

于 2012-05-24T10:40:41.237 に答える
3

WAR は、互いに分離することを目的としています。アプリケーション クラス ローダー (EAR レベル) の「上」を見ることはできますが、ピアのクラス ローダーにアクセスすることはできません。そのため、特定のアプリケーション サーバーで動作させる方法はあるかもしれませんが、そうすることはお勧めできません。運用チームの誰かが後で展開オプションを変更した場合、彼らはあなたがそのメカニズムに依存していることに気付かない可能性があり、(おそらく) 不可解な方法でアプリケーションを壊してしまうでしょう。

そのようなピア クラス ローダーにアクセスしようとすることは、Java EE に違反します (仕様の文字ではないにしても、少なくともその精神に違反します)。

アクセスのために静的コンテンツを別のサーバーに置くことができない場合は、少なくとも静的PDFをJARに入れ(他の人が提案したように)、EARに展開します。その場合は、宣言する WAR のマニフェスト ファイルに JAR エントリを追加することを忘れないでください (そうしないと、JAR がアプリケーション クラス ローダーに読み込まれません)。

于 2012-05-24T14:23:36.167 に答える
2
  1. あまり頻繁に展開しない場合は、.war.jar( ?) に変更します。.earたとえば、毎日再起動する場合は、サーバーの lib ディレクトリにあります。

  2. 戦争を展開しないで、ファイルを固定ディレクトリ、つまりrsyncにアップロードします。これは私の好みです。

  3. @Rp-が言ったように、おそらく解凍してください。

于 2012-05-24T10:58:28.830 に答える
0

私はこのような質問に答えるのに十分な経験がないことを知っているので、非常に大まかなスケッチで考えることができるのは、各 .war を異なるSpringコンテキストとして設定し、適切なマッピングを内部に設定して動的にロードすることだけです.スプリング MVC フレームワーク。

実行時に Spring コンテキストを動的にロードする

Spring リソースを依存 Jar としてロードする

Web リソース - 第 9 章 - Spring リファレンス

于 2012-05-24T23:44:12.953 に答える