2

Java JDK 1.6、Windows XP SP3 で Eclipse STS 2.7.2 に取り組んでいます。認証が必要なプロキシの背後で作業しています。

DS と Zookeeper ディスカバリーを使用して動作する 2 つの単純なクライアントとサーバーのプラグインを作成しました。これらは、3 番目のプラグインにバンドルされている IHello インターフェイスを参照しています。

サーバーは、192.16.23.28:6666/hello で呼び出されたときに文字列「hello」を返す単純な Hello サービスを公開し、VM 引数で Zookeper を開始します。

-Dzoodiscovery.dataDir=bla
-Dzoodiscovery.flavor=zoodiscovery.flavor.standalone=192.168.23.28:3030;clientPort=3031

xml は次のとおりです。

<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="NOLINKALLOWED" name="it.eng.test.remote.ds.helloservice">
<implementation class="it.eng.test.remote.ds.helloservice.HelloService"/>
<property name="service.exported.interfaces" type="String" value="*"/>
<property name="service.exported.configs" type="String" value="ecf.generic.server"/>
<property name="ecf.exported.containerfactoryargs" type="String" value="ecftcp://192.168.23.28:6666/hello"/>
<service>
<provide interface="it.eng.test.remote.ds.hello.IHello"/>
</service>
</scr:component>

クライアントは、VM 引数を使用して Zookeeper を開始します

-Dzoodiscovery.autoStart=true
-Dzoodiscovery.flavor=zoodiscovery.flavor.standalone=192.168.23.28:3031;clientPort=3030

どちらの場合も、OSGi フレームワークは-console -consoleLog -clean引数で開始されます。

次に、サーバーとクライアントの両方に 2 つの個別の実行構成を作成し (Run as-> run configuration..)、必要なすべてのバンドル (最も重要なもの:org.eclipse.ecf.provider.remoteserviceorg.eclipse.ecf.provider.zookeeper) とそれらの依存関係を追加しました。

その構成に基づいて、クライアントとサーバーの両方に対して 2 つの別個の製品構成 (新規 -> 製品定義 -> 実行構成の選択) を定義しました。

ここで、それぞれの製品構成内の [Launch an Eclipse application] リンクをクリックしてそれらを実行すると、すべてが機能します。サーバーはサービスを公開し、クライアントはそれを取得して出力に「Hello」を表示します。netstat -a | grep 6666誰かがそのポートでリッスンしていることをnetstat -a | grep 30示し、ポート 3030 と 3031 が使用されていることを示しています。

Eclipse はプロキシを正しく使用するように構成されています。

前述の構成 (エクスポート -> Eclipse 製品 -> 製品構成の選択) に基づいてそれらを Eclipse 製品としてエクスポートすると、クライアントとサーバーの 2 つのフォルダーが作成されます。

config.iniそれらの内部には、フレームワーク ( ) と VM ( ) の両方の構成ファイルを含む、外部 OSGi フレームワーク内でアプリケーションを実行するために必要なすべてが含まれていますeclipse.ini

アプリケーションが開始STS.exe -consoleされ、必要なすべてのバンドルがインストールされて開始された OSGi コンソールが開きます。

サーバーを起動すると、誰かが 6666 をリッスンし、Zookeeper がサービスが公開されたことを報告しているのが見えます。

クライアントを起動しても何も起こりません。出力なし、3030 と 3031 の接続なし、エラーなし。それは単に何もしませんが、飼育係は発見を開始したと言います。

IP の代わりに localhost を使用しても何も変わりません。Eclipse 内では機能しますが、外部では機能しません。

4

1 に答える 1

1

エクスポートされたアプリケーションの構成は./eclipse.iniに保存され、OSGiフレームワークの構成は./configuration/config.iniにありました。

eclipse.iniには、zookepeerが機能するためにJavaVMに必要なパラメーターが含まれていました。

-consoleLog
-console
-clean
-vmargs
-Declipse.ignoreApp=true
-Dosgi.noShutdown=true
-Dzoodiscovery.autoStart=true;
-Dzoodiscovery.flavor=zoodiscovery.flavor.standalone=localhost:3031;clientPort=3030

アプリケーションの起動は問題ありませんでしたが、そのファイルは読み取られませんでした。

次のようにアプリケーションを手動で起動します。

java -Dzoodiscovery.autoStart=true; -Dzoodiscovery.flavor=zoodiscovery.flavor.standalone=192.168.23.28:3031;clientPort=3030 -jar org.eclipse.osgi_3.7.0.v20110613.jar -console -configuration c:\temp\zooc\configuration\

すべてのjarファイルが機能した./plugins内から。

Eclipseによって自動的に作成された.exeが、その構成ファイルを読み取るように適切に構成されていなかったと思います。

于 2012-01-13T11:34:53.390 に答える