package com.rahul.patterns;
import java.util.*;
import javax.naming.*;
import java.rmi.RemoteException;
import javax.ejb.*;
import javax.rmi.PortableRemoteObject;
import java.io.*;
import javax.sql.*;
import javax.jms.*;
import java.sql.*;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.net.URL;
import javax.transaction.*;
public class ServiceLocator{
private static Properties properties=null;
private static ServiceLocator me;
private static InitialContext context =null;
private static Map cache=Collections.synchronizedMap(new HashMap());
private ServiceLocator() throws ServiceLocatorException{
try{
if(properties!=null){
context=new InitialContext(properties);
}else{
context=new InitialContext();
}
}catch(NamingException ne){
throw new ServiceLocatorException("Exception in Constructor ", ne);
}
}
/** This method is to be used before invoking getInstance() of ServiceLocator for the
* first time. The reason for this method is so that certain properties
* can be passed to the InitialContext object during its creation. Examples of
* such properties are
*
* "java.naming.factory.initial" key whose value is "weblogic.jndi.WLInitialContextFactory"
*
* in case of weblogic.
*
* @param pProperties The properties the InitialContext is to be passed while creation
*/
public void setup(Properties pProperties){
this.properties=pProperties;
}
/** Clears the JNDI cache being maintained by this class.
*/
public void refresh(){
cache.clear();
}
/** The ServiceLocator class is implemented as a Singleton.
* This method is the standard method as per the Singleton pattern and returns the static
* reference to the ServiceLocator stored inside the ServiceLocator Class
* @return The single instance of ServiceLocator stored inside this singleton
* @throws ServiceLocatorException This exception is thrown when the instance is being created for the first time
*/
public static ServiceLocator getInstance() throws ServiceLocatorException{
if (me==null){
me=new ServiceLocator();
}
return me;
}
/** Returns the cached EJBHome object for the requested service name.
* @param PJNDIName The name by which the object is bound in the JNDI tree
* @param clazz The class name of the Object being looked up
* @throws ServiceLocatorException If any errors occur on Lookup then this exceps thrown
* @return EJBHome of the object being looked up
*/
private EJBHome getCachedHome(String pJNDIName, Class pClazz) throws ServiceLocatorException{
EJBHome home=(EJBHome)cache.get(pJNDIName);
if (home==null){
home=getHome(pJNDIName,pClazz, false);
cache.put(pJNDIName,home);
}
return home;
}
/** Returns the EJBHome object for the requested service name.
* @param pJNDIName The name by which the object is bound in the JNDI tree
* @param pClazz The class name of the Object being looked up
* @param pFromCache if you want the result from cache the value is true else false
* a parameter of false will invoke JNDI
* @throws ServiceLocatorException If any errors occur on Lookup then this exceps thrown
* @return EJBHome of the object being looked up
*/
public EJBHome getHome(String pJNDIName, Class pClazz , boolean pFromCache) throws ServiceLocatorException{
if (pFromCache){
return getCachedHome(pJNDIName,pClazz);
}else{
try{
Object objref=context.lookup(pJNDIName);
EJBHome home=(EJBHome)PortableRemoteObject.narrow(objref,pClazz);
return home;
}catch(NamingException ne){
throw new ServiceLocatorException("Exception when returning home",ne);
}
}
}
/** Returns the EJBHome object for the requested service name.
* @param pServiceId The name of the service as defined in the Service class
* @param pFromCache if you want the result from cache the value is true else false
* a parameter of false will invoke JNDI to retrieve the object
* @throws ServiceLocatorException If any errors occur on Lookup then this exceps thrown
* @return EJBHome of the object being looked up
*/
public EJBHome getHome(int pServiceId, boolean pFromCache) throws ServiceLocatorException{
return this.getHome(Services.getServiceName(pServiceId),Services.getServiceClass(pServiceId), pFromCache);
}
/** Returns the DataSource object for the requested service name.
* @param pServiceId The service id as defined by the services
* @param pFromCache if you want the result from cache the value is true else false
* a parameter of false will invoke JNDI to retrieve the object
* @throws ServiceLocatorException If any errors occur on Lookup then this exception is thrown
* @return DataSource of the object being looked up
*/
public DataSource getDBConn(int pServiceId , boolean pFromCache) throws ServiceLocatorException{
return this.getDBConn(Services.getServiceName(pServiceId), pFromCache);
}
private DataSource getCachedDBConn(String pServiceName) throws ServiceLocatorException{
DataSource ds= (DataSource) cache.get(pServiceName);
if(ds==null){
ds=getDBConn(pServiceName, false);
cache.put(pServiceName,ds);
}
return ds;
}
/** Returns the DataSource object for the requested service name.
* @param pJNDIName The name by which the object is bound in the JNDI tree
* @param pFromCache if you want the result from cache the value is true else false
* a parameter of false will invoke JNDI to retrieve the object
* @throws ServiceLocatorException If any errors occur on Lookup then this exception is thrown
* @return DataSource of the object being looked up
*/
public DataSource getDBConn(String pJNDIName , boolean pFromCache) throws ServiceLocatorException{
if(pFromCache){
return getCachedDBConn( pJNDIName );
}else{
try{
DataSource ds=(DataSource)this.context.lookup(pJNDIName);
return ds;
}catch(NamingException ne){
throw new ServiceLocatorException("NamingException in getDBConn",ne);
}
}
}
/** Returns the EJBObject object for the requested pEJBHomeJndiName name.
* The EJBObject is not cached since the Home object is a factory
* @param pEJBHomeJndiName The name by which the EJBHome object is bound in the JNDI tree
* @param pEJBHomeClass The EJBHome class name
* @param pEJBRemoteClass The EJBRemote class name
* @throws ServiceLocatorException If any errors occur on Lookup then this exception is thrown
* @return EJBObject
*/
// CustomerTerminal customerTerminal =
//(CustomerTerminal)ServiceLocator.getStatelessEJB(pHomeJndiName, pHomeClass, pEJBRemoteClass);
public EJBObject getStatelessEJB(String pEJBHomeJndiName , Class pEJBHomeClass,
Class pEJBRemoteClass) throws ServiceLocatorException{
EJBObject ejbobject;
EJBHome ejbhome = this.getCachedHome(pEJBHomeJndiName, pEJBHomeClass);
try {
Class aclass[] = new Class[0];
Object aobj[] = new Object[0];
Method method = ejbhome.getClass().getMethod("create", aclass);
ejbobject = (EJBObject)method.invoke(ejbhome, aobj);
}
catch(NoSuchMethodException nosuchmethodexception) {
throw new ServiceLocatorException("Creation method doesn't exist" , nosuchmethodexception);
}
catch(IllegalAccessException illegalaccessexception) {
throw new ServiceLocatorException("Error accessing the create method" , illegalaccessexception);
}
catch(InvocationTargetException invocationtargetexception) {
throw new ServiceLocatorException("Error invoking the create method", invocationtargetexception);
}
catch(ClassCastException classcastexception) {
throw new ServiceLocatorException(" is not an EJBObject", classcastexception);
}
catch(RuntimeException runtimeexception) {
throw new ServiceLocatorException("Couldn't get remote interface " , runtimeexception );
}
if(ejbobject != null)
try {
Class class1 = ejbobject.getClass();
// narrows the stub examples.ejb20.basic.statelessSession.TraderBean_3p5ifg_EOImpl_WLStub
ejbobject = (EJBObject)PortableRemoteObject.narrow(ejbobject, class1);
// narrows to the remote examples.ejb20.basic.statelessSession.Trader
ejbobject = (EJBObject)PortableRemoteObject.narrow(ejbobject, pEJBRemoteClass);
}
catch(ClassCastException classcastexception) {
throw new ServiceLocatorException("Remote interface is not of type javax.ejb.EJBObject" ,
classcastexception );
}
catch(RuntimeException runtimeexception) {
throw new ServiceLocatorException("Couldn't get remote interface for ", runtimeexception);
}
return ejbobject;
}
/** Returns the EJBObject object for the requested Service name.
* The EJBObject is not cached since the Home object is a factory
* @param pServiceId The ServiceId as defined in Services class
* @throws ServiceLocatorException If any errors occur on Lookup then this exception is thrown
* @return EJBObject
*/
public EJBObject getStatelessEJB(int pServiceId) throws ServiceLocatorException{
return this.getStatelessEJB(Services.getServiceName(pServiceId),
Services.getServiceClass(pServiceId),
Services.getServiceRemoteClass(pServiceId));
}
// TopicConnection and QueueConnection , Topic and Queue
/** Returns the TopicConnectionFactory object bound to the pJNDIName
* @param pJNDIName The name by which the object is bound in the JNDI tree
* @param pFromCache if you want the result from cache the value is true else false
* a parameter of false will invoke JNDI to retrieve the object
* @throws ServiceLocatorException If any errors occur on Lookup then this exceps thrown
* @return EJBHome of the object being looked up
*/
public TopicConnectionFactory getTopicConnectionFactory(String pJNDIName, boolean pFromCache)
throws ServiceLocatorException{
if(pFromCache){
return getCachedTopicConnectionFactory(pJNDIName);
}else{
try{
TopicConnectionFactory topicConnectionFactory=(TopicConnectionFactory)context.lookup(pJNDIName);
return topicConnectionFactory;
}catch(NamingException ne){
throw new ServiceLocatorException("unable to getTopicConnection " ,ne);
}
}
}
private TopicConnectionFactory getCachedTopicConnectionFactory(String pJndiName)
throws ServiceLocatorException{
TopicConnectionFactory topicConnectionFactory=(TopicConnectionFactory)cache.get(pJndiName);
if (topicConnectionFactory==null){
topicConnectionFactory=getTopicConnectionFactory(pJndiName, false);
cache.put(pJndiName,topicConnectionFactory);
}
return topicConnectionFactory;
}
/** Returns the TopicConnectionFactory object bound to the pJNDIName from the Service
* @param pServiceId The Service Name as defined in the Services class
* @param pFromCache if you want the result from cache the value is true else false
* a parameter of false will invoke JNDI to retrieve the object
* @throws ServiceLocatorException If any errors occur on Lookup then this exceps thrown
* @return TopicConnectionFactory of the object being looked up
*/
public TopicConnectionFactory getTopicConnectionFactory(int pServiceId , boolean pFromCache)
throws ServiceLocatorException{
return getTopicConnectionFactory(Services.getServiceName(pServiceId), pFromCache);
}
/** Returns the QueueConnectionFactory object bound to the pJNDIName
* @param pJNDIName The name by which the object is bound in the JNDI tree
* @param pFromCache if you want the result from cache the value is true else false
* a parameter of false will invoke JNDI to retrieve the object
* @throws ServiceLocatorException If any errors occur on Lookup then this exceps thrown
* @return QueueConnectionFactory of the object being looked up
*/
public QueueConnectionFactory getQueueConnectionFactory(String pJNDIName , boolean pFromCache)
throws ServiceLocatorException{
if(pFromCache){
return getCachedQueueConnectionFactory(pJNDIName);
}else{
try{
QueueConnectionFactory queueConnectionFactory=(QueueConnectionFactory)context.lookup(pJNDIName);
return queueConnectionFactory;
}catch(NamingException ne){
throw new ServiceLocatorException("unable to getQueueConnectionFactory " ,ne);
}
}
}
private QueueConnectionFactory getCachedQueueConnectionFactory(String pJndiName)
throws ServiceLocatorException{
QueueConnectionFactory queueConnectionFactory=(QueueConnectionFactory)cache.get(pJndiName);
if (queueConnectionFactory==null){
queueConnectionFactory=getQueueConnectionFactory(pJndiName , false);
cache.put(pJndiName,queueConnectionFactory);
}
return queueConnectionFactory;
}
/** Returns the QueueConnectionFactory object bound to the pJNDIName from the Service
* @param pServiceId The Service Name as defined in the Services class
* @param pFromCache if you want the result from cache the value is true else false
* a parameter of false will invoke JNDI to retrieve the object
* @throws ServiceLocatorException If any errors occur on Lookup then this exceps thrown
* @return QueueConnectionFactory of the object being looked up
*/
public QueueConnectionFactory getQueueConnectionFactory(int pServiceId, boolean pFromCache)
throws ServiceLocatorException{
return getQueueConnectionFactory(Services.getServiceName(pServiceId), pFromCache);
}
/** Returns the Topic object bound to the pJNDIName
* @param pJNDIName The JNDIName of the Object being looked up
* @param pFromCache if you want the result from cache the value is true else false
* a parameter of false will invoke JNDI to retrieve the object
* @throws ServiceLocatorException If any errors occur on Lookup then this exceps thrown
* @return Topic of the object being looked up
*/
public Topic getTopic(String pJNDIName , boolean pFromCache) throws ServiceLocatorException{
if(pFromCache){
return getCachedTopic(pJNDIName);
}else{
try{
Topic topic=(Topic)context.lookup(pJNDIName);
return topic;
}catch(NamingException ne){
throw new ServiceLocatorException("unable to getTopic " ,ne);
}
}
}
private Topic getCachedTopic(String pJndiName) throws ServiceLocatorException{
Topic topic=(Topic)cache.get(pJndiName);
if (topic==null){
topic=getTopic(pJndiName , false);
cache.put(pJndiName,topic);
}
return topic;
}
/** Returns the Topic object bound to the pJNDIName from the Service
* @param pServiceId The Service Name as defined in the Services class
* @param pFromCache if you want the result from cache the value is true else false
* a parameter of false will invoke JNDI to retrieve the object
* @throws ServiceLocatorException If any errors occur on Lookup then this exceps thrown
* @return Topic of the object being looked up
*/
public Topic getTopic(int pServiceId , boolean pFromCache) throws ServiceLocatorException{
return getTopic(Services.getServiceName(pServiceId), pFromCache);
}
/** Returns the Queue object bound to the pJNDIName
* @param pJNDIName The JNDIName of the Object being looked up
* @param pFromCache if you want the result from cache the value is true else false
* a parameter of false will invoke JNDI to retrieve the object
* @throws ServiceLocatorException If any errors occur on Lookup then this exceps thrown
* @return Queue of the object being looked up
*/
public Queue getQueue(String pJNDIName, boolean pFromCache) throws ServiceLocatorException{
if(pFromCache){
return getCachedQueue(pJNDIName);
}else{
try{
Queue queue=(Queue)context.lookup(pJNDIName);
return queue;
}catch(NamingException ne){
throw new ServiceLocatorException("unable to getQueue " , ne);
}
}
}
private Queue getCachedQueue(String pJndiName) throws ServiceLocatorException{
Queue queue=(Queue)cache.get(pJndiName);
if (queue==null){
queue=getQueue(pJndiName , false);
cache.put(pJndiName,queue);
}
return queue;
}
/** Returns the Queue object bound to the pJNDIName from the Service
* @param pServiceId The Service Name as defined in the Services class
* @param pFromCache if you want the result from cache the value is true else false
* a parameter of false will invoke JNDI to retrieve the object
* @throws ServiceLocatorException If any errors occur on Lookup then this exceps thrown
* @return Queue of the object being looked up
*/
public Queue getQueue(int pServiceId , boolean pFromCache) throws ServiceLocatorException{
return getQueue(Services.getServiceName(pServiceId), pFromCache);
}
/** Returns the cached EJBLocalHome object for the requested service name.
* @param name The name by which the object is bound in the JNDI tree
* @param clazz The class name of the Home Object being looked up
* @throws ServiceLocatorException If any errors occur on Lookup then this exception is thrown
* @return EJBLocalHome of the object being looked up
*
*/
private EJBLocalHome getCachedLocalHome(String name, Class clazz) throws ServiceLocatorException{
EJBLocalHome home=(EJBLocalHome)cache.get(name);
if (home==null){
home=(EJBLocalHome)getLocalHome(name,clazz,false);
cache.put(name,home);
}
return home;
}
/** Returns the EJBLocalHome object for the requested service name.
* @param name The name by which the object is bound in the JNDI tree
* @param clazz The class name of the Home Object being looked up
* @param pFromCache if you want the result from cache the value is true else false
* a parameter of false will invoke JNDI to retrieve the object
* @throws ServiceLocatorException If any errors occur on Lookup then this exception is thrown
* @return EJBLocalHome of the object being looked up
*/
public EJBLocalHome getLocalHome(String name, Class clazz , boolean pFromCache) throws ServiceLocatorException{
if(pFromCache){
return getCachedLocalHome(name,clazz);
}else{
try{
Object objref=context.lookup(name);
EJBLocalHome localHome=(EJBLocalHome)PortableRemoteObject.narrow(objref,clazz);
return localHome;
}catch(NamingException ne){
throw new ServiceLocatorException("Exception when returning localhome", ne);
}
}
}
/** Returns the EJBLocalHome object for the requested service name.
* @param pServiceId The Service Name as defined in this class
* @param pFromCache if you want the result from cache the value is true else false
* a parameter of false will invoke JNDI to retrieve the object
* @throws ServiceLocatorException If any errors occur on Lookup then this exception is thrown
* @return EJBLocalHome of the object being looked up
*/
public EJBLocalHome getLocalHome(int pServiceId, boolean pFromCache)
throws ServiceLocatorException{
return this.getLocalHome(Services.getServiceName(pServiceId),
Services.getServiceClass(pServiceId), pFromCache);
}
/** Returns the mail Session object for the requested service name.
* @param pJNDIName The JNDI name by which this parameter is to be looked up
* @throws ServiceLocatorException This exception is thrown when a JNDI NamingException is thrown
* @param pFromCache if you want the result from cache the value is true else false
* a parameter of false will invoke JNDI
* @return an instance of javax.mail.Session that is bound in the JNDI tree
*/
public javax.mail.Session getMailSession(String pJNDIName, boolean pFromCache)
throws ServiceLocatorException {
if(pFromCache){
return getCachedMailSession(pJNDIName);
}else {
javax.mail.Session session=null;
try{
session = (javax.mail.Session)context.lookup(pJNDIName);
}catch(NamingException ne){
throw new ServiceLocatorException("Naming Exception thrown in getMailSession()", ne);
}
Properties props = new Properties();
props.put("mail.smtp.host", Services.HOST_NAME);
return session.getInstance( props,null);
}
}
/** Returns the cached mail Session object for the requested service name.
* @param pJNDIName The JNDI name by which this parameter is to be looked up
* @throws ServiceLocatorException This exception is thrown when a JNDI NamingException is thrown
* @return javax.mail.Session
*/
private javax.mail.Session getCachedMailSession(String pJNDIName) throws ServiceLocatorException {
javax.mail.Session session=(javax.mail.Session )cache.get(pJNDIName);
if (session==null){
session=getMailSession(pJNDIName, false);
cache.put(pJNDIName,session);
}
return session;
}
private URL getCachedURL(String pJNDIName) throws ServiceLocatorException{
URL url=(URL)cache.get(pJNDIName);
if (url==null){
url=getURL(pJNDIName, false);
cache.put(pJNDIName,url);
}
return url;
}
/**returns the URL object bound by the pJNDIName in the JNDI tree
* @param pJNDIName The name by which the String is bound in JNDI
* @param pFromCache if you want the result from cache the value is true else false
* a parameter of false will invoke JNDI
* @throws ServiceLocatorException This exception is thrown when a JNDI NamingException is thrown
* @return the boolean value corresponding to the env pJNDIName name.
*/
public URL getURL(String pJNDIName , boolean pFromCache) throws ServiceLocatorException {
if(pFromCache){
return getCachedURL(pJNDIName);
}else {
try{
URL url = (URL)context.lookup(pJNDIName);
return url;
}catch(NamingException ne){
throw new ServiceLocatorException("Naming Exception thrown in getURL()", ne);
}
}
}
/**returns the boolean bound by the pJNDIName in the JNDI tree
* @param pJNDIName The name by which the String is bound in JNDI
* @param pFromCache if you want the result from cache the value is true else false
* a parameter of false will invoke JNDI
* @throws ServiceLocatorException This exception is thrown when a JNDI NamingException is thrown
* @return the boolean value corresponding to the env pJNDIName name.
*/
public boolean getBoolean(String pJNDIName, boolean pFromCache) throws ServiceLocatorException {
if(pFromCache){
return getCachedBoolean(pJNDIName);
}else {
try {
Boolean bool = (Boolean)context.lookup(pJNDIName);
return bool.booleanValue();
} catch (NamingException ne) {
throw new ServiceLocatorException("getBoolean failed with NamingException",ne);
}
}
}
private boolean getCachedBoolean(String pJNDIName) throws ServiceLocatorException {
Boolean bool=(Boolean)cache.get(pJNDIName);
if (bool==null){
bool=new Boolean(getBoolean(pJNDIName ,false));
cache.put(pJNDIName,bool);
}
return bool.booleanValue();
}
/**returns the String bound by the pJNDIName in the JNDI tree
* @param pJNDIName The name by which the String is bound in JNDI
* @param pFromCache if you want the result from cache the value is true else false
* a parameter of false will invoke JNDI
* @throws ServiceLocatorException This exception is thrown when a JNDI NamingException is thrown
* @return the String value corresponding to the env pJNDIName name.
*/
public String getString(String pJNDIName , boolean pFromCache) throws ServiceLocatorException {
if(pFromCache){
return getCachedString(pJNDIName);
}else {
try {
return (String)context.lookup(pJNDIName);
} catch (NamingException ne) {
throw new ServiceLocatorException("getString failed",ne);
}
}
}
private String getCachedString(String pJNDIName) throws ServiceLocatorException {
String envEntry =(String)cache.get(pJNDIName);
if (envEntry==null){
envEntry=getString(pJNDIName, false);
cache.put(pJNDIName,envEntry);
}
return envEntry;
}
/**returns the String bound by the pJNDIName in the JNDI tree
* @param pJNDIName The name by which the String is bound in JNDI
* @param pFromCache if you want the result from cache the value is true else false
* a parameter of false will invoke JNDI
* @throws ServiceLocatorException This exception is thrown when a JNDI NamingException is thrown
* @return the String value corresponding to the env pJNDIName name.
*/
public Character getCharacter(String pJNDIName , boolean pFromCache) throws ServiceLocatorException {
if(pFromCache){
return getCachedCharacter(pJNDIName);
}else {
try {
return (Character)context.lookup(pJNDIName);
} catch (NamingException ne) {
throw new ServiceLocatorException("getCharacter failed",ne);
}
}
}
private Character getCachedCharacter(String pJNDIName) throws ServiceLocatorException {
Character envEntry =(Character)cache.get(pJNDIName);
if (envEntry==null){
envEntry=getCharacter(pJNDIName, false);
cache.put(pJNDIName,envEntry);
this.log("putting in cache and setting it as "+envEntry);
}
return envEntry;
}
/**returns the Byte bound by the pJNDIName in the JNDI tree
* @param pJNDIName The name by which the String is bound in JNDI
* @param pFromCache if you want the result from cache the value is true else false
* a parameter of false will invoke JNDI
* @throws ServiceLocatorException This exception is thrown when a JNDI NamingException is thrown
* @return the Byte value corresponding to the env pJNDIName name.
*/
public Byte getByte(String pJNDIName , boolean pFromCache) throws ServiceLocatorException {
if(pFromCache){
return getCachedByte(pJNDIName);
}else {
try {
return (Byte)context.lookup(pJNDIName);
} catch (NamingException ne) {
throw new ServiceLocatorException("getByte failed",ne);
}
}
}
private Byte getCachedByte(String pJNDIName) throws ServiceLocatorException {
Byte envEntry =(Byte)cache.get(pJNDIName);
if (pJNDIName==null){
envEntry=getByte(pJNDIName, false);
cache.put(pJNDIName,envEntry);
}
return envEntry;
}
/**returns the Short bound by the pJNDIName in the JNDI tree
* @param pJNDIName The name by which the String is bound in JNDI
* @param pFromCache if you want the result from cache the value is true else false
* a parameter of false will invoke JNDI
* @throws ServiceLocatorException This exception is thrown when a JNDI NamingException is thrown
* @return the Short value corresponding to the env pJNDIName name.
*/
public Short getShort(String pJNDIName , boolean pFromCache) throws ServiceLocatorException {
if(pFromCache){
return getCachedShort(pJNDIName);
}else {
try {
return (Short)context.lookup(pJNDIName);
} catch (NamingException ne) {
throw new ServiceLocatorException("getShort failed",ne);
}
}
}
private Short getCachedShort(String pJNDIName) throws ServiceLocatorException {
Short envEntry =(Short)cache.get(pJNDIName);
if (pJNDIName==null){
envEntry=getShort(pJNDIName, false);
cache.put(pJNDIName,envEntry);
}
return envEntry;
}
/**returns the Integer bound by the pJNDIName in the JNDI tree
* @param pJNDIName The name by which the String is bound in JNDI
* @param pFromCache if you want the result from cache the value is true else false
* a parameter of false will invoke JNDI
* @throws ServiceLocatorException This exception is thrown when a JNDI NamingException is thrown
* @return the Integer value corresponding to the env pJNDIName name.
*/
public Integer getInteger(String pJNDIName , boolean pFromCache) throws ServiceLocatorException {
if(pFromCache){
return getCachedInteger(pJNDIName);
}else {
try {
return (Integer)context.lookup(pJNDIName);
} catch (NamingException ne) {
throw new ServiceLocatorException("getInteger failed",ne);
}
}
}
private Integer getCachedInteger(String pJNDIName) throws ServiceLocatorException {
Integer envEntry =(Integer)cache.get(pJNDIName);
if (pJNDIName==null){
envEntry=getInteger(pJNDIName, false);
cache.put(pJNDIName,envEntry);
}
return envEntry;
}
/**returns the Long bound by the pJNDIName in the JNDI tree
* @param pJNDIName The name by which the String is bound in JNDI
* @param pFromCache if you want the result from cache the value is true else false
* a parameter of false will invoke JNDI
* @throws ServiceLocatorException This exception is thrown when a JNDI NamingException is thrown
* @return the Long value corresponding to the env pJNDIName name.
*/
public Long getLong(String pJNDIName , boolean pFromCache) throws ServiceLocatorException {
if(pFromCache){
return getCachedLong(pJNDIName);
}else {
try {
return (Long)context.lookup(pJNDIName);
} catch (NamingException ne) {
throw new ServiceLocatorException("getLong failed",ne);
}
}
}
private Long getCachedLong(String pJNDIName) throws ServiceLocatorException {
Long envEntry =(Long)cache.get(pJNDIName);
if (pJNDIName==null){
envEntry=getLong(pJNDIName, false);
cache.put(pJNDIName,envEntry);
}
return envEntry;
}
/**returns the Double bound by the pJNDIName in the JNDI tree
* @param pJNDIName The name by which the String is bound in JNDI
* @param pFromCache if you want the result from cache the value is true else false
* a parameter of false will invoke JNDI
* @throws ServiceLocatorException This exception is thrown when a JNDI NamingException is thrown
* @return the Double value corresponding to the env pJNDIName name.
*/
public Double getDouble(String pJNDIName , boolean pFromCache) throws ServiceLocatorException {
if(pFromCache){
return getCachedDouble(pJNDIName);
}else {
try {
return (Double)context.lookup(pJNDIName);
} catch (NamingException ne) {
throw new ServiceLocatorException("getDouble failed",ne);
}
}
}
private Double getCachedDouble(String pJNDIName) throws ServiceLocatorException {
Double envEntry =(Double)cache.get(pJNDIName);
if (pJNDIName==null){
envEntry=getDouble(pJNDIName, false);
cache.put(pJNDIName,envEntry);
}
return envEntry;
}
/**returns the Float bound by the pJNDIName in the JNDI tree
* @param pJNDIName The name by which the String is bound in JNDI
* @param pFromCache if you want the result from cache the value is true else false
* a parameter of false will invoke JNDI
* @throws ServiceLocatorException This exception is thrown when a JNDI NamingException is thrown
* @return the Float value corresponding to the env pJNDIName name.
*/
public Float getFloat(String pJNDIName , boolean pFromCache) throws ServiceLocatorException {
if(pFromCache){
return getCachedFloat(pJNDIName);
}else {
try {
return (Float)context.lookup(pJNDIName);
} catch (NamingException ne) {
throw new ServiceLocatorException("getFloat failed",ne);
}
}
}
private Float getCachedFloat(String pJNDIName) throws ServiceLocatorException {
Float envEntry =(Float)cache.get(pJNDIName);
if (pJNDIName==null){
envEntry=getFloat(pJNDIName, false);
cache.put(pJNDIName,envEntry);
}
return envEntry;
}
/**
* This method obtains the UserTransaction itself for a caller
* The JNDI Name being looked up being "java:comp/UserTransaction"
* @param pFromCache if you want the result from cache the value is true else false
* a parameter of false will invoke JNDI
* @throws ServiceLocatorException This exception is thrown when a JNDI NamingException is thrown
* @return the UserTransaction corresponding to the name parameter
*/
public UserTransaction getUserTransaction(boolean pFromCache) throws ServiceLocatorException {
String uTName=Services.USER_TRANSACTION_JNDI_NAME;
UserTransaction userTransaction = null;
if(pFromCache){
return getCachedUserTransaction();
}else{
try {
if (cache.containsKey(uTName)) {
userTransaction = (UserTransaction) cache.get(uTName);
} else {
userTransaction = (UserTransaction)context.lookup(uTName);
}
}catch (NamingException ne) {
throw new ServiceLocatorException("Naming exception thrown",ne);
}
}
return userTransaction;
}
/**
* This method obtains the Cached UserTransaction itself for a caller
* @param pFromCache if you want the result from cache the value is true else false
* a parameter of false will invoke JNDI
* @throws ServiceLocatorException This exception is thrown when a JNDI NamingException is thrown
* @return the UserTransaction
*/
private UserTransaction getCachedUserTransaction() throws ServiceLocatorException {
String uTName=Services.USER_TRANSACTION_JNDI_NAME;
UserTransaction userTransaction = (UserTransaction)cache.get(uTName);
if (userTransaction==null){
userTransaction=getUserTransaction(false);
cache.put(uTName, userTransaction);
}
return userTransaction ;
}
private void log(String s) {
if(VERBOSE) {
System.out.println(s);
}
}
boolean VERBOSE=true;
}