OSGi(Equinox)とGWTを統合して、残りのモジュラーシステムにWebベースのUIを提供しようとしています。これまでは、GWTサーブレットをOSGiモジュールに埋め込むことができました。OSGiバンドルにGWTを統合しようとしています
Eclipse GWTプラグインで生成されたGWTサンプルコードプロジェクトを使用しています。このプロジェクトは、クライアント、サーバー、および共有の3つのパッケージで構成されています。サーバーパッケージ(ui.server.GreetingServiceImpl
)のクラスは、クライアントパッケージ(ui.client.GreetingService
)のインターフェイスを実装しており、すべてが同じバンドルに含まれています。
私はクライアント側のWebページからのリモートプロシージャコールを作成しようとすると、私はエラーを取得する:
IncompatibleRemoteServiceException: Could not locate requested interface 'ui.client.GreetingService' in default classloader
私はクラスがクラスローダによって発見されなかったことを集めるが、私はしないでくださいこれを修正する方法を知っている。他のバンドルのクラスにアクセスするには、それらを要求またはインポートすることでアクセスできますが、実装クラスと同じバンドルにあるインターフェイスはアクセスできません。誰かが私を正しい方向に向けることができますか?私は何時間もグーグルで遊んでいた。
返信いただきありがとうございます。私はそれを動かすことができた、私は気づいていなかった循環的な依存関係があったことが分かりました。インターフェイスはバンドルの外側から、GWTの包み込まれたバンドルを含むバンドルによってアクセスされていました。私は 'Eclipse-RegisterBuddy:GWT-bundle'行を私のUiバンドルのマニフェストファイルに追加し、GWTバンドルのマニフェストへの' Eclipse-BuddyPolicy:registered'行を追加することで修正しました。あなたがリンクしたプロジェクトを見ていきます。 – clangenhoven