【问题标题】:For JDBC in XPages, how does the server know the connection information?对于 XPages 中的 JDBC,服务器如何知道连接信息?
【发布时间】:2012-04-02 15:33:10
【问题描述】:

好的,我让我们的一个 JAVA/JDBC 人员来看看我在 http://stackoverflow.com/questions/9787525/jdbc-ordeal-it-shouldnt-be-that-difficult-partial-solved-new-errors 中记录的 JDBC 问题。似乎如果我将 ojdbc14 作为 ConnectionName,我会收到此错误:

Error while reading the relational data
Error while loading connection ojdbc14
Error parsing XML stream
InputStream cannot be null

但是如果我把 ojdbc14.jdbc 作为 ConnectionName 我得到这个错误:

Error while reading the relational data
comp/env/jdbc/ojdbc14.jdbc

他似乎认为应该使用第二个版本,但是服务器上缺少一些配置,例如 JNDI 名称或类似的东西。

我需要有人确认其中一个或另一个是正确的格式,以及服务器端究竟需要做什么才能找到连接信息。

任何帮助将不胜感激。

乔丹

【问题讨论】:

    标签: jdbc lotus-notes xpages lotus-domino


    【解决方案1】:

    有关如何连接到 MS SQL 的示例,请参阅 http://www.openntf.org/internal/home.nsf/response.xsp?action=openDocument&documentId=7888655D70FDDD6186257930002E1D3F&MainID=D861DE698262EDDA86257930002AEE52。它可能会给您一些想法,因为 JDBC 对于任何 RDBMS 或多或少都是相同的。具体参见第 1 点。将 .jar 放入 plugins 文件夹是不够的。它需要作为插件。

    有关如何创建插件的说明,请参阅 http://www-10.lotus.com/ldd/ddwiki.nsf/dx/creating_an_xpages_library

    更新 我确实使用 H2 数据库引擎从头开始尝试过。以下作品:

    1) 我将 JDBC 驱动程序导入到 WebContent/WEB-INF/lib

    2) 我确实使用以下内容创建了 WebContent/WEB-INF/jdbc/h2.jdbc

    <jdbc>
        <driver>org.h2.Driver</driver>
        <url>jdbc:h2:tcp://localhost/~/test</url>
        <user>SA</user>
        <password></password>
    </jdbc>
    

    3) 创建一个包含以下内容的简单 Xpage。我用粗体部分标记了指定(2)中定义的连接。

    <xp:viewPanel rows="10" id="viewPanel1" var="user">
        <xp:this.facets>
            <xp:pager partialRefresh="true" layout="Previous Group Next"
                xp:key="headerPager" id="pager1">
            </xp:pager>
        </xp:this.facets>
        <xp:this.data>
            <xe:jdbcQuery connectionName="h2" sqlQuery="select * from test"
                var="jdbcData1" defaultOrderBy="id">
            </xe:jdbcQuery>
        </xp:this.data>
        <xp:viewColumn id="viewColumn1" columnName="id">
            <xp:this.facets>
                <xp:viewColumnHeader xp:key="header" id="viewColumnHeader1"
                    value="ID" sortable="true">
                </xp:viewColumnHeader>
            </xp:this.facets>
        </xp:viewColumn>
        <xp:viewColumn id="viewColumn2" columnName="name">
            <xp:this.facets>
                <xp:viewColumnHeader xp:key="header" id="viewColumnHeader2"
                    value="NAME" sortable="true">
                </xp:viewColumnHeader>
            </xp:this.facets>
        </xp:viewColumn>
    </xp:viewPanel>
    

    稍后将尝试在 Oracle 11g Express Edition 中重现它。

    更新 #2

    对于 Oracle 11 XE Release 2,它的工作原理完全相同,只有一个例外。我必须关注http://www-01.ibm.com/support/docview.wss?uid=swg21279509 才能授予以下权利:

    grant {
        permission java.lang.RuntimePermission "getClassLoader";
    }
    

    此外,由于 Domino 8.5.3 使用 Java 6,我按照 Oracle 文档中的建议使用了 ojdbc6.jar。当然,我最初的声明是以插件的形式将 Oracle JDBC 驱动程序添加到 Domino,因为这将允许您在每个 XPages 应用程序中使用它。

    【讨论】:

    • 我需要使用 ojdbc14.jar,但我需要重新编译插件并且它要求 JDBCProvider 接口。我在哪里可以找到那个?它是在我的客户端还是在服务器上?
    • 请参阅 openntf.org 上的以下讨论 openntf.org/internal/home.nsf/… 附有一个插件的骨架,您可以使用它来制作您的插件。确保您还阅读了其他回复,因为它们可能包含重要信息。
    【解决方案2】:

    乔丹,

    我刚找到这篇文章。通过添加 .jdbc 扩展名,我们似乎绕过了 DOM 解析器错误。您的 XML 现在没有抛出异常,但只是将 ojdbc14.jar 放在 Domino 服务器上不会在该服务器上创建 JNDI 名称。它只会将 Java 字节码放在 Oracle 连接所需的服务器上 - 代码部分,而不是配置。

    文件 ojdbc14.jdbc 包含服务器创建 JNDI 查找名称所需的所有信息,但您提到的在服务器上注册它的详细信息是我目前找不到的说明。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-23
      • 2016-04-28
      • 1970-01-01
      • 1970-01-01
      • 2021-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多