Spring之JNDI

在Spring的applicationContext.xml中配置

<jee:jndi-lookup id="main_mysql_no_ax" jndi-name="java:comp/env/jdbc/main_mysql_no_ax" />

<bean id="transactionManager"
  class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  <property name="dataSource" ref="main_mysql_no_ax" />
</bean>

web.xml配置

<resource-ref>
<description>main_mysql_no_ax</description>
<res-ref-name>jdbc/main_mysql_no_ax</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>

当Web服务器启动时会去检索Web容器总的JNDI资源名,正常情况下资源会被配置在服务器下的server.xml或者context.xml中


<Resource name="jdbc/main_mysql_no_ax" 
        auth="Container" 
        type="javax.sql.DataSource"
     testOnBorrow="true"
     validationQuery="select 1" 
        poolSize="10"
     minPoolSize="0"
     maxPoolSize="100"
     maxIdleTime="120"
        maxActive="100" 
        maxIdle="5" 
        maxWait="10000"
        username="jtuser"
        password="one&Zero.2012" 
        driverClassName="com.mysql.jdbc.jdbc2.optional.MysqlDataSource"
        url="jdbc:mysql://192.168.2.27:3306/jingtiao2?noAccessToProcedureBodies=true&useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&zeroDateTimeBehavior=convertToNull"/>


<Context docBase="D:\Company Item\jt-search-product\WebRoot" path="/search" reloadable="false" 
workDir="D:\apache-tomcat-7.0.22\work\Catalina\localhost\search">
<ResourceLink name="jdbc/main_mysql_no_ax" global="jdbc/main_mysql_no_ax" type="javax.sql.DataSource" />
</Context>


该资源会被加载放入到Web容器中,在项目配置文件中声明数据源Bean时,采用jee:jndi-lookup会在Web容器中查找该资源名称,并转化为数据源bean
采用JNDI配置是全局数据源配置方式,适用于一个服务器下的多个web项目共同使用此数据源配置,而配置在单独的某个Web工程中时,则只能被此Web工程独自享用,
不具有共享性。
在传统的J2EE应用中,JNDI用来访问一系列不同的资源,例如EJB和JMS的链接工厂,Spring使用JndiTemplate提供了一个框架来简化进行JNDI查找所需的代码,而Spring还提
供使用JndiObjectFactoryBean来自动执行依赖注入,这是一个FactoryBean的实现。他允许资源利用依赖注入来绑定到JNDI。
访问JNDI中资源的三种方式:第一种不使用任何spring提供的类,仅仅是一个传统的查找,第二种通过手动查找使用JndiTemplate类,最后一种采用JndiObjectFactoryBean
来自动执行依赖注入。
第一种:创建一个InitialContext的实例,通过lookup()方法查找那个资源,当在应用服务器中执行操作不需要InitialContext设置任何参数环境,但是在应用服务器之外使用
JNDI的时候,这个就是必须的。
第二种:JndiTemplate和第一种差不多,创建一个JndiTemplate的实例,调用它的lookup()方法,JndiTemplate有一个获取回调(callback)功能上的好处,JndiTemplate
定义一个execute()方法来接收一个JndiCallback的实例,例如lookup实际上就是使用execute()方法,
第三种:JndiObjectFactoryBean,它扮演了JNDI查找和Spring依赖注入之间的适配器,借助Spring的配置文件将需要的属性信息进行注入。
区别,前两者需要编写代码去JNDI查找,而后者则是通过Spring的JndiObjectFactoryBean将结果通过配置文件注入到需要的代码中。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值