欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

一个ServiceLocator模式的实现 EJBSQL 

程序员文章站 2022-03-10 23:52:20
...
 废话不说,代码说话:
一个ServiceLocator模式的实现
            
    
    
        EJBSQL import javax.naming.*;
一个ServiceLocator模式的实现
            
    
    
        EJBSQL 
import javax.naming.NamingException;
一个ServiceLocator模式的实现
            
    
    
        EJBSQL 
import javax.rmi.PortableRemoteObject;
一个ServiceLocator模式的实现
            
    
    
        EJBSQL 
import javax.ejb.EJBHome;
一个ServiceLocator模式的实现
            
    
    
        EJBSQL 
import javax.ejb.EJBLocalHome;
一个ServiceLocator模式的实现
            
    
    
        EJBSQL 
import javax.sql.DataSource;
一个ServiceLocator模式的实现
            
    
    
        EJBSQL 
import java.util.*;
一个ServiceLocator模式的实现
            
    
    
        EJBSQL 
import java.sql.*;
一个ServiceLocator模式的实现
            
    
    
        EJBSQL 
一个ServiceLocator模式的实现
            
    
    
        EJBSQL 一个ServiceLocator模式的实现
            
    
    
        EJBSQL 
/** *//**
一个ServiceLocator模式的实现
            
    
    
        EJBSQL  *  实现 service locater 模式,用于由客户端来调用以通过JNDI查
一个ServiceLocator模式的实现
            
    
    
        EJBSQL  *  找相关的 ejb或是其它服务的入口.
一个ServiceLocator模式的实现
            
    
    
        EJBSQL  * 
*/

一个ServiceLocator模式的实现
            
    
    
        EJBSQL 一个ServiceLocator模式的实现
            
    
    
        EJBSQL 
public final class ServiceLocater 一个ServiceLocator模式的实现
            
    
    
        EJBSQL {
一个ServiceLocator模式的实现
            
    
    
        EJBSQL 
一个ServiceLocator模式的实现
            
    
    
        EJBSQL   
protected static ServiceLocater inst = new ServiceLocater();
一个ServiceLocator模式的实现
            
    
    
        EJBSQL   
private InitialContext ic = null;
一个ServiceLocator模式的实现
            
    
    
        EJBSQL   
private Map ejbHomeCache = null;
一个ServiceLocator模式的实现
            
    
    
        EJBSQL   
private Map dataSourceCache = null;
一个ServiceLocator模式的实现
            
    
    
        EJBSQL 一个ServiceLocator模式的实现
            
    
    
        EJBSQL   
protected ServiceLocater() 一个ServiceLocator模式的实现
            
    
    
        EJBSQL {
一个ServiceLocator模式的实现
            
    
    
        EJBSQL 一个ServiceLocator模式的实现
            
    
    
        EJBSQL     
try 一个ServiceLocator模式的实现
            
    
    
        EJBSQL {
一个ServiceLocator模式的实现
            
    
    
        EJBSQL       dataSourceCache 
= Collections.synchronizedMap(new HashMap());
一个ServiceLocator模式的实现
            
    
    
        EJBSQL       ejbHomeCache 
= Collections.synchronizedMap(new HashMap());
一个ServiceLocator模式的实现
            
    
    
        EJBSQL       ic 
= new InitialContext();
一个ServiceLocator模式的实现
            
    
    
        EJBSQL     }

一个ServiceLocator模式的实现
            
    
    
        EJBSQL 一个ServiceLocator模式的实现
            
    
    
        EJBSQL     
catch (Exception e) 一个ServiceLocator模式的实现
            
    
    
        EJBSQL {
一个ServiceLocator模式的实现
            
    
    
        EJBSQL       e.printStackTrace();
一个ServiceLocator模式的实现
            
    
    
        EJBSQL     }

一个ServiceLocator模式的实现
            
    
    
        EJBSQL   }

一个ServiceLocator模式的实现
            
    
    
        EJBSQL 
一个ServiceLocator模式的实现
            
    
    
        EJBSQL 一个ServiceLocator模式的实现
            
    
    
        EJBSQL   
/** *//**
一个ServiceLocator模式的实现
            
    
    
        EJBSQL    * 取得 servicelocater的单子实例.
一个ServiceLocator模式的实现
            
    
    
        EJBSQL    * 
*/

一个ServiceLocator模式的实现
            
    
    
        EJBSQL 一个ServiceLocator模式的实现
            
    
    
        EJBSQL   
synchronized public static ServiceLocater getInstance() 一个ServiceLocator模式的实现
            
    
    
        EJBSQL {
一个ServiceLocator模式的实现
            
    
    
        EJBSQL     
return inst;
一个ServiceLocator模式的实现
            
    
    
        EJBSQL   }

一个ServiceLocator模式的实现
            
    
    
        EJBSQL 
一个ServiceLocator模式的实现
            
    
    
        EJBSQL 一个ServiceLocator模式的实现
            
    
    
        EJBSQL   
/** *//**
一个ServiceLocator模式的实现
            
    
    
        EJBSQL    *查找并返回一个数据源
一个ServiceLocator模式的实现
            
    
    
        EJBSQL    * 
@param name String 数据源名称
一个ServiceLocator模式的实现
            
    
    
        EJBSQL    * 
@return DataSource ,查找不到则抛出异常.
一个ServiceLocator模式的实现
            
    
    
        EJBSQL    * 
@throws NamingException ,查找不到或是类型不对。
一个ServiceLocator模式的实现
            
    
    
        EJBSQL    * 
*/

一个ServiceLocator模式的实现
            
    
    
        EJBSQL 一个ServiceLocator模式的实现
            
    
    
        EJBSQL   
private DataSource lookUpDataSource(String name) throws NamingException 一个ServiceLocator模式的实现
            
    
    
        EJBSQL {
一个ServiceLocator模式的实现
            
    
    
        EJBSQL     DataSource tmpDS 
= (DataSource)this.dataSourceCache.get(name);
一个ServiceLocator模式的实现
            
    
    
        EJBSQL 一个ServiceLocator模式的实现
            
    
    
        EJBSQL     
if (tmpDS == null一个ServiceLocator模式的实现
            
    
    
        EJBSQL {
一个ServiceLocator模式的实现
            
    
    
        EJBSQL 一个ServiceLocator模式的实现
            
    
    
        EJBSQL       
try 一个ServiceLocator模式的实现
            
    
    
        EJBSQL {
一个ServiceLocator模式的实现
            
    
    
        EJBSQL         tmpDS 
= (DataSource)this.ic.lookup(name);
一个ServiceLocator模式的实现
            
    
    
        EJBSQL         
this.dataSourceCache.put(name, tmpDS);
一个ServiceLocator模式的实现
            
    
    
        EJBSQL       }

一个ServiceLocator模式的实现
            
    
    
        EJBSQL 一个ServiceLocator模式的实现
            
    
    
        EJBSQL       
catch (NamingException namE) 一个ServiceLocator模式的实现
            
    
    
        EJBSQL {
一个ServiceLocator模式的实现
            
    
    
        EJBSQL         
throw namE;
一个ServiceLocator模式的实现
            
    
    
        EJBSQL       }

一个ServiceLocator模式的实现
            
    
    
        EJBSQL 一个ServiceLocator模式的实现
            
    
    
        EJBSQL       
catch (Exception otherE) 一个ServiceLocator模式的实现
            
    
    
        EJBSQL {
一个ServiceLocator模式的实现
            
    
    
        EJBSQL         
throw new NamingException(otherE.getMessage());
一个ServiceLocator模式的实现
            
    
    
        EJBSQL       }

一个ServiceLocator模式的实现
            
    
    
        EJBSQL     }

一个ServiceLocator模式的实现
            
    
    
        EJBSQL     
return tmpDS;
一个ServiceLocator模式的实现
            
    
    
        EJBSQL   }

一个ServiceLocator模式的实现
            
    
    
        EJBSQL 
一个ServiceLocator模式的实现
            
    
    
        EJBSQL 一个ServiceLocator模式的实现
            
    
    
        EJBSQL   
/** *//**
一个ServiceLocator模式的实现
            
    
    
        EJBSQL    * 查找并返回一个远程接口
一个ServiceLocator模式的实现
            
    
    
        EJBSQL    * 
@param jndiHomeName ebj名字
一个ServiceLocator模式的实现
            
    
    
        EJBSQL    * 
@param className  ejb类名字
一个ServiceLocator模式的实现
            
    
    
        EJBSQL    * 
@return
一个ServiceLocator模式的实现
            
    
    
        EJBSQL    * 
@throws ServiceLocatorException
一个ServiceLocator模式的实现
            
    
    
        EJBSQL    
*/

一个ServiceLocator模式的实现
            
    
    
        EJBSQL   
public EJBHome getRemoteHome(String jndiHomeName, Class className) throws
一个ServiceLocator模式的实现
            
    
    
        EJBSQL 一个ServiceLocator模式的实现
            
    
    
        EJBSQL       ServiceLocatorException 
一个ServiceLocator模式的实现
            
    
    
        EJBSQL {
一个ServiceLocator模式的实现
            
    
    
        EJBSQL     EJBHome home 
= (EJBHome)this.ejbHomeCache.get(jndiHomeName);
一个ServiceLocator模式的实现
            
    
    
        EJBSQL 一个ServiceLocator模式的实现
            
    
    
        EJBSQL     
if (home == null一个ServiceLocator模式的实现
            
    
    
        EJBSQL {
一个ServiceLocator模式的实现
            
    
    
        EJBSQL 一个ServiceLocator模式的实现
            
    
    
        EJBSQL       
try 一个ServiceLocator模式的实现
            
    
    
        EJBSQL {
一个ServiceLocator模式的实现
            
    
    
        EJBSQL         Object objref 
= ic.lookup(jndiHomeName);
一个ServiceLocator模式的实现
            
    
    
        EJBSQL         Object obj 
= PortableRemoteObject.narrow(objref, className);
一个ServiceLocator模式的实现
            
    
    
        EJBSQL         home 
= (EJBHome) obj;
一个ServiceLocator模式的实现
            
    
    
        EJBSQL         
this.ejbHomeCache.put(jndiHomeName, home);
一个ServiceLocator模式的实现
            
    
    
        EJBSQL       }

一个ServiceLocator模式的实现
            
    
    
        EJBSQL 一个ServiceLocator模式的实现
            
    
    
        EJBSQL       
catch (NamingException ne) 一个ServiceLocator模式的实现
            
    
    
        EJBSQL {
一个ServiceLocator模式的实现
            
    
    
        EJBSQL         
throw new ServiceLocatorException(ne);
一个ServiceLocator模式的实现
            
    
    
        EJBSQL       }

一个ServiceLocator模式的实现
            
    
    
        EJBSQL 一个ServiceLocator模式的实现
            
    
    
        EJBSQL       
catch (Exception e) 一个ServiceLocator模式的实现
            
    
    
        EJBSQL {
一个ServiceLocator模式的实现
            
    
    
        EJBSQL         
throw new ServiceLocatorException(e);
一个ServiceLocator模式的实现
            
    
    
        EJBSQL       }

一个ServiceLocator模式的实现
            
    
    
        EJBSQL     }

一个ServiceLocator模式的实现
            
    
    
        EJBSQL     
return home;
一个ServiceLocator模式的实现
            
    
    
        EJBSQL   }

一个ServiceLocator模式的实现
            
    
    
        EJBSQL 
一个ServiceLocator模式的实现
            
    
    
        EJBSQL 一个ServiceLocator模式的实现
            
    
    
        EJBSQL   
/** *//**
一个ServiceLocator模式的实现
            
    
    
        EJBSQL    * 查找并返回一个本地接口
一个ServiceLocator模式的实现
            
    
    
        EJBSQL    * 
@param jndiHomeName  jndiHomeName名字
一个ServiceLocator模式的实现
            
    
    
        EJBSQL    * 
@return 一个本地接口
一个ServiceLocator模式的实现
            
    
    
        EJBSQL    * 
@throws ServiceLocatorException
一个ServiceLocator模式的实现
            
    
    
        EJBSQL    
*/

一个ServiceLocator模式的实现
            
    
    
        EJBSQL   
public EJBLocalHome getLocalHome(String jndiHomeName) throws
一个ServiceLocator模式的实现
            
    
    
        EJBSQL 一个ServiceLocator模式的实现
            
    
    
        EJBSQL       ServiceLocatorException 
一个ServiceLocator模式的实现
            
    
    
        EJBSQL {
一个ServiceLocator模式的实现
            
    
    
        EJBSQL     EJBLocalHome home 
= null;
一个ServiceLocator模式的实现
            
    
    
        EJBSQL 一个ServiceLocator模式的实现
            
    
    
        EJBSQL     
try 一个ServiceLocator模式的实现
            
    
    
        EJBSQL {
一个ServiceLocator模式的实现
            
    
    
        EJBSQL       home 
= (EJBLocalHome) ic.lookup(jndiHomeName);
一个ServiceLocator模式的实现
            
    
    
        EJBSQL     }

一个ServiceLocator模式的实现
            
    
    
        EJBSQL 一个ServiceLocator模式的实现
            
    
    
        EJBSQL     
catch (NamingException ne) 一个ServiceLocator模式的实现
            
    
    
        EJBSQL {
一个ServiceLocator模式的实现
            
    
    
        EJBSQL       
throw new ServiceLocatorException(ne);
一个ServiceLocator模式的实现
            
    
    
        EJBSQL     }

一个ServiceLocator模式的实现
            
    
    
        EJBSQL 一个ServiceLocator模式的实现
            
    
    
        EJBSQL     
catch (Exception e) 一个ServiceLocator模式的实现
            
    
    
        EJBSQL {
一个ServiceLocator模式的实现
            
    
    
        EJBSQL       
throw new ServiceLocatorException(e);
一个ServiceLocator模式的实现
            
    
    
        EJBSQL     }

一个ServiceLocator模式的实现
            
    
    
        EJBSQL     
return home;
一个ServiceLocator模式的实现
            
    
    
        EJBSQL 
一个ServiceLocator模式的实现
            
    
    
        EJBSQL   }

一个ServiceLocator模式的实现
            
    
    
        EJBSQL 
一个ServiceLocator模式的实现
            
    
    
        EJBSQL 一个ServiceLocator模式的实现
            
    
    
        EJBSQL   
/** *//**
一个ServiceLocator模式的实现
            
    
    
        EJBSQL    *查找一个数据源,并取得一个连接.
一个ServiceLocator模式的实现
            
    
    
        EJBSQL    * 
@param name String 数据源名称
一个ServiceLocator模式的实现
            
    
    
        EJBSQL    * 
@return DataSource ,查找不到则抛出异常.
一个ServiceLocator模式的实现
            
    
    
        EJBSQL    * 
@throws NamingException ,查找不到或是类型不对。
一个ServiceLocator模式的实现
            
    
    
        EJBSQL    * 
*/

一个ServiceLocator模式的实现
            
    
    
        EJBSQL   
public Connection getConnection(String DataSourceJNDIName) throws
一个ServiceLocator模式的实现
            
    
    
        EJBSQL 一个ServiceLocator模式的实现
            
    
    
        EJBSQL       SQLException 
一个ServiceLocator模式的实现
            
    
    
        EJBSQL {
一个ServiceLocator模式的实现
            
    
    
        EJBSQL 一个ServiceLocator模式的实现
            
    
    
        EJBSQL     
try 一个ServiceLocator模式的实现
            
    
    
        EJBSQL {
一个ServiceLocator模式的实现
            
    
    
        EJBSQL       Connection conn 
= this.lookUpDataSource(DataSourceJNDIName).getConnection();
一个ServiceLocator模式的实现
            
    
    
        EJBSQL       conn.setAutoCommit(
false);
一个ServiceLocator模式的实现
            
    
    
        EJBSQL       
//conn.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
一个ServiceLocator模式的实现
            
    
    
        EJBSQL 
      return conn;
一个ServiceLocator模式的实现
            
    
    
        EJBSQL     }

一个ServiceLocator模式的实现
            
    
    
        EJBSQL 一个ServiceLocator模式的实现
            
    
    
        EJBSQL     
catch (Exception e) 一个ServiceLocator模式的实现
            
    
    
        EJBSQL {
一个ServiceLocator模式的实现
            
    
    
        EJBSQL       e.printStackTrace();
一个ServiceLocator模式的实现
            
    
    
        EJBSQL       
throw new SQLException(e.getMessage());
一个ServiceLocator模式的实现
            
    
    
        EJBSQL     }

一个ServiceLocator模式的实现
            
    
    
        EJBSQL   }

一个ServiceLocator模式的实现
            
    
    
        EJBSQL 
一个ServiceLocator模式的实现
            
    
    
        EJBSQL }
相关标签: EJB SQL