关于获取数据源的语法,大体有(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),用第一种写法反而会报错的。
相关推荐
TOD和PPS精确时间同步技术
授时
"Java:comp/env/"讲解与JNDI
我们在使用JNDI调用某个对象时,会有下述两种方式 context.lookup(“java:comp/env/XXX”) context.lookup(“XXX”) context.lookup(“java:comp/env/XXX”)只能用在J2EE环境,如果你自己写一个main函数,想通过context.lookup(“java:comp/env/XXX”)这样的方式来访问JNDI
KiCad自动布线实战:FreeRouting插件安装与使用指南
在PCB设计流程中,布线环节往往占据大量重复性工作,尤其对于中小型双面板,成百上千条飞线的手动连接既繁琐又易出错。自动布线技术通过算法在给定设计规则和元件布局的基础上自动规划走线路径,能显著提升布线效率。FreeRouting作为一款开源自动布线器,与KiCad通过DSN/SES标准中间格式无缝配合,让工程师将精力集中于关键信号和布局优化,而将常规网络交给工具处理。本文从自动布线的原理与边界出发,讲解了FreeRouting的安装、DSN导出、参数设置、自动布线及结果回传的完整流程,并结合实际案例展示了在S
小议JNDI之java:comp/env
在描述JNDI,例如获得数据源时,JNDI地址 有两种写法,例如同是 jdbc/testDS 数据源: A: java:comp/env/jdbc/testDS B: jdbc/testDS 这两种写法,配置的方式也不尽相同,第一种方法应该算是一种利于程序移植或迁移的方法,它的实现与“映射”的概念相 同,而B方法,则是一个硬引用。 java:comp/e
微信本地数据解密实战:从AES加密原理到EnMicroMsg.db恢复指南
数据加密是保障信息安全的核心技术,其中对称加密算法AES因其高效可靠,被广泛应用于各类本地数据保护场景。其原理是通过特定密钥对数据进行混淆转换,确保未经授权者无法读取原始内容。在移动应用领域,本地数据库加密对于保护用户隐私、防止数据泄露具有重要价值。微信作为国民级应用,对其本地存储的聊天记录数据库(EnMicroMsg.db)采用了基于设备标识和用户UIN生成的AES-256-CBC加密方案。理解这一机制,不仅有助于在合法合规前提下进行个人数据备份与恢复,也为开发者进行客户端安全分析、兼容工具开发提供了基础
STM32嵌入式开发实战:如何用miniLZO压缩算法节省70%存储空间(附完整工程)
本文详细介绍了如何在STM32嵌入式开发中使用miniLZO无损压缩算法实现高达70%的存储空间节省。通过对比分析不同轻量级算法,重点讲解miniLZO的内存优化配置、分块压缩策略和完整工程实现,帮助开发者有效解决嵌入式系统中的存储瓶颈问题。
java的lookup方法_Java ObjectStreamClass lookup()方法与示例
ObjectStreamClass类lookup()方法lookup()方法在java.io包中可用。lookup()方法用于查找可以序列化的类的描述符。lookup()方法是静态方法,可以使用类名进行访问,如果尝试使用类对象访问该方法,则不会出现任何错误。lookup()方法在查找描述符时不会引发异常。语法:publicstaticObjectStreamClasslookup(Class...
【30天从零玩转AI应用开发】第16篇:智能体Agent入门——ReAct框架原理+首个会思考、会动手的AI实战
摘要: 本文介绍了AI智能体(Agent)的核心概念及其与普通大模型(LLM)的区别。通过ReAct(Reason+Act)框架,智能体实现了自主思考、调用工具和分步执行的能力。文章详细讲解了LangChain Agent的四大组件,并推荐新手使用ZERO_SHOT_REACT_DESCRIPTION类型。最后提供了一个完整的智能体实战代码示例,该智能体具备数学计算和天气查询功能,能够自主选择工具完成任务,展示了AI从”被动回答“到”主动行动“的关键进化。
java的lookup方法_lookup方法注入
一般用来得到一个非单例对象.如果方法不是抽象的,spring回简单地覆盖已有的实现,在基于XML的配置文件中,通过在bean定义中使用lookup-method元素来告诉Spring所要足入/覆盖的方法将要返回的实际beanRandom.javapackage com.test;public class Random {private int i = (int) (100 * Math.rando...
15张图详解三方支付:总架构、5大核心业务处理流程、备付金管理
用户可以将银行卡与零钱账户绑定,建立银行结算账户与支付账户的连接,然后将银行账户资金充值到零钱账户中,或将零钱账号中的余额提现至绑定的银行卡。因此,用户在A支付机构的零钱一般只能支付给A支付机构的商户,如支付宝的零钱不能支付给微信的商户。这五大业务的协同运作,使得第三方支付机构这一庞大的支付服务平台能够为市场提供卓越的支付能力。到了结算时间,网联会向备付金集中存管账户提交结算指令,在第三方支付机构备付金集中存管账户内完成最终的结算,并将结算结果及额度变动情况通知给第三方支付机构,具体流程如图13所示。
VS中的C#项目怎样引入另一个项目
场景 在C#项目A中需要引用项目B。 实现 将项目B手动复制到A所在的项目目录下的同一个解决方案中,即与项目A同级的目录下。 在VS中打开项目B,打开解决方案资源管理器--右击解决方案--添加--现有项目 然后找到项目B的.csproj文件打开。 然后看到资源管理器中已经将B添加进来了 点击项目A的引用-右键-添加 将项目下的解决方...
数据源引用 java:/comp/env
编辑 &nb...
一文看懂EMMC原理及工作过程
CMD:用于设备初始化和命令传输的双向通道, CMD信号有2种工作模式:1#:漏极开路--->用于初始化模式2#:推拉--->用于快速命令传输其中命令从eMMC主机控制器发送到eMMC设备,响应从设备发送到主机。DAT [7:0]:双向数据信号,模式包括:1(DAT0);默认情况下,通电或重置后,只有DAT0用于数据传输。DAT信号在推挽模式下工作,eMMC设备包括数据线DAT1-DAT7的内部上拉。进入4位模式后,设备立即断开线路DAT1、DAT2和DAT3的内部上拉;
java comp,java:comp / env和java之间的关系是什么?
What is the relationship between java:comp/env and java:global (regarding 3.1 spec)?Seems like java:comp/env contains specific to EJB references.What means "specific" in this case?解决方案java:global is a...
SAP B1中文培訓教材_SDK
公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说
android 蓝牙通讯demo
android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。
java:comp/env的解释
java:comp/env和JNDI是不同的,很多人都有一些混淆,甚至认为这个就是JNDI名称。其实,java:comp/env 是环境命名上下文(environment naming context(ENC),是在EJB规范1.1以后引入的,引入这个是为了解决原来JNDI查找所引起的冲突问题。比如你要把一个EJB的Jar包部署到两台Server,而这两台Server共享一台JNDI名字空间,此时
蓝牙模块HM-10手册
蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。
java:comp/env/DataSource理解
public boolean getConnection(){ try{ //用于WebLogic连接池 Context ctx = new InitialContext(); javax.sql.DataSource ds = ( javax.sql.DataSource )ctx.lookup("DataSource")...
假人有限元模型
假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用
JNDI中 java:comp/env 是什么意思?
J2EE 上下文环境变量前缀,一般有如下几种: java:/comp/env/jdbc java:/comp/env/url java:/comp/env/mail java:/comp/env/jms 在部署和运行EJB中,容器将在java:/comp/env/处创建一个JNDI上下文环境,在该环境中,可以查找获得
java comp evn_java:comp / env /做什么?
java:comp / env /做什么?我只是花了太多的时间试图在连接一些JNDI工厂bean的时候弄清楚一些错误。 问题原来是,而不是这个…我其实写了这个…我推断java:comp / env /可能会引用一些环境variables,并使得它最终会查看我的上下文文件。 唯一的区别是java:comp / env /。 从专家的口中,这是做什么的?如果在值中没有java:comp / env前缀...
理解JNDI中 java:comp/env/jdbc/datasource 与 jdbc/datasource 的不同之处。
在描述JNDI,例如获得数据源时,JNDI地址有两种写法,例如同是 jdbc/testDS 数据源: A: java:comp/env/jdbc/testDS B: jdbc/testDS 这两种写法,配置的方式也不尽相同,第一种方法应该算是一种利于程序移植或迁移的方法,它的实现与“映射”的概念相同,而B方法,则是一个硬引用。 java:comp/env 是环境命名...
对java:comp/env的研究
原文地址:http://f543711700.iteye.com/blog/1173618
java comp env 读取文件_什么是java:comp / env范围规则?
>当我使用Context envContext =(Context)initContext.lookup(“java:comp / env”);获取initContext我得到的上下文(全局,应用程序,模块,webApp或EJB上下文)?In a webapp, the java:comp/env namespace is shared by all servlets.This is ess...
java comp env 区别_加和不加java:comp/env/前缀有什么区别?
java:comp/env是标准的J2EE环境查找规则使用这种方式必须做一次环境名到JNDI名的映射这种隔离使得在写程序时不必关注真正的JNDI名字其实说白了跟把JNDI名放到配置文件里是一样的用法如下,如把java:comp/env/my/datasource映射到my.ora.dataourceweb.xmlmy/datasourcejavax.sql.DataSourceCONTAINERw...
JNDI之java:comp/env
在描述JNDI,例如获得数据源时,JNDI地址 有两种写法,例如同是 jdbc/testDS 数据源: A: java:comp/env/jdbc/testDS B: jdbc/testDS 这两种写法,配置的方式也不尽相同,第一种方法应该算是一种利于程序移植或迁移的方法,它的实现与“映射”的概念相 同,而B方法,则是一个硬引用。 java:co
配置java comp路径_java:comp/env/jdbc/ 的两种配置方法
1. 在META-INF 下建立文件: context.xmlfactory="org.logicalcobwebs.proxool.ProxoolDataSource" name="jdbc/xxxDB" password="xxxx"proxool.alias="proxool_juncsoftDB" proxool.driver-class="com.microsoft.sqlserver...
『JNDI』 java:comp/env/jdbc/datasource 与 jdbc/datasource区别
在描述JNDI,例如获得数据源时,JNDI地址有两种写法,例如同是 jdbc/testDS 数据源: A: java:comp/env/jdbc/testDS B: jdbc/testDS 这两种写法,配置的方式也不尽相同,第一种方法应该算是一种利于程序移植或迁移的方法,它的实现与“映射”的概念相同,而B方法,则是一个硬引用。 java:comp/env 是环境命名...
1万+



被折叠的 条评论
为什么被折叠?



