分享

OracleJNDI

 小傅哥 2021-12-13
import java.sql.SQLException;
 
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
 
import oracle.jdbc.pool.OracleDataSource;
 
public class OracleJNDI
{
  
  public OracleJNDI() throws SQLException
  {
  super();
  }
  /**
  * 使用sun提供的com.sun.jndi.fscontext.RefFSContextFactory作为JNDI服务器,
  * 其实这是使用文件系统来存储JNDI对象
  * @param args
  * @throws NamingException
  * @throws SQLException
  */
  public static void main(String[] args) throws NamingException, SQLException
  {
  
  //Properties ps = new Properties();
  //为系统设置jndi工厂
  System.setProperty(Context.INITIAL_CONTEXT_FACTORY,
  "com.sun.jndi.fscontext.RefFSContextFactory");
  //指定JNDI URL
  System.setProperty(Context.PROVIDER_URL, "file:JNDI_REF");
  Context ctx = new InitialContext();
  
  //OracleDataSoruce对象,它已经实现了javax.naming.Referencable
  OracleDataSource ojndi = new OracleDataSource();
  
  //设置相关数据库属性
  ojndi.setDatabaseName("DXS");
  ojndi.setURL("jdbc:oracle:thin:@localhost:1521:dflcrm");
  ojndi.setUser("smp_dba");
  ojndi.setPassword("123");
  ojndi.setDescription("JDBC Datasource connection.");
  
  //重新绑定OJNDI对象
  ctx.rebind("ojndi", ojndi);
  System.out.println("bind successful");
  //关闭
  ctx.close();
  }
 
}
 
测试
import java.sql.Connection;
import java.util.Properties;
 
import javax.naming.Context;
import javax.naming.InitialContext;
 
import oracle.jdbc.pool.OracleDataSource;
 
public class Lookup
{
  /**
  * 这是一个演示了如果查找JNDI的方法,注意以下二点:
  * 1.确保系统属性中存在Context.INITIAL_CONTEXT_FACTORY和Context.PROVIDER_URL(这不是必须的,如果没有则2)
  * 2.如果没有设置系统属性,那么必须由相关的有这二个变量的HashTable构造Context对象 下面的演示采用第二种实现
  *  
  * @param args
  * @throws Exception
  */
  public static void main(String[] args) throws Exception
  {
  //构造HashTable对象
  Properties ps = new Properties();
  ps.setProperty(Context.INITIAL_CONTEXT_FACTORY,
  "com.sun.jndi.fscontext.RefFSContextFactory");
  ps.setProperty(Context.PROVIDER_URL, "file:JNDI_REF");
  //由HashTable对象构造Context对象
  Context ctx = new InitialContext(ps);
  //查找"OJNDI"
  OracleDataSource dataSource = (OracleDataSource) ctx.lookup("ojndi");
  System.out.println("dataSource: " + dataSource);
  Connection conn = dataSource.getConnection();
  System.out.println(conn);
  }
 
}

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多