0

我尝试通过 DatabaseSource JNDI 查找建立数据库连接。我按照 Tomcat 网站中的说明进行了如下操作

我将资源添加到 context.xml

<Resource name="jdbc/myDB" auth="Container"
          type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver"
          url="jdbc:oracle:thin:111.111.111.111:1234:DBNME"
          username="Dobby" password="pwd" maxActive="20" maxIdle="10" maxWait="-1"/> 

web.xml

 <resource-ref>
    <description>MY DataBase</description>
    <res-ref-name>jdbc/myDB</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
    </resource-ref>

在代码中

  Context initContext = new  InitialContext();
                DataSource ds = (DataSource)initContext.lookup("java:/comp/env/jdbc/myDB");
                Connection con =  ds.getConnection();  

如果连接失败,我想显示带有 DB URL 的错误消息。如何在我的代码中获取 context.xml 中配置的 DB URL

4

2 回答 2

1

正如您在 apache 示例中所注意到的,有一个名为 MyBeanFactory 的类。在这个类中,您可以从 context.xml 文件中获取资源。

您需要在 servlet 中检查连接是否建立。如果未建立连接,则使用 setter/getter 方法从 context.xml 中获取 URL 的值,并显示带有 URL 的错误消息。

我对服务器的 IP 地址做同样的事情并取得了成功。:D

希望这可以帮助...

于 2013-03-18T13:59:40.407 回答
0

我不认为这是可能的,您实际上使用 JNDI 来独立于这些细节,您唯一拥有的并且可以在错误消息中输入的是 ressource 的名称"java:/comp/env/jdbc/myDB"。进行管理/配置的人会知道这个名称所指的女巫数据库详细信息。

通常,应用程序的开发人员只需定义资源的名称并将其传递给 Appserver-admin。但是在开发过程中,您必须/可能同时扮演这两个角色。

编辑

如果您打算仅使用接口DataSource ,这是当然的。

如果您想针对特定的 DBMS,您可以查看 jdbc 驱动程序提供的该接口的实现。例如,这里是 DataSource 的 Oralce 实现:OracleDataSource,更多信息在这里

于 2013-03-14T13:50:48.720 回答