try{
Context ctx=(Context) new InitialContext().lookup("java:comp/env");
ds=(DataSource)ctx.lookup("jdbc/test") ;
conn=this.getConn();
}catch(Exception e){
System.out.println(e.toString()) ;
}
关于获取数据源的语法,大体有(javax.sql.DataSource) ctx.lookup ("java:comp/env/XXX")和(javax.sql.DataSource) ctx.lookup("XXX")两种写法,好多人以为这两种写法是相同的,以为都是通过JNDI来获取数据源。其实java:comp/env和 JNDI是不同的,java:comp/env 是环境命名上下文(environment naming context(ENC)),是在EJB规范1.1以后引入的,引入这个是为了解决原来JNDI查找所引起的冲突问题,也是为了提高EJB或者J2EE应用的移植性。ENC是一个引用,引用是用于定位企业应用程序的外部资源的逻辑名。引用是在应用程序部署描述符文件中定义的。在部署时,引用被绑定到目标可操作环境中资源的物理位置(JNDI名)。使用ENC是把对其它资源的JNDI查找的硬编码解脱出来,通过配置这个引用可以在不修改代码的情况下,将引用指向不同的EJB(JNDI)。 在J2EE中的引用常用的有:
---------JDBC 数据源引用在java:comp/env/jdbc 子上下文中声明
---------JMS 连接工厂在java:comp/env/jms 子上下文中声明
---------JavaMail 连接工厂在java:comp/env/mail 子上下文中声明
---------URL 连接工厂在 java:comp/env/url子上下文中声明
假如你写了一个EJB,获取datasource如:dataSource = (DataSource) ctx.lookup("java:comp/env/jdbc/DBPool");
那么在配置文件中进行资源映射时,在ejb-jar.xml中,
<resource-ref>
<res-ref-name>jdbc/DBPool</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
在weblogic-ejb-jar.xml中,
<reference-descriptor>
<resource-description>
<res-ref-name>jdbc/DBPool</res-ref-name>
<jndi-name>OraDataSource</jndi-name>
</resource-description>
</reference-descriptor>
//转者注:如果是在jboss则在jboss.xml中做如下修改
<resource-managers>
<resource-manager>
<res-name>jdbc/DBPool</res-name>
<res-jndi-name>OraDataSource</res-jndi-name>
</resource-manager>
</resource-managers>
实际服务器中的JNDI名字是OraDataSource,逻辑名jdbc/DBPool只是用来和它作映射的,这样做的好处是为了提高可移植性,移植的时候只需要把配置文件改一下就可以,而应用程序可不用改动。
假如你写了一个一般的应用程序,想直接通过JNDI来获取数据源,那么直接lookup(“mytest”)就可以了(假如服务器上的JNDI为mytest),用第一种写法反而会报错的。
java:comp/env是标准的J2EE环境查找规则使用这种方式必须做一次环境名到JNDI名的映射这种隔离使得在写程序时不必关注真正的JNDI名字其实说白了跟把JNDI名放到配置文件里是一样的用法如下,如把java:comp/env/my/datasource映射到my.ora.dataource
web.xml
<resource-ref><BR>
<res-ref-name>my/datasource</res-ref-name><BR>
<res-type>javax.sql.DataSource</res-type><BR>
<res-auth>CONTAINER<res-auth><BR>
</resource-ref>
<resource-ref>
<res-ref-name>my/datasource</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>CONTAINER<res-auth>
</resource-ref>
weblogic.xml
<reference-descriptor><BR>
<resource-description><BR>
<res-ref-name>my/datasource</res-ref-name><BR>
<jndi-name>my.ora.dataource</jndi-name><BR>
......
<reference-descriptor>
<resource-description>
<res-ref-name>my/datasource</res-ref-name>
<jndi-name>my.ora.dataource</jndi-name>
......
而不使用这个前缀的,其实就是直接的JNDI名
-------------------------
补充一下不加的时候是全局的JNDI名,这样将造成应用间EJB的耦合太高,不建议使用
分享到:
相关推荐
根据给定文件的信息,我们可以提炼出以下几个重要的知识点: ### 一、元搜索引擎的定义与特点 **元搜索引擎**,也被称为“搜索引擎之母”、“多元搜索引擎”、“大容量搜索引擎”或“搜索引擎之上的搜索引擎”,是...
NULL 博文链接:https://jandytom.iteye.com/blog/430714
Eliminating Synchronization-Related Atomic Operations with Biased Locking and Bulk Rebiasing 博文链接:https://xieyj.iteye.com/blog/322089
回答http://topic.csdn.net/u/20091128/16/6dbc9c19-a8b8-4c81-b498-44044073e8a8.html?25809 带箭头移动绘制矩形,小议AS3.0面向对像
在嵌入式Linux系统中,ELF(Executable and Linkable Format)文件格式是广泛使用的可执行文件、共享库和目标文件的标准格式。本文将深入探讨ELF文件的结构和组成,帮助你理解如何在嵌入式环境中处理这些关键的二...
https://github.com/mootools/mootools-core/issues/2170这个问题来自IE(LTE8)中对checkbox和radio change事件的实现问题,在IE(LTE8)中测试下来,当你点击一个checkbox或者radio,它的change事件是不会立即触发,...
在Java编程语言中,注解(Annotation)是一种强大的工具,用于提供元数据,即关于代码本身的信息,而不直接影响代码的运行。注解可以帮助编译器、构建工具、框架和其他工具理解代码并执行相应的操作。本篇文章主要...
### 电子商务与信息安全 #### 一、电子商务的重要性与特点 电子商务作为现代信息技术与传统商业活动融合的产物,凭借其高效便捷的特点迅速崛起,已经成为全球范围内推动经济增长的重要力量。电子商务不仅能够大...
Java源文件的声明规则是Java编程的基础,对于初学者来说,理解这些规则至关重要。源文件是Java代码的起点,它包含类的定义、导入语句以及其他相关声明。以下是关于Java源文件声明规则和编程风格的一些关键点: 1. *...
在Java编程语言中,`final`关键字扮演着重要的角色,用于锁定特定的代码元素,确保它们不会被意外地更改或重写。以下是一些关于在Java中使用`final`关键字时需要注意的关键点: 1. **final 类**: - 当一个类被...
高职药学论文:小议高职药学创新与实践.doc
波兰教育论文:小议波兰农村教育的改进.doc
"长江水质评价和预测" 本文旨在研究长江过去 10 年的水质变化情况,以此来预测未来 10 年长江的水质情况,并对长江的治理提供一些具有可行性的建议和意见。 在第一个问题中,我们从模糊数学的角度出发提出综合污染...
"小议时序调度Timer和Quartz"这个主题主要关注Java平台上的两种常见定时任务框架:Java内置的`java.util.Timer`类和开源的Quartz库。 首先,让我们详细探讨一下`java.util.Timer`。这个类是Java标准库的一部分,它...
【小议动态网页开发中JSP技术】 JSP(JavaServer Pages)技术是Web开发领域中的重要工具,尤其适用于构建动态、交互式的网页应用程序。它基于JavaServlet,并且充分利用了Java的强大功能和跨平台特性,使得开发出的...
小议外汇期权会计在新规则中应用 本文主要探讨了小议外汇期权会计在新规则中的应用,涉及到外汇期权的概念、分类、确认、计量和披露等方面的知识点。 一、外汇期权的概念 外汇期权是一种金融衍生工具,允许持有人...
【教学质量论文:小议农村教学质量的试验】 这篇论文主要探讨了农村初中思想品德课教学质量的问题及其改善策略。文章指出,农村地区在思想品德课的教学上存在一些显著的问题,包括: 1. 教师配备不足:农村初中...
打印方法小议,页面设置对话框、打印预览对话框、打印对话框等功能,C#源代码 //字符串流对 象,一行一行读取文本 private StringReader MyReader; private void button1_Click(object sender, EventArgs e) { ...
小议经济型酒店消费者心理及消费方向.doc
【标题】:“小议张炉集扬水站自动化改造” 这篇文档主要探讨的是关于张炉集扬水站的自动化改造项目。在当前信息化与智能化快速发展的时代,水利设施的自动化改造已经成为提高效率、节省资源的重要手段。张炉集...