1

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

感谢任何帮助或建议。

4

1 回答 1

1

如果您引用的服务在启动时不可用,Spring Extender 会阻止应用程序的启动(将其状态设置为Waiting )。原因是每个引用服务的可用性属性都设置为强制,并且有一个默认超时全局属性,默认设置为 5 秒。如果您所指的服务在这段时间内没有出现,Spring Extender 将抛出一个与您一样的异常。所以我认为你的数据源的服务发布有问题。您的其他应用程序中是否有相应的标签?

<osgi:service ...>

查看此链接:http ://static.springsource.org/osgi/docs/2.0.0.M1/reference/html/service-registry.html 。它包含很多例子。确保在osgi:serviceosgi:reference中都设置了javax.sql.DataSource接口。并注意不要通过 2 个不同的包发布相同的接口。

还有一件事:为了确定,在清单中导入javax.sql包:

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

希望这会有所帮助,格格利

于 2013-07-31T08:55:53.237 回答