自己收藏-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