2011-01-10 7 views
1

Eclipse RCPとRMIを組み合わせようとしています。 (括弧内の依存関係がある)Eclipse RCP、RMIおよびバンドル

  • コア::クライアントとサーバーのためのインタフェース
  • サーバー(コア):その目的のために、私は6つのバンドルを作成したサーバーの実装とレジストリスタートクラス
  • ServerApp(サーバー):基本的には、レジストリのスターターをインスタンス化(およびアクティベーション上でそれを起動する)GUIクライアント
  • クライアント(コア):クライアント実装
  • ClientApp(クライアント):GUIクライアント

は、今私はserverappを始めたが、私は

Caused by: java.lang.ClassNotFoundException: core.rmi.CallbackServerInterface (no security manager: RMI class loader disabled) 

を得た今、私は(私のjava.policyファイルは、コアプラグインである)

-consoleLog -Djava.security.policy=java.policy -Djava.rmi.server.codebase=file:${workspace_loc}/core/ 

でサーバーを開始しました。 問題はクラスパスだと思った。サーバー・バンドルマニフェストファイルで

Eclipse-BuddyPolicy: registered 
コアバンドルマニフェストファイルの

Eclipse-RegisterBuddy: core 

:だから私は、コアと、サーバーの仲間を作りました。 私はまったく同じエラーがあったので、助けになりませんでした。

誰も私がこの1つで間違っていた可能性があることを知っていますか?

答えて

1

明らかに問題は、OSGIが独自のClassloaderを使用していることです。したがって、私たちは名前付けバインドを行う前に、次のものを必要とします。

Thread.currentThread().setContextClassLoader(
        this.getClass().getClassLoader()); 

この後、サーバーはチャームのように動作し、クライアントは接続できます。