2015-09-15 45 views
1

我想了解与DataSource ObjectJNDI API建立数据库连接。在IntelliJ中使用DataSource,JNDI API

我正在使用Intellij UE,并且有一个本地Tomcat-8Postgres-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

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

Oracle文档说:

随着设置的属性,系统管理员可以注册一个JNDI(Java命名和目录接口)命名服务的BasicDataSource对象。

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

  • 使用部署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文档并没有真正清楚一些点imho。

    回答

    2

    对于第二个问题,部署意味着您的数据源是在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

    希望得到这个帮助

    +0

    在上一篇教程中,我终于理解了用'JNDI'处理db连接。谢谢你,干杯! – jwi

    相关问题