1

Servicemix で構築およびデプロイした maven + spring ベースのアプリケーションがあります。ただし、バンドルを開始しようとすると、Waiting次の例外を生成する前に長時間ステータスのままでした。

16:25:52,219 | DEBUG | Timer-0          | DependencyServiceManager         | startup.DependencyServiceManager  339 | 72 - org.springframework.osgi.extender - 1.2.0 | Deregistering service dependency dependencyDetector for OsgiBundleXmlApplicationContext(bundle= abc, config=osgibundle:/META-INF/spring/*.xml)
16:25:52,219 | ERROR | Timer-0          | WaiterApplicationContextExecutor | WaiterApplicationContextExecutor  432 | 72 - org.springframework.osgi.extender - 1.2.0 | Unable to create application context for [abc], unsatisfied dependencies: Dependency on [(objectClass=javax.sql.DataSource)] (from bean [&dataSource])
org.springframework.context.ApplicationContextException: Application context initialization for 'com.vetstreet.pet_mailer' has timed out

助けや提案をいただければ幸いです。

4

1 に答える 1

1

Spring Extender は、参照しているサービスが起動時に利用できない場合、アプリケーションの起動を保留します (ステータスをWaitingに設定します)。その理由は、参照されるすべてのサービスの可用性属性が必須に設定されており、デフォルトで 5 秒に設定されているdefault-timeoutグローバル属性があるためです。参照しているサービスがその時間内に表示されない場合、Spring Extender はそのような例外をスローします。ですから、DataSource のサービス公開に問題があると思います。他のアプリケーションに対応するタグがありますか?

<osgi:service ...>

このリンクをチェックしてください: http://static.springsource.org/osgi/docs/2.0.0.M1/reference/html/service-registry.html。多くの例が含まれています。osgi:serviceosgi:referenceの両方でjavax.sql.DataSourceインターフェースが設定されていることを確認してください。また、2 つの異なるバンドルで同じインターフェイスを公開しないことに注意してください。

もう 1 つ: 念のため、マニフェストにjavax.sqlパッケージをインポートします。

<Import-Package>javax.sql</Import-Package>

これが役に立てば幸いです、Gergely

于 2013-07-31T08:55:53.237 に答える