我有一个基于maven + spring的应用程序,我在Servicemix中构建和部署。
但是,当尝试启动捆绑包时,它会在生成以下异常之前保持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
感谢任何帮助或建议。
答案 0 :(得分:1)
如果您引用的服务在启动时不可用,则Spring Extender会暂停应用程序的启动(将其状态设置为 Waiting )。原因是每个引用的服务的 availability 属性设置为强制,并且 有一个 default-timeout 全局属性,默认情况下设置为5秒。如果您所指的服务没有出现在那段时间内,Spring Extender会抛出一个类似的例外情况。 所以我认为DataSource的服务发布有问题。您的其他应用程序中是否有相应的标签?
<osgi:service ...>
点击此链接:http://static.springsource.org/osgi/docs/2.0.0.M1/reference/html/service-registry.html。它包含很多例子。确保在 osgi:service 和 osgi:reference 中都设置了 javax.sql.DataSource 接口。并注意不要通过2个不同的捆绑包发布相同的界面。
还有一件事:为了确保,请在清单中导入 javax.sql 包:
<Import-Package>javax.sql</Import-Package>
希望这有帮助,Gergely