0

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

设想:

我们正在尝试使用JDBCTemplateinCQ 5.5来查询数据库 ( Oracle 11g)。作为第一步,我们有integrated CQ with Spring Framework. 现在要让 JDBCTemplate 工作,它requires JDBC driver需要单独加载到 CQ 中,因为 Spring jar 不提供它。所需的 jar 可在此处获得http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-112010-090769.html ,在我的情况下 jar 是“<code>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 会选择可用于任何类的最新版本,当任何类的新版本与当前版本不兼容时,可能会出现问题。需要指针;是否应该优先考虑?有没有人在任何项目中遇到过任何问题

当前状态:

通过将 ojdbc5.jar 转换为 OSGi 包;我能够使用 JDBCTemplate。但是寻找一些指针来检查是否有人在其他项目中遵循了其他方法来实现上述场景?

4

1 回答 1

0
  1. oracle 驱动程序未发布到任何公共 maven 存储库。所以确实你必须把罐子放进你自己的maven repo

  2. 在 Apache Karaf 中有一个不错的功能,您可以在其中编写 wrap: 在包 url 前面,它会使用 bnd 工具自动动态创建包。如果 CQ 没有这样的功能,那么您将不得不自己创建捆绑包。在这种情况下,maven bundle 插件可以帮助你。您可以使用 maven 依赖项来依赖 oracle jar。然后您可以为 oracle jar 的包定义导出。然后,Bnd 应该会自动内联捆绑 jar 中的类。另一种选择是 maven shade 插件。您可以查看 servicemix 捆绑包的来源。在那里你可以找到捆绑许多普通罐子的 pom。

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

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

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

于 2013-04-18T13:38:33.763 回答