首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

自个儿收藏-JNDI应用实例

2012-12-27 
自己收藏-JNDI应用实例一、JNDI在Java EE中的应用 JNDI技术是Java EE规范中的一个重要“幕后”角色,它为Java

自己收藏-JNDI应用实例

一、JNDI在Java EE中的应用 JNDI技术是Java EE规范中的一个重要“幕后”角色,它为Java EE容器、组件提供者和应用程序之间提供了桥梁作用:Java EE容器同时扮演JNDI提供者角色,组件提供者将某个服务的具体实现部署到容器上,应用程序通过标准的JNDI接口就可以从容器上发现并使用服务,而不用关心服务的具体实现是什么,它的具体位置在哪里。 下面以一个常见的J2EE应用场景来看四种角色(组件接口、容器、组件提供者、应用程序)是如何围绕JNDI来发挥作用的:组件接口数据源DataSource是一种很常见的服务。我们通常将组件接口绑定到容器的Context上供客户调用。 Java EE容器 Tomcat是一种常见的Java EE容器,其他的还有JBoss,WebLogic,它们同时也实现了JNDI提供者规范。容器通常提供一个JNDI注入场所供加入组件的具体实现,比如Tomcat中的Server.xml配置文件。 组件提供者众多数据库厂商提供了DataSource的实现,比如OracleDataSource,MySQLDataSource,XXXDataSource等。我们将该实现的部署到容器中:将一系列jar加入classpath中,在Server.xml中配置DataSource实现,如:

?

应用程序
一个JSP/Servlet应用程序。通过JNDI接口使用DataSource服务,如:

package xyz.jndi;import javax.naming.Context;import xyz.service.DBService;import xyz.service.LogService;public class JNDIClient {  public static void main(String[] args){  try{   JNDIContainer container=new JNDIContainer();   container.init();         //JNDI客户端使用标准JNDI接口访问命名服务。      Context ctx=container.getContext();      DBService db=(DBService)ctx.lookup("DBService");      System.out.println("db location is:"+db.getLocation()+",state is:"+db.getState());      db.accessDB();            LogService ls=(LogService)ctx.lookup("LogService");      ls.log("this is a log message.");            container.close();  }  catch(Exception e){   e.printStackTrace();  } }}

?

至此,我们的整个Java SE应用已经完成。
文章出处:飞诺网(www.firnow.com):http://dev.firnow.com/course/3_program/java/javajs/2008114/96341_2.html

热点排行