hey guys. i'm trying out embedding tomcat 5.0 in an swt app that creates complex configuration data for a webapp. basically, i'd like the users to be able to do a test deploy of the webapp on their own box using hsqldb and an embedded tomcat.

my code looks more or less like so:

import org.apache.catalina.*;
import org.apache.catalina.logger.FileLogger;
import org.apache.catalina.realm.MemoryRealm;
import org.apache.catalina.startup.Embedded;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import java.net.InetAddress;

public final class Tomcat {

    private static final Log log = LogFactory.getLog(Tomcat.class);

    private final Embedded embeddedTomcat;
    private final Engine baseEngine;
    private final Host baseHost;
    private final Context rootContext;

    public Tomcat() {
        embeddedTomcat = new Embedded();

        final FileLogger fileLogger = new FileLogger();
        fileLogger.setDirectory(".");
        fileLogger.setPrefix("myTomcat");
        fileLogger.setSuffix(".log");
        fileLogger.setTimestamp(true);
        embeddedTomcat.setLogger(fileLogger);

        final MemoryRealm memoryRealm = new MemoryRealm();
        embeddedTomcat.setRealm(memoryRealm);

        baseEngine = embeddedTomcat.createEngine();
        baseEngine.setName("myEngine");
        baseEngine.setDefaultHost("localhost");

        baseHost = embeddedTomcat.createHost("localhost", "webapps");
        baseEngine.addChild(baseHost);

        rootContext = embeddedTomcat.createContext("", "ROOT");
        baseHost.addChild(rootContext);

        embeddedTomcat.addEngine(baseEngine);

final Connector httpConnector = embeddedTomcat.createConnector((InetAddress)null, 8080, false);
        embeddedTomcat.addConnector(httpConnector);
    }

    public void start() {
        try {
            embeddedTomcat.start();
        } catch (LifecycleException e) {
            log.error("Error starting tomcat", e);
        }
    }

    public void stop() {
        try {
            embeddedTomcat.stop();
        } catch (LifecycleException e) {
            log.error("Error stopping tomcat", e);
        }
    }

}

everything works okay but my webapp fails on initialization, with a NoClassDefFoundError on net.sf.hibernate.HibernateException. this is somewhat surprising given that hibernate.jar lives in the webapp's WEB-INF/lib directory. is there some additional configuration i need to do on my embedded Context object to force it to act like a normal tomcat webapp Context? do i perhaps need to ensure the webapp directory structure is in place before constructing my Tomcat instance? (that is to say, are the contents of WEB-INF/lib examined when the Context is created and/or added to the Host, or when tomcat is started?)

- donald

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to