【问题标题】:How to get the resource elements through context object如何通过上下文对象获取资源元素
【发布时间】:2013-03-14 13:34:48
【问题描述】:

我尝试通过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

【问题讨论】:

  • 您能解释一下接受的答案是如何解决您的问题的吗?我有你的确切问题,但我没有看到答案中给出的 bean factory 是如何相关的。你最终找到并解析了实际的 xml 文件吗?

标签: java jakarta-ee tomcat jndi


【解决方案1】:

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

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

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

希望这会有所帮助...

【讨论】:

    【解决方案2】:

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

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

    编辑

    当然,如果您打算只使用接口DataSource

    如果您想针对特定的 DBMS,您可以查看 jdbc 驱动程序提供的该接口的实现。下面是 DataSource 的 Oralce 实现示例:OracleDataSource,有关它的更多信息here

    【讨论】:

      猜你喜欢
      • 2020-12-24
      • 2021-11-12
      • 1970-01-01
      • 2017-08-09
      • 2012-06-10
      • 2010-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多