【问题标题】:Working with DataSource, JNDI API in IntelliJ在 IntelliJ 中使用 DataSource、JNDI API
【发布时间】:2015-12-11 11:02:36
【问题描述】:

我正在尝试了解如何使用 DataSource ObjectJNDI API 建立数据库连接。

我正在使用 Intellij UE,并且正在运行本地 Tomcat-8- 和 Postgres-Server

我按照 Oracle Java 文档中的说明进行操作:

  1. 创建DataSource Class 的实例并设置其属性

    org.postgresql.ds.PGSimpleDataSource dataSource = new org.postgresql.ds.PGSimpleDataSource();
    dataSource.setServerName("localhost");
    dataSource.setDatabaseName("db01");
    dataSource.setUser("jwi");
    dataSource.setPassword("password");
    
  2. 向使用JNDI API 的命名服务注册DataSource Object

    Context ctx = null;
    
    try {
        ctx = new InitialContext();
        ctx.bind("jdbc/localDB", dataSource);
    } catch (NamingException e) {
        e.printStackTrace();
    }
    

Oracle 文档说:

通过设置属性,系统管理员可以使用 JNDI(Java 命名和目录接口)命名服务注册 BasicDataSource 对象。

所以我的第一个问题是:注册DataSource 是什么意思?我的代码是否已经注册了DataSource ObjectJNDI

  1. 使用已部署的DataSource Object

    try {
    
        Context ctx = new InitialContext();
        DataSource ds = (DataSource) ctx.lookup("jdbc/localDB");
        dbCon = ds.getConnection();
        ...
    

在这段代码中,IntelliJ 总是声称它无法解析方法getConnection()

Oracle 文档说:

在系统管理员部署了基本的 DataSource 实现之后,就可以供程序员使用了。

所以我的第二个问题是:在这种情况下部署到底意味着什么?创建DataSource Instance 并使用JDNI 执行注册?或者部署意味着Tomcatcontext.xmlweb.xml配置(Tomcat 8 JNDI How-To)?

如果有人对此问题有良好的分步说明,我将不胜感激,事实上,Oracle 文档对某些要点并不十分清楚。

【问题讨论】:

    标签: java postgresql tomcat datasource jndi


    【解决方案1】:

    对于第二个问题,部署意味着你的数据源是在tomcat的context.xml中声明的。 这是一个 oracle 数据库的示例(您必须更改 postgres 的驱动程序):

    <Resource name="jdbc/myoracle" auth="Container"
                  type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver"
                  url="jdbc:oracle:thin:@127.0.0.1:1521:mysid"
                  username="scott" password="tiger" maxTotal="20" maxIdle="10"
                  maxWaitMillis="-1"/>
    

    之后,您可以编写java部分,为此您可以观看此链接http://www.javapractices.com/topic/TopicAction.do?Id=127

    对于一个完整的例子,这里有一个很好的教程http://alvinalexander.com/blog/post/java/how-configure-tomcat-dbcp-connection-pool-pooling-postgres

    希望有帮助

    【讨论】:

    • 通过上一个教程,我终于明白如何使用JNDI 处理数据库连接。谢谢你,干杯!
    猜你喜欢
    • 2015-09-11
    • 1970-01-01
    • 2012-02-29
    • 1970-01-01
    • 2016-05-01
    • 2015-03-18
    • 1970-01-01
    • 2014-04-24
    • 1970-01-01
    相关资源
    最近更新 更多