0

OSGi の新機能。春にosgiからサービスを受けようとしています。コードの Git リンク: https://github.com/shinevs/SpringIntegrationTest ClassCastException を取得しています。

java.lang.ClassCastException: com.bundle.Activator cannot be cast to com.myInterface.BundleInterface
    at com.osgi.OSGiLauncher.lambda$0(OSGiLauncher.java:39)
    at org.apache.felix.framework.EventDispatcher.invokeBundleListenerCallback(EventDispatcher.java:915)
    at org.apache.felix.framework.EventDispatcher.fireEventImmediately(EventDispatcher.java:834)
    at org.apache.felix.framework.EventDispatcher.run(EventDispatcher.java:1147)
    at org.apache.felix.framework.EventDispatcher.access$000(EventDispatcher.java:54)
    at org.apache.felix.framework.EventDispatcher$1.run(EventDispatcher.java:102)
    at java.lang.Thread.run(Thread.java:748)

Spring サービスから OSGi バンドル jar を初期化しようとしています。OSGi バンドルは、Activator というサービスを登録します。OSGi バンドルが初期化され、Activator が作成されると、Spring から Activator にアクセスしようとします。

注 : OSGi バンドルは別のモジュールであり、テスト目的でこのプロジェクトの一部として追加されています。Spring App は、OSGi バンドルを jar としてのみ必要とします。

実行方法: curl http://localhost:8080/osgi

直面している問題: Activator にアクセスしようとしているときに Spring アプリが ClassCastException をスローしている

これは、Spring と osgi のクラス ローダーが異なるためですか。フラグメントを実装しようとしましたが、それもうまくいきませんでした。

4

1 に答える 1