On Sep 10, 2004, at 11:25 AM, Jeremy Boynes wrote:

Shapira, Yoav wrote:

Hi,
After a bit of talking with Geir regarding the 1.0 M2 release still not
supporting Tomcat, I thought I'd jump in and ask: what's missing for
Tomcat integration, and how can I help?

Just getting it running would be a good place to start. That should be a fairly simple GBean that starts an embedded server within Geronimo.

N. Alex sent me a simple version a long time ago. It simply had an unpacked version of tomcat and started it in the same vm a geronimo. I started to work on a closer integration because I really dislike the idea of shipping an entire unpacked version of tomcat (since it is 12 MB), but got busy. Anyway, the code is at the end of this message (not it is very old and may not even compile).


-dain


package org.apache.geronimo.tomcat;

import org.apache.catalina.startup.Catalina;
import org.apache.geronimo.gbean.GAttributeInfo;
import org.apache.geronimo.gbean.GBean;
import org.apache.geronimo.gbean.GBeanContext;
import org.apache.geronimo.gbean.GBeanInfo;
import org.apache.geronimo.gbean.GBeanInfoFactory;
import org.apache.geronimo.gbean.GConstructorInfo;
import org.apache.geronimo.gbean.GReferenceInfo;
import org.apache.geronimo.system.serverinfo.ServerInfo;

public class TomcatService implements GBean {
/**
* Reference to the org.apache.catalina.startup.Catalina shell
* Right now we're just wrapping up the shell, but we'll be replacing it
* with our own GBean shell for ease of management.
*/
private Catalina shell;


/**
* Reference to the ServerInfo object. This is recieved through the
* constructor, and can be used to get information about the Server, most
* notably including the location of the server installation directory
* (and thus the Tomcat base dir).
*
*/
private final ServerInfo serverInfo;


    private String catalinaHome;
    private String catalinaBase;

/**
* Reference to the Catalina shell, to which calls are delegated.
*
* The catalina shell relies on the "catalina.home" and "catalina.base"
* System properties. Presumably, these could be added in a simple properties
* file, but I'm going to work under the assumption that we'll want them as
* persistent attributes in a server configuration. This will make them more
* easily manageable (in theory--we'll see)
*/
public TomcatService(ServerInfo serverInfo, String catalinaHome, String catalinaBase) {
this.serverInfo = serverInfo;
this.catalinaHome = catalinaHome;
this.catalinaBase = catalinaBase;
}


    public void doFail() {
        doStop();
    }

public void doStart() {
System.setProperty("catalina.home", serverInfo.resolvePath(catalinaHome));
System.setProperty("catalina.base", serverInfo.resolvePath(catalinaBase));
if (shell == null) {
shell = new Catalina();
}
shell.start();
}


    public void doStop() {
        if (shell != null) {
            shell.stop();
            shell = null;
        }
    }

    public void setGBeanContext(GBeanContext ctx) {
    }

    public static final GBeanInfo GBEAN_INFO;

static {
GBeanInfoFactory infoFactory = new GBeanInfoFactory(TomcatService.class.getName());


infoFactory.setConstructor(new String[]{"ServerInfo", "CatalinaHome", "CatalinaBase"});

infoFactory.addReference(new GReferenceInfo("ServerInfo", ServerInfo.class.getName()));
infoFactory.addAttribute("CatalinaHome", String.class, true);
infoFactory.addAttribute("CatalinaBase", String.class, true);
GBEAN_INFO = infoFactory.getBeanInfo();
}


    public static GBeanInfo getGBeanInfo() {
        return GBEAN_INFO;
    }
}



Reply via email to