【问题标题】:Configure JDBC Data Source for use with JNDI and Tomcat 6 in JSF 2 project在 JSF 2 项目中配置 JDBC 数据源以与 JNDI 和 Tomcat 6 一起使用
【发布时间】:2013-07-03 10:39:51
【问题描述】:

我正在开发一个使用 JSF 2 的 Web 应用程序,该应用程序将部署在 Tomcat 6 中。我需要使用 JNDI 访问 HSQLDB 数据源。我无法修改 Tomcat 的 server.xml 文件,也无法修改任何其他“Tomcat 文件”。我看过各种关于这个的教程和解释,但都包括关于修改server.xml等的步骤,在这种情况下是不允许的。我的问题是,是否可以在不修改 Tomcat 文件的情况下完成此操作(即仅更改 META-INF 和 WEB-INF 中的文件,例如 web.xml,以及要部署在 .war 文件中的其他文件?如果是这样,哪个文件需要修改,如何修改?这是我第一次通过 JNDI 设置对数据库的访问,响应越详细越好。谢谢。

【问题讨论】:

    标签: java jsf-2 jdbc tomcat6 jndi


    【解决方案1】:

    看看Apache Tomcat JNDI How-To

    在那里你可以读到你只需要在 META-INF 中修改/创建项目 context.xml 和在 WEB-INF 中 web.xml ...

    通过添加声明来配置 Tomcat 中的 JNDI 数据源 你的资源到你的上下文。

      <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
                   maxActive="100" maxIdle="30" maxWait="10000"
                   username="javauser" password="javadude" driverClassName="com.mysql.jdbc.Driver"
                   url="jdbc:mysql://localhost:3306/javatest"/>
    

    现在为此测试应用程序创建一个 WEB-INF/web.xml。

      <resource-ref>
          <description>DB Connection</description>
          <res-ref-name>jdbc/TestDB</res-ref-name>
          <res-type>javax.sql.DataSource</res-type>
          <res-auth>Container</res-auth>
      </resource-ref>
    

    【讨论】:

    • 我建议您阅读How to Answer,尤其是:为链接提供上下文: 始终欢迎提供潜在解决方案的链接,但请添加链接周围的上下文,以便您的其他用户知道它是什么以及它为什么在那里。始终引用重要链接中最相关的部分,以防目标站点无法访问或永久离线。
    • @BackSlash 我希望它现在满足要求!?
    • 这有帮助。我已将必要的文件/代码添加到我的项目中,并且(可能)取得了成功。我还需要做更多的测试。但是,我有一个后续问题。我使用了您发布的代码,并进行了更改以使其适合 HSQLDB。当我试图通过Context initialContext = new InitialContext(); 然后DataSource ds = (DataSource)initialContext.lookup("jdbc/TestDB"); 获得连接时,我得到了一个 NamingException 告诉我找不到该名称。但是当我乍一看.lookup("java:comp/env/jdbc/TestDB") 时,它似乎找到了这个名字。为什么?
    • 如 apache howto 中所述:“以编程方式访问数据源时,请记住将 java:/comp/env 添加到您的 JNDI 查找中”。如果您想知道原因,我建议您进一步阅读操作指南和有关 Context 容器的页面。
    • 我一定错过了那部分。我再看看。感谢您的链接和答案。
    猜你喜欢
    • 2011-08-25
    • 1970-01-01
    • 2014-04-01
    • 1970-01-01
    • 2016-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-27
    相关资源
    最近更新 更多