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避免了程序与数据库之间的紧耦合,使应用更加易于配置、易于部署。

乌云数据(10/月),香港cera 1核1G 10M带宽/美国cera 8核8G10M

乌云数据主营高性价比国内外云服务器,物理机,本着机器为主服务为辅的运营理念,将客户的体验放在第一位,提供性价比最高的云服务器,帮助各位站长上云,同时我们深知新人站长的不易,特此提供永久免费虚拟主机,已提供两年之久,帮助了上万名站长从零上云官网:https://wuvps.cn迎国庆豪礼一多款机型史上最低价,续费不加价 尽在wuvps.cn香港cera机房,香港沙田机房,超低延迟CN2线路地区CPU...

HostKvm5.95美元起,香港、韩国可选

HostKvm发布了夏季特别促销活动,针对香港国际/韩国机房VPS主机提供7折优惠码,其他机房全场8折,优惠后2GB内存套餐月付仅5.95美元起。这是一家成立于2013年的国外主机服务商,主要提供基于KVM架构的VPS主机,可选数据中心包括日本、新加坡、韩国、美国、中国香港等多个地区机房,均为国内直连或优化线路,延迟较低,适合建站或者远程办公等。下面分享几款香港VPS和韩国VPS的配置和价格信息。...

v5server:香港+美国机房,优质CN2网络云服务器,7折优惠,低至35元/月

v5net当前对香港和美国机房的走优质BGP+CN2网络的云服务器进行7折终身优惠促销,每个客户进线使用优惠码一次,额外有不限使用次数的终身9折优惠一枚!V5.NET Server提供的都是高端网络线路的机器,特别优化接驳全世界骨干网络,适合远程办公、跨境贸易、网站建设等用途。 官方网站:https://v5.net/cloud.html 7折优惠码:new,仅限新客户,每人仅限使用一次 9...

initialcontext为你推荐
存储区域网络网络存储技术的SAN(存储区域网络)的优点动态图片格式常见的动态图像文件格式有哪些?代发邮件邮件代发会不会有短信代发那么好的市场效益呢?sdfsdfsdfsdf小米手机投诉热线pat是什么格式pat 格式的文件用什么软件打开?手机软件开发工具做安卓软件开发需要哪些工具?云输入法如何使用QQ云输入法?动画分镜头脚本求份《仙剑奇侠传5》剧情动画分镜头脚本 越多越好怎样删除聊天记录怎么批量清除微信聊天记录particular教程AE的particular的particle设置
租服务器价格 godaddy域名解析 net主机 hostmaster 联通c套餐 godaddy主机 inmotionhosting cve-2014-6271 pccw edis themeforest 英文简历模板word 贵州电信宽带测速 好玩的桌面 xen 私有云存储 本网站在美国维护 天互数据 卡巴斯基官方免费版 135邮箱 更多