需要指针|使用JDBCTemplate | CQ 5.5

时间:2013-04-18 08:39:22

标签: oracle11g osgi jdbctemplate cq5 osgi-bundle

我需要关于以下情况的一些指示/建议。

情境:

我们正尝试在JDBCTemplate中使用CQ 5.5来查询数据库(Oracle 11g)。作为第一步,我们有integrated CQ with Spring Framework。现在让JDBCTemplate使用它requires JDBC driver,它需要单独加载到CQ中,因为它不适用于Spring jar。我需要的是http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-112010-090769.html所需的jar,而我的案例中的jar是“ojdbc6.jar”,其中包含OracleDriver类( JavaDoc :* http://docs.oracle.com/cd/E11882_01/appdev.112/e13995/oracle/jdbc/OracleDriver.html *)需要注册驱动程序以创建与数据库的连接。

以下几点需要提出问题/建议:

  1. 由于oracle 11g是商业产品,因此没有可用的在线存储库(对于pom依赖项),我们需要为它创建一个单独的本地存储库。 (需要指点;还有其他方法吗?
  2. 上面提到的Jar不是OSGi。 那么在这种情况下如何处理?(我已按照此处提及的方向创建了OSGi包 http://cq-ops.tumblr.com/post/21893960212/how-to-turn-a-jdbc-driver-jar-into-an-osgi-bundle-jar
  3. 在将此jar转换为OSGi Bundle的过程中,我必须删除MANIFEST.MF文件中使用Imported Packages提到的版本。 (据我所知,CQ默认选择适用于任何类的最新版本,当可用的任何类的新版本与当前版本不兼容时,可能会出现问题。需要指针;应该是优先考虑?在任何项目中有没有人因此而面临任何问题
  4. 当前状态:

    将ojdbc5.jar转换为OSGi包;我能够使用JDBCTemplate。 但是要找一些指点来检查是否还有其他人在其他项目中遵循的方法来实现上述方案?

1 个答案:

答案 0 :(得分:0)

  1. oracle驱动程序未发布到任何公共maven仓库。所以你确实必须将jar放入你自己的maven repo

  2. 在Apache Karaf中有一个很好的功能,你可以在一个捆绑网址前面写一个包裹:它会使用bnd工具自动创建一个捆绑包。 如果CQ没有这样的功能,那么您必须自己创建捆绑包。在这种情况下,maven bundle插件可以帮助您。您可以使用maven依赖项依赖于oracle jar。然后,您可以为oracle jar的包定义导出。然后Bnd应该自动内联你的jar包中的类。另一种选择是maven shade插件。您可以查看servicemix包的来源。在那里你会发现poms捆绑了很多普通的罐子。

  3. 不确定你究竟是什么意思。据我所知,oracle驱动程序没有任何外部依赖项。

  4. 我编写了一个DB tutorial for Apache Karaf来解释如何处理oracle驱动程序以及如何在不依赖具体驱动程序的情况下创建数据源。

    本教程中的解决方案不能在CQ中以1:1使用,但它肯定会给你一些指示。