答案 0 :(得分:0)
您应该像处理不使用OSGi时那样处理意外异常。
您应该使用连接池并将其注册为OSGi服务。它将为您处理连接失败。即使在使用该连接期间出现异常,您也必须始终关闭连接。 (在java 6之前的finally块中,在java 7之后使用try-with-resources块)。连接池通过实现DataSource接口提供其功能。
有许多连接池。你可以谷歌为他们。
我基于commons-dbcp实现了两个OSGi组件。一个用于池化常规DataSource,另一个用于池化XADataSources。该组件选择原始的DataSource / XADataSource OSGi服务,而不是注册新的池数据源OSGi服务。
您可以在此处找到该模块的来源:https://github.com/everit-org/commons-dbcp-component
可在maven-central这里找到:http://search.maven.org/#artifactdetails%7Corg.everit.osgi%7Corg.everit.osgi.jdbc.commons.dbcp%7C2.0.1%7Cbundle
将jar放入OSGi容器后,您将在WebConsole的Configuration页面上看到组件的配置可能性(如果您有webconsole)。