3

RMI を使用する webstart アプリケーションを配布したいと考えています。

アプリケーションを配布しているWebサイトもRMIサーバーなので、ユーザーにRMIサーバーのアドレスを聞くのは避けたいです。

さらに、ビルド時にサーバーのアドレスがわからないため、アドホック構成でアドレスを JNLP に追加するか、実行時にアドレスを指定する必要があります。これは好ましい方法です: そうすることは可能ですか?

4

4 に答える 4

2

私は Java RMI を正確には使用していません (RMIのようなことを行うためにHessianバイナリ プロトコルを使用した Java Web Start のみを使用しました) が、少なくともサーバー アドレスを Web Start クライアント アプリに渡す部分は簡単なはずです。アプリケーションで JNLP ファイルを生成するときに、アドレスをプロパティとして追加します。

<jnlp>
  [...]
  <resources>
    [...]
    <property name="serverAddress" value="..." />
  </resources>
</jnlp>

次に、クライアント コードでそのプロパティを読み取ります。

String serverAddress = System.getProperty("serverAddress");

ここでは、アプリケーションを配布する Web サイトが独自のアドレスを知っていると仮定します :)

編集(ビルド時にアドレスがわからないという追加の制限あり):うーん、アプリを配布しているWebサイトは動的ですか静的ですか?

  1. 動的: JNLP 全体を (JSP ページまたは dom4j などを使用して) 動的に生成するか、「テンプレート」JNLP XML ファイルを読み取り、実際のサーバー アドレスを置き換えます。
  2. static: サイトを展開する人は、JNLP ファイルで正しいアドレスを手動で構成する必要があると思いますか?
于 2009-01-20T09:36:06.493 に答える
1

JDK には、JNLP ファイルに適切な値を挿入するサーブレットのソース コードが (samples/jnlp/servlet ディレクトリに) 含まれています。これを使用して、ホスト名を JNLP ファイルに挿入できます。

于 2009-02-27T13:04:17.913 に答える
0

jnlp で変数プレースホルダーを使用します。

...
<application-desc>
    <argument>{host}</argument>
    <argument>{port}</argument>
</application-desc>
...

そして、Interceptor サーブレットを使用して、JNLP がクライアントに提供されるときに実行時にこれらを置き換えます。

于 2009-01-20T10:35:33.080 に答える