在 IntelliJ 中使用 DataSource、JNDI API

Working with DataSource, JNDI API in IntelliJ

我正在尝试了解如何使用 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 文档说:

With the properties set, the system administrator can register the BasicDataSource object with a JNDI (Java Naming and Directory Interface) naming service.

所以我的第一个问题是:注册 DataSource 意味着什么?我上面的代码是否已经将 DataSource Object 注册为 JNDI

  1. 使用部署DataSource Object

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

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

Oracle 文档说:

After a basic DataSource implementation is deployed by a system administrator, it is ready for a programmer to use.

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

如果有人对这个问题有详细的逐步说明,我将不胜感激,事实上,恕我直言,Oracle 文档在某些方面并不清楚。

对于第二个问题,部署意味着你的数据源是在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 部分,为此您可以观看此 link http://www.javapractices.com/topic/TopicAction.do?Id=127

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

希望对您有所帮助