对javax.sql.DataSource的不满意依赖

时间:2013-07-29 20:43:09

标签: spring maven apache-servicemix

我有一个基于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

感谢任何帮助或建议。

1 个答案:

答案 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