对于XPage中的JDBC,服务器如何知道连接信息?

时间:2012-04-02 15:33:11

标签: jdbc lotus-notes xpages lotus-domino

好的,我有一个JAVA / JDBC人来看看我的JDBC问题,如http://stackoverflow.com/questions/9787525/jdbc-ordeal-it-shouldnt-be-that-difficult-partial-solved-new-errors中所述。似乎如果我把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名称或类似的东西。

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

任何帮助都将不胜感激。

MJ

2 个答案:

答案 0 :(得分:1)

有关如何连接到MS SQL的示例,请参阅http://www.openntf.org/internal/home.nsf/response.xsp?action=openDocument&documentId=7888655D70FDDD6186257930002E1D3F&MainID=D861DE698262EDDA86257930002AEE52。它可能会给你一些想法,因为对于任何RDBMS,JDBC或多或少都是相同的。具体请参见第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";
}

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

答案 1 :(得分:0)

MJ,

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

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