Thanks for the quick response guys. I should be able to play with that release tomorrow. I'll let you know if I have any problems. I'm really impressed with this embedded container idea and the possibility that I might be able drop some WSAD licenses if I can POC this idea and wean some guys off their WTE.
Stan -----Original Message----- From: David Blevins [mailto:[EMAIL PROTECTED] Sent: Tuesday, October 04, 2005 2:52 PM To: [email protected] Subject: Re: [openejb-user] Newbie issues with OpenEJB On Oct 4, 2005, at 11:04 AM, Jeremy Whitlock wrote: > Stan, > This is a known container issue that David Blevins is fixing. He will > be able to tell you what is going on there. As far as the maven build, > I'll need to verify. If your Maven repo is out of date then that could > happen. > Let me play with it and I'll go from there. > Both issues should be fixed in 1.0-20050929, let's see how far we get with that. -David > On 10/4/05, Stan Guillory <[EMAIL PROTECTED]> wrote: > >> >> >> Okay, I got issue (1) figured out. I did not add every single jar >> file in the lib directory of OpenEJB to my client classpath. I had >> only added the geronimo j2ee jar, the openejb core jar, and the >> openejb loader jar. >> Once I added the entire contents of the openejb/lib directory, I was >> able to run my ejb in an embedded container. >> >> I still haven't gotten around the other two issues, i.e., (1) The >> remote server throws a ClassNotFoundException claiming that it can't >> find the class for the home interface of my ejb, and (2) the maven >> build fails with a ton of unresolved symbol errors. >> >> Thanks, >> Stan >> >> >> -----Original Message----- >> From: Stan Guillory [mailto:[EMAIL PROTECTED] >> Sent: Tuesday, October 04, 2005 12:32 PM >> To: [email protected] >> Subject: [openejb-user] Newbie issues with OpenEJB >> >> Hello, >> I am interested in using the embedded OpenEJB container for testing >> EJBs. I am having three key problems that I hope someone can help me >> with: >> >> 1) When I try to run a client that uses the embedded container, I get >> the following exception/stack trace: >> >> run-client: >> [java] javax.naming.NamingException: Attempted to load OpenEJB. >> null [Root exception is java.lang.ClassCastException] [java] at >> org.openejb.client.LocalInitialContextFactory.getInitialContext >> (LocalIni >> tialContextFactory.java:74) >> [java] at >> javax.naming.spi.NamingManager.getInitialContext >> (NamingManager.java:662) >> [java] at >> javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java: >> 243) >> [java] at >> javax.naming.InitialContext.init(InitialContext.java:219) >> [java] at >> javax.naming.InitialContext.<init>(InitialContext.java:195) >> [java] at examples.ch03.HelloClient.main(HelloClient.java:26) >> [java] Caused by: java.lang.ClassCastException [java] at >> org.openejb.loader.OpenEJBInstance.init(OpenEJBInstance.java:78) >> [java] at >> org.openejb.client.LocalInitialContextFactory.init >> (LocalInitialContextFa >> ctory.java:86) >> [java] at >> org.openejb.client.LocalInitialContextFactory.getInitialContext >> (LocalIni >> tialContextFactory.java:72) >> [java] ... 5 more >> >> >> 2) When I try to run the remote server and deploy my beans into it, >> just to see if I can get something working, I get a remote exception >> from the server dues to a ClassNotFoundException, indicating that it >> can't find the Home interface class for my ejb. The server logs >> indicate that the ejb jar deployed successfully, which I assumed >> would put my ejb jar on the classloader. The ejb jar is in my build >> tree, not in the tree of the openejb install. Adding my jar to the >> CLASSPATH environment variable before starting openejb did not help, >> not that I expected it would given the contents of the openejb shell >> script. >> >> 3) When I try to build openejb from the source package I got off the >> site (trying to step in diagnose the classcast exception), the maven >> builds with the following errors: >> >> __ __ >> | \/ |__ _Apache__ ___ >> | |\/| / _` \ V / -_) ' \ ~ intelligent projects ~ >> |_| |_\__,_|\_/\___|_||_| v. 1.0.2 >> >> Starting the reactor... >> Our processing order: >> OpenEJB :: Core >> OpenEJB :: Loader >> Examples :: Movie Fun Application >> OpenEJB :: Integration Tests >> OpenEJB :: WebAdmin >> +---------------------------------------- >> | Executing (default): OpenEJB :: Core >> | Memory: 4M/6M >> +---------------------------------------- >> build:start: >> >> default: >> modules:default: >> modules:reactor:init: >> >> build:start: >> >> default: >> java:prepare-filesystem: >> >> java:compile: >> [depend] Deleted 0 out of date files in 0 seconds [echo] Compiling to >> /opt/dev/sguillor/JavaThirdParty/openejb/1.0-beta1/modules/core/ >> target/c >> lasses >> [javac] Compiling 407 source files to >> /opt/dev/sguillor/JavaThirdParty/openejb/1.0-beta1/modules/core/ >> target/c >> lasses >> /opt/dev/sguillor/JavaThirdParty/openejb/1.0-beta1/modules/core/ >> src/java >> /org/openejb/alt/assembler/classic/AssemblerTool.java:163: cannot >> resolve symbol symbol : class ConnectionManagerInfo >> location: class org.openejb.alt.assembler.classic.AssemblerTool >> public ConnectionManager >> assembleConnectionManager(ConnectionManagerInfo cmInfo) ^ >> /opt/dev/sguillor/JavaThirdParty/openejb/1.0-beta1/modules/core/ >> src/java >> /org/openejb/core/DeploymentInfo.java:72: cannot resolve symbol >> symbol >> : class StatelessBeanManagedTxPolicy >> location: package stateless >> import org.openejb.core.stateless.StatelessBeanManagedTxPolicy; >> ^ >> /opt/dev/sguillor/JavaThirdParty/openejb/1.0-beta1/modules/core/ >> src/java >> /org/openejb/alt/assembler/classic/AssemblerTool.java:341: cannot >> resolve symbol symbol : class MethodTransactionInfo >> location: class org.openejb.alt.assembler.classic.AssemblerTool >> public void applyTransactionAttributes(DeploymentInfo >> deploymentInfo, MethodTransactionInfo[] mtis) { >> >> ^ >> /opt/dev/sguillor/JavaThirdParty/openejb/1.0-beta1/modules/core/ >> src/java >> /org/openejb/alt/assembler/classic/ContainerSystemInfo.java:59: >> cannot >> resolve symbol symbol : class MethodTransactionInfo >> location: class org.openejb.alt.assembler.classic.ContainerSystemInfo >> public MethodTransactionInfo[] methodTransactions; ^ >> /opt/dev/sguillor/JavaThirdParty/openejb/1.0-beta1/modules/core/ >> src/java >> /org/openejb/alt/assembler/classic/FacilitiesInfo.java:91: cannot >> resolve symbol symbol : class ConnectionManagerInfo >> location: class org.openejb.alt.assembler.classic.FacilitiesInfo >> public ConnectionManagerInfo [] connectionManagers; ^ >> /opt/dev/sguillor/JavaThirdParty/openejb/1.0-beta1/modules/core/ >> src/java >> /org/openejb/alt/assembler/classic/JndiEncInfo.java:91: cannot >> resolve symbol symbol : class EjbLocalReferenceInfo >> location: class org.openejb.alt.assembler.classic.JndiEncInfo >> public EjbLocalReferenceInfo[] ejbLocalReferences; ^ >> /opt/dev/sguillor/JavaThirdParty/openejb/1.0-beta1/modules/core/ >> src/java >> /org/openejb/alt/assembler/classic/JndiEncInfo.java:92: cannot >> resolve symbol symbol : class ResourceReferenceInfo >> location: class org.openejb.alt.assembler.classic.JndiEncInfo >> public ResourceReferenceInfo [] resourceRefs; ^ >> /opt/dev/sguillor/JavaThirdParty/openejb/1.0-beta1/modules/core/ >> src/java >> /org/openejb/alt/assembler/classic/JndiEncBuilder.java:72: cannot >> resolve symbol symbol : class EjbLocalReferenceInfo >> location: class org.openejb.alt.assembler.classic.JndiEncBuilder >> private final EjbLocalReferenceInfo[] ejbLocalReferences; ^ >> /opt/dev/sguillor/JavaThirdParty/openejb/1.0-beta1/modules/core/ >> src/java >> /org/openejb/alt/assembler/classic/JndiEncBuilder.java:74: cannot >> resolve symbol symbol : class ResourceReferenceInfo >> location: class org.openejb.alt.assembler.classic.JndiEncBuilder >> private final ResourceReferenceInfo[] resourceRefs; ^ >> /opt/dev/sguillor/JavaThirdParty/openejb/1.0-beta1/modules/core/ >> src/java >> /org/openejb/resource/jdbc/JdbcManagedConnection.java:64: cannot >> resolve symbol symbol : class JdbcManagedConnectionMetaData >> location: class org.openejb.resource.jdbc.JdbcManagedConnection >> private final JdbcManagedConnectionMetaData metaData; ^ >> /opt/dev/sguillor/JavaThirdParty/openejb/1.0-beta1/modules/core/ >> src/java >> /org/openejb/alt/assembler/classic/AssemblerTool.java:347: cannot >> resolve symbol symbol : class MethodTransactionInfo >> location: class org.openejb.alt.assembler.classic.AssemblerTool >> MethodTransactionInfo transInfo = mtis[i]; ^ >> /opt/dev/sguillor/JavaThirdParty/openejb/1.0-beta1/modules/core/ >> src/java >> /org/openejb/alt/assembler/classic/Assembler.java:280: cannot resolve >> symbol symbol : class ConnectionManagerInfo >> location: class org.openejb.alt.assembler.classic.Assembler >> ConnectionManagerInfo cmInfo = >> configInfo.facilities.connectionManagers[i]; >> ^ >> /opt/dev/sguillor/JavaThirdParty/openejb/1.0-beta1/modules/core/ >> src/java >> /org/openejb/core/DeploymentInfo.java:258: cannot resolve symbol >> symbol >> : class StatelessBeanManagedTxPolicy >> location: class org.openejb.core.DeploymentInfo policy = new >> StatelessBeanManagedTxPolicy((TransactionContainer) container ); ^ >> /opt/dev/sguillor/JavaThirdParty/openejb/1.0-beta1/modules/core/ >> src/java >> /org/openejb/alt/assembler/classic/ContainerBuilder.java:107: cannot >> resolve symbol symbol : class EnterpriseBeanBuilder >> location: class org.openejb.alt.assembler.classic.ContainerBuilder >> EnterpriseBeanBuilder deploymentBuilder = new >> EnterpriseBeanBuilder(classLoader, ejbInfo); ^ >> /opt/dev/sguillor/JavaThirdParty/openejb/1.0-beta1/modules/core/ >> src/java >> /org/openejb/alt/assembler/classic/ContainerBuilder.java:107: cannot >> resolve symbol symbol : class EnterpriseBeanBuilder >> location: class org.openejb.alt.assembler.classic.ContainerBuilder >> EnterpriseBeanBuilder deploymentBuilder = new >> EnterpriseBeanBuilder(classLoader, ejbInfo); ^ >> /opt/dev/sguillor/JavaThirdParty/openejb/1.0-beta1/modules/core/ >> src/java >> /org/openejb/alt/assembler/classic/JndiEncBuilder.java:97: cannot >> resolve symbol symbol : class EjbLocalReferenceInfo >> location: class org.openejb.alt.assembler.classic.JndiEncBuilder >> ejbLocalReferences = (jndiEnc != null && jndiEnc.ejbLocalReferences >> != null) ? jndiEnc.ejbLocalReferences : >> new >> EjbLocalReferenceInfo[]{}; >> >> ^ >> /opt/dev/sguillor/JavaThirdParty/openejb/1.0-beta1/modules/core/ >> src/java >> /org/openejb/alt/assembler/classic/JndiEncBuilder.java:99: cannot >> resolve symbol symbol : class ResourceReferenceInfo >> location: class org.openejb.alt.assembler.classic.JndiEncBuilder >> resourceRefs = (jndiEnc != null && jndiEnc.resourceRefs != null) ? >> jndiEnc.resourceRefs : new ResourceReferenceInfo[]{}; >> >> ^ >> /opt/dev/sguillor/JavaThirdParty/openejb/1.0-beta1/modules/core/ >> src/java >> /org/openejb/alt/assembler/classic/JndiEncBuilder.java:127: cannot >> resolve symbol symbol : class EjbLocalReferenceInfo >> location: class org.openejb.alt.assembler.classic.JndiEncBuilder >> EjbLocalReferenceInfo referenceInfo = ejbLocalReferences[i]; ^ >> /opt/dev/sguillor/JavaThirdParty/openejb/1.0-beta1/modules/core/ >> src/java >> /org/openejb/alt/assembler/classic/JndiEncBuilder.java:171: cannot >> resolve symbol symbol : class ResourceReferenceInfo >> location: class org.openejb.alt.assembler.classic.JndiEncBuilder >> ResourceReferenceInfo referenceInfo = resourceRefs[i]; ^ >> /opt/dev/sguillor/JavaThirdParty/openejb/1.0-beta1/modules/core/ >> src/java >> /org/openejb/alt/assembler/classic/xml/ContainerSystem.java:147: >> cannot >> resolve symbol symbol : class MethodTransaction >> location: class org.openejb.alt.assembler.classic.xml.ContainerSystem >> dos = DomTools.collectChildElementsByType(node, >> MethodTransaction.class, METHOD_TRANSACTION); ^ >> /opt/dev/sguillor/JavaThirdParty/openejb/1.0-beta1/modules/core/ >> src/java >> /org/openejb/alt/assembler/classic/xml/ContainerSystem.java:148: >> cannot >> resolve symbol symbol : class MethodTransaction >> location: class org.openejb.alt.assembler.classic.xml.ContainerSystem >> methodTransactions = new MethodTransaction[dos.length]; ^ >> /opt/dev/sguillor/JavaThirdParty/openejb/1.0-beta1/modules/core/ >> src/java >> /org/openejb/alt/assembler/classic/xml/ContainerSystem.java:149: >> cannot >> resolve symbol symbol : class MethodTransaction >> location: class org.openejb.alt.assembler.classic.xml.ContainerSystem >> for (int i=0; i < dos.length; i++) methodTransactions[i] = >> (MethodTransaction)dos[i]; ^ >> /opt/dev/sguillor/JavaThirdParty/openejb/1.0-beta1/modules/core/ >> src/java >> /org/openejb/alt/assembler/classic/xml/Facilities.java:148: cannot >> resolve symbol symbol : class ConnectionManager >> location: class org.openejb.alt.assembler.classic.xml.Facilities >> DomObject[] dos = >> DomTools.collectChildElementsByType(connectorsElement, >> ConnectionManager.class, CONNECTION_MANAGER); >> >> ^ >> /opt/dev/sguillor/JavaThirdParty/openejb/1.0-beta1/modules/core/ >> src/java >> /org/openejb/alt/assembler/classic/xml/Facilities.java:149: cannot >> resolve symbol symbol : class ConnectionManager >> location: class org.openejb.alt.assembler.classic.xml.Facilities >> connectionManagers = new ConnectionManager[dos.length]; ^ >> /opt/dev/sguillor/JavaThirdParty/openejb/1.0-beta1/modules/core/ >> src/java >> /org/openejb/alt/assembler/classic/xml/Facilities.java:150: cannot >> resolve symbol symbol : class ConnectionManager >> location: class org.openejb.alt.assembler.classic.xml.Facilities >> for (int i=0; i < dos.length; i++) connectionManagers[i] = >> (ConnectionManager)dos[i]; ^ >> /opt/dev/sguillor/JavaThirdParty/openejb/1.0-beta1/modules/core/ >> src/java >> /org/openejb/alt/assembler/classic/xml/JndiEnc.java:93: cannot >> resolve symbol symbol : class ResourceReference >> location: class org.openejb.alt.assembler.classic.xml.JndiEnc >> dos = DomTools.collectChildElementsByType(node, >> ResourceReference.class, RESOURCE_REF); ^ >> /opt/dev/sguillor/JavaThirdParty/openejb/1.0-beta1/modules/core/ >> src/java >> /org/openejb/alt/assembler/classic/xml/JndiEnc.java:94: cannot >> resolve symbol symbol : class ResourceReference >> location: class org.openejb.alt.assembler.classic.xml.JndiEnc >> resourceRefs = new ResourceReference[dos.length]; ^ >> /opt/dev/sguillor/JavaThirdParty/openejb/1.0-beta1/modules/core/ >> src/java >> /org/openejb/alt/assembler/classic/xml/JndiEnc.java:95: cannot >> resolve symbol symbol : class ResourceReference >> location: class org.openejb.alt.assembler.classic.xml.JndiEnc >> for (int i=0; i < dos.length; i++) resourceRefs[i] = >> (ResourceReference)dos[i]; ^ >> /opt/dev/sguillor/JavaThirdParty/openejb/1.0-beta1/modules/core/ >> src/java >> /org/openejb/alt/config/ConfigurationFactory.java:250: cannot resolve >> symbol symbol : class MethodTransactionInfo >> location: class org.openejb.alt.config.ConfigurationFactory >> sys.containerSystem.methodTransactions = new >> MethodTransactionInfo[mthdTranInfos.size()]; >> ^ >> /opt/dev/sguillor/JavaThirdParty/openejb/1.0-beta1/modules/core/ >> src/java >> /org/openejb/alt/config/ConfigurationFactory.java:433: cannot resolve >> symbol symbol : class ConnectionManagerInfo >> location: class org.openejb.alt.config.ConfigurationFactory >> ConnectionManagerInfo manager = new ConnectionManagerInfo(); ^ >> /opt/dev/sguillor/JavaThirdParty/openejb/1.0-beta1/modules/core/ >> src/java >> /org/openejb/alt/config/ConfigurationFactory.java:433: cannot resolve >> symbol symbol : class ConnectionManagerInfo >> location: class org.openejb.alt.config.ConfigurationFactory >> ConnectionManagerInfo manager = new ConnectionManagerInfo(); ^ >> /opt/dev/sguillor/JavaThirdParty/openejb/1.0-beta1/modules/core/ >> src/java >> /org/openejb/alt/config/ConfigurationFactory.java:455: cannot resolve >> symbol symbol : class ConnectionManagerInfo >> location: class org.openejb.alt.config.ConfigurationFactory >> facilities.connectionManagers = new >> ConnectionManagerInfo[]{manager}; >> ^ >> /opt/dev/sguillor/JavaThirdParty/openejb/1.0-beta1/modules/core/ >> src/java >> /org/openejb/alt/config/ConfigurationFactory.java:765: cannot resolve >> symbol symbol : class EjbLocalReferenceInfo >> location: class org.openejb.alt.config.ConfigurationFactory >> EjbLocalReferenceInfo info = new >> EjbLocalReferenceInfo(); >> ^ >> /opt/dev/sguillor/JavaThirdParty/openejb/1.0-beta1/modules/core/ >> src/java >> /org/openejb/alt/config/ConfigurationFactory.java:765: cannot resolve >> symbol symbol : class EjbLocalReferenceInfo >> location: class org.openejb.alt.config.ConfigurationFactory >> EjbLocalReferenceInfo info = new >> EjbLocalReferenceInfo(); >> ^ >> /opt/dev/sguillor/JavaThirdParty/openejb/1.0-beta1/modules/core/ >> src/java >> /org/openejb/alt/config/ConfigurationFactory.java:795: cannot resolve >> symbol symbol : class ResourceReferenceInfo >> location: class org.openejb.alt.config.ConfigurationFactory >> ResourceReferenceInfo info = new >> ResourceReferenceInfo(); >> ^ >> /opt/dev/sguillor/JavaThirdParty/openejb/1.0-beta1/modules/core/ >> src/java >> /org/openejb/alt/config/ConfigurationFactory.java:795: cannot resolve >> symbol symbol : class ResourceReferenceInfo >> location: class org.openejb.alt.config.ConfigurationFactory >> ResourceReferenceInfo info = new >> ResourceReferenceInfo(); >> ^ >> /opt/dev/sguillor/JavaThirdParty/openejb/1.0-beta1/modules/core/ >> src/java >> /org/openejb/alt/config/ConfigurationFactory.java:811: cannot resolve >> symbol symbol : class EjbLocalReferenceInfo >> location: class org.openejb.alt.config.ConfigurationFactory >> jndi.ejbLocalReferences = new >> EjbLocalReferenceInfo[ejbLocalRef.size()]; >> ^ >> /opt/dev/sguillor/JavaThirdParty/openejb/1.0-beta1/modules/core/ >> src/java >> /org/openejb/alt/config/ConfigurationFactory.java:812: cannot resolve >> symbol symbol : class ResourceReferenceInfo >> location: class org.openejb.alt.config.ConfigurationFactory >> jndi.resourceRefs = new >> ResourceReferenceInfo[resRef.size()]; >> ^ >> /opt/dev/sguillor/JavaThirdParty/openejb/1.0-beta1/modules/core/ >> src/java >> /org/openejb/alt/config/ConfigurationFactory.java:832: cannot resolve >> symbol symbol : class MethodTransactionInfo >> location: class org.openejb.alt.config.ConfigurationFactory >> MethodTransactionInfo[] mTxs = new >> MethodTransactionInfo[cTx.length]; >> ^ >> /opt/dev/sguillor/JavaThirdParty/openejb/1.0-beta1/modules/core/ >> src/java >> /org/openejb/alt/config/ConfigurationFactory.java:832: cannot resolve >> symbol symbol : class MethodTransactionInfo >> location: class org.openejb.alt.config.ConfigurationFactory >> MethodTransactionInfo[] mTxs = new >> MethodTransactionInfo[cTx.length]; >> ^ >> /opt/dev/sguillor/JavaThirdParty/openejb/1.0-beta1/modules/core/ >> src/java >> /org/openejb/alt/config/ConfigurationFactory.java:835: cannot resolve >> symbol symbol : class MethodTransactionInfo >> location: class org.openejb.alt.config.ConfigurationFactory >> mTxs[i] = new MethodTransactionInfo(); ^ >> /opt/dev/sguillor/JavaThirdParty/openejb/1.0-beta1/modules/core/ >> src/java >> /org/openejb/alt/containers/castor_cmp11/ >> CastorCMP11_EntityContainer.jav >> a:343: cannot resolve symbol >> symbol : class JndiTxReference >> location: class >> org.openejb.alt.containers.castor_cmp11.CastorCMP11_EntityContainer >> JndiTxReference txReference = new JndiTxReference(); ^ >> /opt/dev/sguillor/JavaThirdParty/openejb/1.0-beta1/modules/core/ >> src/java >> /org/openejb/alt/containers/castor_cmp11/ >> CastorCMP11_EntityContainer.jav >> a:343: cannot resolve symbol >> symbol : class JndiTxReference >> location: class >> org.openejb.alt.containers.castor_cmp11.CastorCMP11_EntityContainer >> JndiTxReference txReference = new JndiTxReference(); ^ >> /opt/dev/sguillor/JavaThirdParty/openejb/1.0-beta1/modules/core/ >> src/java >> /org/openejb/resource/jdbc/JdbcManagedConnection.java:83: cannot >> resolve symbol symbol : class JdbcManagedConnectionMetaData >> location: class org.openejb.resource.jdbc.JdbcManagedConnection >> metaData = new >> JdbcManagedConnectionMetaData(sqlConn.getMetaData()); >> ^ >> /opt/dev/sguillor/JavaThirdParty/openejb/1.0-beta1/modules/core/ >> src/java >> /org/openejb/resource/jdbc/JdbcManagedConnectionFactory.java:73: >> cannot >> resolve symbol symbol : class BasicManagedConnectionFactory >> location: class >> org.openejb.resource.jdbc.JdbcManagedConnectionFactory >> factory = new BasicManagedConnectionFactory(this, driver, url, >> defaultUserName, defaultPassword); ^ >> Note: Some input files use or override a deprecated API. >> Note: Recompile with -deprecation for details. >> 45 errors >> >> BUILD FAILED >> File...... /opt/dev/sguillor/JavaThirdParty/openejb/1.0-beta1/ >> maven.xml >> Element... maven:reactor >> Line...... 134 >> Column.... 27 >> Unable to obtain goal [default] -- >> /export/home/e71655/.maven/cache/maven-java-plugin-1.5/ >> plugin.jelly:63:4 >> 8: <ant:javac> Compile failed; see the compiler error output for >> details. >> Total time: 18 seconds >> Finished at: Tue Oct 04 12:18:35 CDT 2005 >> >> I'll keep chugging along but would appreciate any pointers on either >> of these three issues, particularly the ClassCastException I am >> getting in the Local Container or the build issues. If it matters, I >> am on Solaris 8, Sun's 1.4.2_04 JDK, ant 1.6.2. >> >> >> Thanks, >> Stanford S. Guillory >> Senior Engineer >> Southwest Airlines Co. >> [EMAIL PROTECTED] >> >> >> > > > -- > Take care, > Jeremy >
