cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/factory Constants.java EjbFactory.java ResourceEnvFactory.java ResourceFactory.java TransactionFactory.java
remm01/01/22 19:43:55 Modified:catalina/src/share/org/apache/naming/factory Constants.java EjbFactory.java ResourceEnvFactory.java ResourceFactory.java TransactionFactory.java Log: - Portback the pluggability enhancements for the JNDI object factories. Revision ChangesPath 1.2 +4 -2 jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/factory/Constants.java Index: Constants.java === RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/factory/Constants.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- Constants.java2000/11/04 06:46:09 1.1 +++ Constants.java2001/01/23 03:43:53 1.2 @@ -1,7 +1,7 @@ /* - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/factory/Constants.java,v 1.1 2000/11/04 06:46:09 remm Exp $ - * $Revision: 1.1 $ - * $Date: 2000/11/04 06:46:09 $ + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/factory/Constants.java,v 1.2 2001/01/23 03:43:53 remm Exp $ + * $Revision: 1.2 $ + * $Date: 2001/01/23 03:43:53 $ * * * @@ -92,5 +92,7 @@ Package + ".TyrexTransactionFactory"; public static final String OBJECT_FACTORIES = ""; + +public static final String FACTORY = "factory"; } 1.2 +41 -6 jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/factory/EjbFactory.java Index: EjbFactory.java === RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/factory/EjbFactory.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- EjbFactory.java 2000/11/04 06:46:09 1.1 +++ EjbFactory.java 2001/01/23 03:43:53 1.2 @@ -1,7 +1,7 @@ /* - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/factory/EjbFactory.java,v 1.1 2000/11/04 06:46:09 remm Exp $ - * $Revision: 1.1 $ - * $Date: 2000/11/04 06:46:09 $ + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/factory/EjbFactory.java,v 1.2 2001/01/23 03:43:53 remm Exp $ + * $Revision: 1.2 $ + * $Date: 2001/01/23 03:43:53 $ * * * @@ -77,7 +77,7 @@ * Object factory for EJBs. * * @author Remy Maucherat - * @version $Revision: 1.1 $ $Date: 2000/11/04 06:46:09 $ + * @version $Revision: 1.2 $ $Date: 2001/01/23 03:43:53 $ */ public class EjbFactory @@ -106,11 +106,46 @@ */ public Object getObjectInstance(Object obj, Name name, Context nameCtx, Hashtable environment) -throws NamingException { +throws Exception { if (obj instanceof EjbRef) { Reference ref = (Reference) obj; -// Does nothing yet +ObjectFactory factory = null; +RefAddr factoryRefAddr = ref.get(Constants.FACTORY); +if (factoryRefAddr != null) { +// Using the specified factory +String factoryClassName = +factoryRefAddr.getContent().toString(); +// Loading factory +ClassLoader tcl = +Thread.currentThread().getContextClassLoader(); +Class factoryClass = null; +if (tcl != null) { +try { +factoryClass = tcl.loadClass(factoryClassName); +} catch(ClassNotFoundException e) { +} +} else { +try { +factoryClass = Class.forName(factoryClassName); +} catch(ClassNotFoundException e) { +} +} +if (factoryClass != null) { +try { +factory = (ObjectFactory) factoryClass.newInstance(); +} catch(Throwable t) { +} +} +} +// Note: No defaults here +if (factory != null) { +return factory.getObjectInstance +(obj, name, nameCtx, environment); +} else { +throw new NamingException +("Cannot create resource instance"); +} } return null; 1.2 +41 -6 jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/factory/ResourceEnvFactory.java Index: ResourceEnvFactory.java
cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/factory Constants.java EjbFactory.java ResourceEnvFactory.java ResourceFactory.java TransactionFactory.java TyrexDataSourceFactory.java TyrexTransactionFactory.java LocalStrings.properties
remm00/11/03 22:46:10 Modified:catalina build.xml catalina/src/share/org/apache/catalina/core StandardContext.java Added: catalina/src/share/org/apache/naming EjbRef.java ResourceEnvRef.java ResourceRef.java TransactionRef.java catalina/src/share/org/apache/naming/factory Constants.java EjbFactory.java ResourceEnvFactory.java ResourceFactory.java TransactionFactory.java TyrexDataSourceFactory.java TyrexTransactionFactory.java Removed: catalina/src/share/org/apache/naming EjbRefAddr.java ResourceEnvRefAddr.java ResourceRefAddr.java catalina/src/share/org/apache/naming/factory LocalStrings.properties Log: - Removed the address references, and replaced them with references (EjbRefAddr - EjbRef, ResourceEnvRefAddr - ResourceEnvRef, ResourceRefAddr - ResourceRef). It makes the code simpler and easier to understand. - Modified StandardContext to reflect this and create the right objects. - Add a Tyrex resource factory. Instructions on how to use it to follow shortly, as soon as all the issues are ironed out. Although the DataSource is successfully instantiated, some more configuration is needed. - The object factories are packaged in a separate JAR file (lib/namingfactory.jar), to avoid classloading related problems. - Object factory selector, which should be more efficient than the built in JNDI mechanism. There will be one for each type (resource, ejb, resource-env). The first one is the ResourceFactory, which checks the requested type and the parameters given to select the appropritate factory. As there's only one factory right now, it can only select that one. - Add the selector factories for EJB and resource env (without any actual factories) - Add transaction reference object. - Add a transaction factory selector. - Add a wrapper to get a UserTransaction object from Tyrex. - The StandardContext will now bind a reference to a user transaction in java:comp/UserTransaction as recommended by the J2EE spec. Revision ChangesPath 1.20 +19 -1 jakarta-tomcat-4.0/catalina/build.xml Index: build.xml === RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/build.xml,v retrieving revision 1.19 retrieving revision 1.20 diff -u -r1.19 -r1.20 --- build.xml 2000/11/02 06:14:07 1.19 +++ build.xml 2000/11/04 06:46:07 1.20 @@ -26,6 +26,12 @@ mkdir dir="${catalina.build}/conf"/ mkdir dir="${catalina.build}/lib"/ mkdir dir="${catalina.build}/server"/ + +!-- === Conditional Compilation Falgs -- +available property="tyrex.present" + classname="tyrex.jdbc.ServerDataSource" / +available property="jta.present" + classname="javax.transaction.UserTransaction" / /target @@ -72,7 +78,14 @@ javac srcdir="src/share" destdir="${catalina.build}/classes" classpath="${parser.jar}:${jaxp.jar}:${regexp.jar}:${servlet.jar}:${jcert.jar}:${jnet.jar}:${jsse.jar}:${jmxri.jar}" deprecation="off" debug="on" optimize="off" target="1.2" - excludes="**/CVS/**"/ + excludes="**/CVS/**" + exclude name="**/factory/TyrexDataSourceFactory.java" + unless="tyrex.present" / + exclude name="**/factory/TyrexTransactionFactory.java" + unless="tyrex.present" / + exclude name="**/factory/TransactionFactory.java" + unless="jta.present" / +/javac !-- Copy static resource files -- copydir src="src/share"dest="${catalina.build}/classes" @@ -87,6 +100,11 @@ jar jarfile="${catalina.build}/bin/naming.jar" basedir="${catalina.build}/classes" includes="**/org/apache/naming/**" + excludes="**/org/apache/naming/factory/**" + / +jar jarfile="${catalina.build}/lib/namingfactory.jar" + basedir="${catalina.build}/classes" + includes="**/org/apache/naming/factory/**" / /target 1.28 +19 -14 jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/StandardContext.java Index: StandardContext.java === RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/StandardContext.java,v retrieving revision 1.27 retrieving revision 1.28 diff -u -r1.27 -r1.28 --- StandardContext.java 2000/11/03 06:46:54 1.27 +++ StandardContext.java 2000/11/04 06:46:07 1.28 @@ -1,7 +1,7 @@ /* - * $Header: