OracleJNDI

举报
小傅哥 发表于 2021/04/22 00:03:37 2021/04/22
【摘要】 import java.sql.SQLException; import javax.naming.Context;import javax.naming.InitialContext;import javax.naming.NamingException; import oracle.jdbc.pool.OracleDataSource; public class Orac...

  
  1. import java.sql.SQLException;
  2. import javax.naming.Context;
  3. import javax.naming.InitialContext;
  4. import javax.naming.NamingException;
  5. import oracle.jdbc.pool.OracleDataSource;
  6. public class OracleJNDI
  7. {
  8. public OracleJNDI() throws SQLException
  9. {
  10. super();
  11. }
  12. /**
  13. * 使用sun提供的com.sun.jndi.fscontext.RefFSContextFactory作为JNDI服务器,
  14. * 其实这是使用文件系统来存储JNDI对象
  15. * @param args
  16. * @throws NamingException
  17. * @throws SQLException
  18. */
  19. public static void main(String[] args) throws NamingException, SQLException
  20. {
  21. //Properties ps = new Properties();
  22. //为系统设置jndi工厂
  23. System.setProperty(Context.INITIAL_CONTEXT_FACTORY,
  24. "com.sun.jndi.fscontext.RefFSContextFactory");
  25. //指定JNDI URL
  26. System.setProperty(Context.PROVIDER_URL, "file:JNDI_REF");
  27. Context ctx = new InitialContext();
  28. //OracleDataSoruce对象,它已经实现了javax.naming.Referencable
  29. OracleDataSource ojndi = new OracleDataSource();
  30. //设置相关数据库属性
  31. ojndi.setDatabaseName("DXS");
  32. ojndi.setURL("jdbc:oracle:thin:@localhost:1521:dflcrm");
  33. ojndi.setUser("smp_dba");
  34. ojndi.setPassword("123");
  35. ojndi.setDescription("JDBC Datasource connection.");
  36. //重新绑定OJNDI对象
  37. ctx.rebind("ojndi", ojndi);
  38. System.out.println("bind successful");
  39. //关闭
  40. ctx.close();
  41. }
  42. }
测试

  
  1. import java.sql.Connection;
  2. import java.util.Properties;
  3. import javax.naming.Context;
  4. import javax.naming.InitialContext;
  5. import oracle.jdbc.pool.OracleDataSource;
  6. public class Lookup
  7. {
  8. /**
  9. * 这是一个演示了如果查找JNDI的方法,注意以下二点:
  10. * 1.确保系统属性中存在Context.INITIAL_CONTEXT_FACTORY和Context.PROVIDER_URL(这不是必须的,如果没有则2)
  11. * 2.如果没有设置系统属性,那么必须由相关的有这二个变量的HashTable构造Context对象 下面的演示采用第二种实现
  12. *
  13. * @param args
  14. * @throws Exception
  15. */
  16. public static void main(String[] args) throws Exception
  17. {
  18. //构造HashTable对象
  19. Properties ps = new Properties();
  20. ps.setProperty(Context.INITIAL_CONTEXT_FACTORY,
  21. "com.sun.jndi.fscontext.RefFSContextFactory");
  22. ps.setProperty(Context.PROVIDER_URL, "file:JNDI_REF");
  23. //由HashTable对象构造Context对象
  24. Context ctx = new InitialContext(ps);
  25. //查找"OJNDI"
  26. OracleDataSource dataSource = (OracleDataSource) ctx.lookup("ojndi");
  27. System.out.println("dataSource: " + dataSource);
  28. Connection conn = dataSource.getConnection();
  29. System.out.println(conn);
  30. }
  31. }

文章来源: bugstack.blog.csdn.net,作者:Yao__Shun__Yu,版权归原作者所有,如需转载,请联系作者。

原文链接:bugstack.blog.csdn.net/article/details/8088726

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。