initialcontextJDBC与JNDI这两种连接方式有什么区别

initialcontext  时间:2021-06-17  阅读:()

java,android里的context都是什么意思啊该如何处理

Context在Java中的出现是如此频繁,但其中文翻译“上下文”又是如此诡异拗口,因此导致很多人不是很了解Context的具体含义是指什么,所以很有必要来深究一下这词的含义。

先来举几个JAVA中用到Context的例子 (1)JNDI的一个类javax.naming.InitialContext,它读取JNDI的一些配置信息,并内含对象和其在JNDI中的注册名称的映射信息。

请看下面的代码 InitialContext ic=new InitialContext(); RMIAdaptor server=(RMIAdaptor)ic.lookup("jmx/invoker/RMIAdaptor"); 这是一段JBoss中获取MBean的远程调用类的代码。

在这里面通过InitialContext中JNDI注册的名称“jmx/invoker/RMIAdaptor”来获得RMIAdaptor 对象。

这和JAVA集合中的MAP有点象,有一个String的key,key对映着它的对象。

(2)再来看看下面Spring中最常见的几句代码。

ApplicationContext 是内含configuration.xml配置文件的信息,使得可以通过getBean用名称得到相应的注册对象。

ApplicationContext ctx= new FileSystemXmlApplicationContext("configuration.xml"); Object obj= ctx.getBean("Object_Name"); 从上面的代码,我很能体会到Context所代表的意义:公用信息、环境、容器....。

所以我觉得Context翻译成上下文并不直观,按照语言使用的环境,翻译成“环境”、“容器”可能更好。

把Context翻译成“上下文”只是不直观罢了,不过也没大错。

我们来看看中文的“上下文”是什么意思。

我们常说听话传话不能“断章取义”,而要联系它的“上下文”来看。

比如,小丽对王老五说“我爱你”,光看这句还以为在说情话呢。

但一看上下文--“虽然我爱你,但你太穷了,我们还是分手吧”,味道就完全变了。

从这里来看“上下文”也有“环境”的意思,就是语言的环境。

上下文其实是一个抽象的概念。

我们常见的上下文有Servlet中的pageContext,访问JNDI时候用的Context。

写过这些代码的人可能比较容易理解,其实他们真正的作用就是承上启下。

比如说pageContext他的上层是WEB容器,下层是你写的那个Servlet类,pageContext作为中间的通道让Servlet 和Web容器进行交互。

再比如访问JNDI的Context,他的上层是JNDI服务器(可能是远程的),下层是你的应用程序,他的作用也是建立一个通道让你能访问JNDI服务器,同时也让JNDI服务器接受你的请求,同样起到交互作用。

java 错误 CNInitialContextFactory 这个class怎么来的?

在toolkit.sql.PoolConnection.open(PoolConnection.java:112) 错误提示是说没用找到这个类 或者是没用实例化这个类 类路径.ibm.ejs.ns.jndi.CNInitialContextFactory

JDBC与JNDI这两种连接方式有什么区别

jdbc是数据库中间代理商为了是java连接数据库而定的一个协议 或者说是方法,通过jdbc-odbc的方法进行数据库连接,是连接一次创建一次的做法 1,由数据库驱动和协议组成连接数据的方法,调用中间商提供的类包,进行创建连接 2.再由连接去调用3种状态. 3.由状态来提供对数据库的操作 jndi是一种命名树的方式,把需要的类都列成目录的样式,需要哪个只要根据命名直接去 调用,是一种比较快洁的思想和行为. 当你要操作数据库的用jdbc 操作命名服务用jndi Java Database Connectivity (JDBC)是一个标准的Java API,它由一组类和接口组成,Java应用程序开发人员使用它来访问数据库和执行SQL语句 JNDI(Java Name Directory Interface),可不仅仅是进行数据库定位的, 它是给当前应用服务器所管理的所有资源一个唯一的标识,包括数据库,网页,文件, 连接池等等。

配置 JNDI绑定 此处绑定的数据源是以 DBCP 为实现。

首先必须将数据库驱动(这里用了MYSQL数据库)和DBCP所需要的 Jar 包复制到 Jetty 根目录的 lib 目录下。

DBCP主要需要以下3个文件: Commons-dbcp.jar Commons-pool.jar Commons-collections.jar jdbc和jndi区别 Connection conn = null; try{ Class.forName(.mysql.jdbc.Driver",true,Thread.currentThread().getContextClassLoader()); conn = DriverManager.getConnection("jdbc:mysql://MyDBServer?user=***&password=****"); ..... conn.close(); } catch(...){...}finally{ if(conn!=null){ try{ conn.close(); } catch(...){...} } } 存在的问题? 1、数据库服务器名称MyDBServer 用户名和口令可能需要修改,由此引发JDBC URL修要修改; 2、数据库可能该用别的产品; 3、随着实际终端的增加,原配置的连接池参数可能需要调整; 解决办法 程序员不必关心数据库级别的事情,只需要知道如何引用即可 JNDI出现了。

定义数据源,也就是JDBC引用参数,给这个数据源设置一个名称; 在程序中通过数据源名称引用数据源,从而访问数据库; //jndi连接 Context initCtx = new InitialContext(); Context envCtx = (Context)initCtx.lookup("p/env"); DataSource ds = (DataSource)envCtx.lookup("jdbc/webtest"); conn = ds.getConnection(); //jdbc连接 Class.forName(.mysql.jdbc.Driver",true,Thread.currentThread().getContextClassLoader()); conn = DriverManager.getConnection("jdbc:mysql://localhost/mismain?user=root&autoReconnect=true"); 程序员开发时,知道要开发访问MySQL数据库的应用,于是将一个对 MySQL JDBC 驱动程序类的引用进行了编码,并通过使用适当的 JDBC URL 连接到数据库。

就像以下代码这样: Connection conn=null; try ...{ Class.forName(.mysql.jdbc.Driver", true, Thread.currentThread().getContextClassLoader()); conn=DriverManager.getConnection("jdbc:mysql://MyDBServer?user=qingfeng&password=mingyue"); ...... conn.close(); } catch(Exception e) ...{ e.printStackTrace(); } finally ...{ if(conn!=null) ...{ try ...{ conn.close(); } catch(SQLException e) ...{} } } 这是传统的做法,也是以前非Java程序员(如Delphi、VB等)常见的做法。

这种做法一般在小规模的开发过程中不会产生问题,只要程序员熟悉Java语言、了解JDBC技术和MySQL,可以很快开发出相应的应用程序。

没有JNDI的做法存在的问题:1、数据库服务器名称MyDBServer 、用户名和口令都可能需要改变,由此引发JDBC URL需要修改;2、数据库可能改用别的产品,如改用DB2或者Oracle,引发JDBC驱动程序包和类名需要修改;3、随着实际使用终端的增加,原配 置的连接池参数可能需要调整;4、…… 解决办法:程序员应该不需要关心“具体的数据库后台是什么?JDBC驱动程序是什么?JDBC URL格式是什么?访问数据库的用户名和口令是什么?”等等这些问题,程序员编写的程序应该没有对 JDBC 驱动程序的引用,没有服务器名称,没有用户名称或口令 —— 甚至没有数据库池或连接管理。

而是把这些问题交给J2EE容器来配置和管理,程序员只需要对这些配置和管理进行引用即可。

由此,就有了JNDI. 用了JNDI之后的做法:首先,在在J2EE容器中配置JNDI参数,定义一个数据源,也就是JDBC引用参数,给这个数据源设置一个名称;然后,在程序中,通过数据源名称引用数据源从而访问后台数据库。

具体操作如下(以JBoss为例): 1、配置数据源 在JBoss 的 D:jboss420GAdocsexamplesjca 文件夹下面,有很多不同数据库引用的数据源定义模板。

将其中的 mysql-ds.xml 文件Copy到你使用的服务器下,如 D:jboss420GAserverdefaultdeploy。

修改 mysql-ds.xml 文件的内容,使之能通过JDBC正确访问你的MySQL数据库, 如下: Connection conn=null; try ...{ Class.forName(.mysql.jdbc.Driver", true, Thread.currentThread().getContextClassLoader()); conn=DriverManager.getConnection("jdbc:mysql://MyDBServer?user=qingfeng&password=mingyue"); ...... conn.close(); } catch(Exception e) ...{ e.printStackTrace(); } finally ...{ if(conn!=null) ...{ try ...{ conn.close(); } catch(SQLException e) ...{} } } MySqlDS jdbc:mysql://localhost:3306/lw <.mysql.jdbc.Driver root rootpassword <.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter mySQL 这里,定义了一个名为MySqlDS的数据源,其参数包括JDBC的URL,驱动类名,用户名及密码等。

2、在程序中引用数据源: Connection conn=null;try ...{ Context ctx=new InitialContext(); Object datasourceRef=ctx.lookup("java:MySqlDS"); //引用数据源 DataSource ds=(Datasource)datasourceRef; conn=ds.getConnection(); ...... c.close(); } catch(Exception e) ...{ e.printStackTrace(); } finally ...{ if(conn!=null) ...{ try ...{ conn.close(); } catch(SQLException e) ...{ } } } 直接使用JDBC或者通过JNDI引用数据源的编程代码量相差无几,但是现在的程序可以不用关心具体JDBC参数了。

在系统部署后,如果数据库的相关参数变更,只需要重新配置 mysql-ds.xml 修改其中的JDBC参数,只要保证数据源的名称不变,那么程序源代码就无需修改。

由此可见,JNDI避免了程序与数据库之间的紧耦合,使应用更加易于配置、易于部署。

Megalayer美国独立服务器新用户首月优惠350元(30M优化不限流量)

Megalayer 商家在开始看到有提供香港服务器、香港站群服务器的时候有介绍过,后来就一直没有怎么关注。但是前几天有看到网友使用到他们家的美国独立服务器问其如何的,但是我没有使用过就不好评论,这不前几天也有介绍到Megalayer美国独立服务器。以及我们也有看到商家有提供美国站群服务器和美国大带宽服务器产品,可选30M不限制流量CN2优化线路,以及100M不限制流量国际带宽线路。新年元旦后,Me...

美国VPS 美国高防VPS 香港VPS 日本VPS 首月9元 百纵科技

百纵科技湖南百纵科技有限公司是一家具有ISP ICP 电信增值许可证的正规公司,多年不断转型探索现已颇具规模,公司成立于2009年 通过多年经营积累目前已独具一格,公司主要经营香港服务器,香港站群服务器,美国高防服务器,美国站群服务器,云服务器,母机租用托管!美国CN2云服务器,美国VPS,美国高防云主机,美国独立服务器,美国站群服务器,美国母机。美国原生IP支持大批量订货 合作 适用电商 亚马逊...

鲸云10美元,香港BGPRM 1核 1G 10Mbps峰值带宽 1TB流量,江西CN2-NAT 1核 512MB内存 100M带宽 ,

WHloud Official Notice(鲸云官方通知)(鲸落 梦之终章)]WHloud RouMu Cloud Hosting若木产品线云主机-香港节点上新预售本次线路均为电信CN2 GIA+移动联通BGP,此机型为正常常规机,建站推荐。本次预售定为国庆后开通,据销售状况决定,照以往经验或有咕咕的可能性,但是大多等待时间不长。均赠送2个快照 2个备份,1个默认ipv4官方网站:https:/...

initialcontext为你推荐
身份证系统电子身份证如何办理机房360学校有4个机房,机房1有50台,机房2有40台, 机房3有的38台,机房4有的35台,有网络IP21ae序列号安装AE,序列号是什么意思?gps数据格式怎样把GPS测量数据DAT文件转换成EXEL文件?怎么用电脑发短信谁知道怎样能用电脑给手机发短信shoujiao求【叫兽】的简介comexception5种常见的Exception!网络安全密钥一般路由器是网络安全密钥是多少sms是什么短信确认码是什么网站客服代码在线客服系统的代码添加到网站中,要怎么做?
wordpress技巧 gateone godaddy优惠券 seovip php探针 免费个人博客 ibox官网 新家坡 美国堪萨斯 昆明蜗牛家 搜索引擎提交入口 能外链的相册 服务器论坛 成都主机托管 买空间网 葫芦机 windowssever2008 magento主机 godaddy域名 paypal登陆 更多