0

現在のバンドルではなく、コモンズコンポーネントバンドルに含まれるBeanをシリアル化方式でアンマーシャリングしようとしています。

キャメルが私のBeanをアンマーシャリングしようとすると、次のエラーが発生します。

22:43:11,865 | エラー| nModule-thread-1 | DefaultErrorHandler | 89-org.apache.camel.camel-core-2.8.0.fuse-06-11 | exchangeIdの配信に失敗しました:ID-ITEM-64684-49962-1354223882336-2-1。配信試行後に使い果たされました:1がキャッチされました:java.lang.ClassNotFoundException:commons.InformationInput java.lang.ClassNotFoundException:commons.InformationInput at java.net.URLClassLoader $ 1.run(URLClassLoader.java:202)[:1.6.0_33] at java .security.AccessController.doPrivileged(Native Method)[:1.6.0_33] at java.net.URLClassLoader.findClass(URLClassLoader.java:190)[:1.6.0_33] at java.lang.ClassLoader.loadClass(ClassLoader.java: 306)[:1.6.0_33] http://stackoverflow.com/questions/6749334/osgi-bundle-access-spring-context-file-from-another-bundle at java.lang.ClassLoader.loadClass(ClassLoader.java: 247)[:1.6。

Beanを含むバンドルが正しく開始され、バンドル定義のExport-Packageでcommonsパッケージを定義しました

誰かがそのようなことをなんとかしましたか?

4

3 に答える 3

1

これは、クラスをシリアライズ/デシリアライズしているバンドルが、どのパッケージをインポートする必要があるかを事前に認識していない場合に発生することがあります。

1 つの回避策は、 DynamicImport-Packageを使用することです。例えば:

DynamicImport-Package: *

これは、バンドルが任意のパッケージのクラスをインポートできることを意味しますが、コストに注意してください (リンクされた記事を参照)。

于 2012-12-03T12:19:55.623 に答える
0

キャメルコアバンドルでdynamicimportを有効にすることで、うまくいきました。これはkarafコンソールで行うことができます:dev:dynamicimport <camel-core-bundle-id>

于 2012-12-03T14:16:42.737 に答える
0

これは、Hibernate の問題が OSGi 環境で発生し、クラスのロードの問題が原因で失敗するのと似ています。クラスバディローディングをクラス化することをお勧めします。クラスを含むコモンズバンドルのマニフェストにこれを追加します

Eclipse-BuddyPolicy:registered

次に、依存バディで、依存バンドルとして追加されていることを確認し、これをマニフェストに追加します。

Eclipse-RegisterBuddy:com.nameofmycommonbundle

これで問題が解決するはずです。

これは、休止状態の参照への参照です

于 2012-12-01T16:46:38.833 に答える