Spring2.0JINDI集成(3)

原创 2007年09月29日 09:02:00

Spring2.0引入的jndi-lookup内容模式

自从Spring2.0开始,便引入了XML Schema来管理BeanFactory、ApplicationContext的配置。无论是语义,还是表达、复用能力,XML Schema都强于DTD。使用XML Schema定义新的数据类型非常方便,当然,要掌握XML Schema还是要费一番功夫的。在RDBMS领域,存在很多O/R Mapping技术,比如Hibernate、JPA、TopLink、Kodo JDO等。在XML领域,也存在很多O/X Mapping技术,比如XML Beans、JAXB、Castor等。借助于它们,应用操作XML文档会很方便。

Spring引入的jee内容模式中含有jndi-lookup数据类型,使用它能够大大简化JNDI的配置。开发者只需要调整Spring XML配置文件,而应用本身不需要做任何修改。相应的内容模式如下,它定义了jndi-lookup的结构和语义。

Jndi-name: 待查找的JNDI名,必填项
Resource-ref:是否是资源引用,可选项。如果是,则需要在web.xml和厂商特定的部署描述符中进行映射。默认取值为false。
Cache:是否缓存查找到的JNDI对象,可选项。默认取值为true
Expected-type:期待的JNDI对象类型,可选项
Lookup-on-startup:是否在启动时去JNDI上查找对象,可选项。默认取值为true
Proxy-interface:代理接口,可选项。配合cache和lookup-on-startup使用
Environment:JNDI环境信息,可选项。如果有多项值对需要给出,则要遵循属性文件的格式。

接下来,我们将重点放在DTD(Spring1.x)到XML Schema(Spring2.0)的移植上。开发者只需要将jee命名空间(spring-jee-2.0.xsd)导入到spring配置文件中,便可以使用到它,具体如下。

代码
  1. <beans xmlns="http://www.springframework.org/schema/beans"  
  2.        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  3.        xmlns:jee="http://www.springframework.org/schema/jee"  
  4.        xsi:schemaLocation=  
  5.             "http://www.springframework.org/schema/beans  
  6.                 http://www.springframework.org/schema/beans/spring-beans-2.0.xsd 
  7.               http://www.springframework.org/schema/jee  
  8.                 http://www.springframework.org/schema/jee/spring-jee-2.0.xsd">  

研究这一新特性,示例配置如下,开发者再也看不到JndiObjectFactoryBean、JndiObjectTargetSource的影子,而且配置清晰。

代码
  1. <jee:jndi-lookup id="tq" jndi-name="queue/testQueue"  
  2.         cache="false"   
  3.         expected-type="javax.jms.Queue"   
  4.         lookup-on-startup="true"   
  5.         proxy-interface="javax.jms.Queue"  
  6.         resource-ref="false">  
  7.         <jee:environment >  
  8.             java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory  
  9.             java.naming.provider.url=jnp://localhost:1099  
  10.             java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces  
  11.         </jee:environment>  
  12. </jee:jndi-lookup>  
由于该示例运行在web容器之外,因此配置看起来稍微有一点复杂。如果应用运行在web容器之中,而且与本地JNDI服务交互,则不用提供environment属性。下面给出的两个版本都是合法的。
代码
  1. <jee:jndi-lookup id="tq" jndi-name="queue/testQueue"/>  

代码
  1. <jee:jndi-lookup id="tq" jndi-name="queue/testQueue"  
  2.             cache="false"   
  3.             expected-type="javax.jms.Queue"   
  4.             lookup-on-startup="true"   
  5.             proxy-interface="javax.jms.Queue"  
  6.             resource-ref="false"/>  
最后要指出的是Spring2.0兼容Spring1.x的所有配置。 

Spring2.0JINDI集成(3)

Spring2.0引入的jndi-lookup内容模式自从Spring2.0开始,便引入了XML Schema来管理BeanFactory、ApplicationContext的配置。无论是语义,还...
  • glad_iator
  • glad_iator
  • 2007年12月05日 13:12
  • 3217

Spring2.0JINDI集成(2)

为了简化 JNDI API 的使用,Spring 2.0框架专门提供了org.springframework.jndi包。其中,JndiTemplateEditor类继承于 PropertyEdit...
  • lixiqiang
  • lixiqiang
  • 2007年09月29日 08:58
  • 451

Spring2.0JINDI集成(2)

为了简化 JNDI API 的使用,Spring 2.0框架专门提供了org.springframework.jndi包。其中,JndiTemplateEditor类继承于 PropertyEdi...
  • glad_iator
  • glad_iator
  • 2007年12月05日 13:11
  • 688

java3大框架的集成

java三大框架的集成  我是一个踏入程序员行业刚刚一年的大专生,刚刚把java的三大框架学完了,再次如果您在看我的文章还请您多多指点,如果对于我的这些做法有更加好的意见我愿意听从您的意见,共同学习进...
  • iwantajia
  • iwantajia
  • 2010年05月09日 13:13
  • 2672

SpringCloud 消费者端 集成 Swagger2.0启动报空指针错误_http://blog.163.com/wangjianssg@126/blog/static/2456955920161

springcloud 消费者端使用了@FeighClient 来调用接口。在集成了Swagger2.0之后启动无法启动 错误提示:空指针错误. 在长达一个星期的debug和对其他的成功项...
  • a363722188
  • a363722188
  • 2017年07月12日 15:24
  • 314

FlexBuilder3安装集成eclipse

这里记录一下安装FB3_WWEJ_Plugin.exe(Flex的插件)的步骤,用来阐述eclipse中安装插件的两种方式(当然安装的方式不止两种):links方式和直接copy features与p...
  • orange2211
  • orange2211
  • 2016年03月23日 17:00
  • 1428

如何生成一个集成库并且实现对库的管理

如何生成一个集成库并且实现对库的管理 如何在Altium Designer的Protel中创建用户自己的板级设计器件集成库? 在Altium Designer的Protel中引入了器件集成...
  • mitesi
  • mitesi
  • 2013年08月21日 00:51
  • 3426

mongodb学习(三):springboot集成mongodb例子

一、新建maven项目mongodbTest 二、添加springboot和mongodb依赖 junit junit 3.8.1 test org.springf...
  • u011095110
  • u011095110
  • 2017年09月07日 21:29
  • 183

Spring下集成 3.X 的mongo

mongo版本3.2.7 mongo-driver版本3.3.0 集成方案回归最原始
  • sccs999
  • sccs999
  • 2016年08月07日 16:02
  • 1451

Sublime3集成ESLint

据说有不止一种集成ESLint的方式,这里只介绍使用NodeJS的方式,不要问我为什么,因为其他方式我还没尝试。。。 1.      现有NodeJS环境,它是javascript的运行时环境。类似于...
  • pxy_lele
  • pxy_lele
  • 2016年12月26日 13:56
  • 791
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章: Spring2.0JINDI集成(3)
举报原因:
原因补充:

(最多只允许输入30个字)