Dain, Couldn't we just stick the geronimo annotations jar into the tomcat/endorsed folder instead of having to remove Tomcat's annotations-api.jar?
So to support Tomcat 5.5, we'll need to backport the Tomcat 6 annotations processor correct? Would that be a lot of work? thanks, Dario > On Sep 14, 2007, at 4:28 PM, Dario Laverde wrote: > >> Karan, thanks for updating the (Tomcat) New Instructions page (I >> just needed to know >> how you did the lookup), however: >> >> Placing the restrictions up top like that will just scare off users >> - the >> implication is that it won't work on Windows. I think the >> instructions can be >> reduced to a few simple steps (and you should probably skip all the >> Tomcat >> installation steps) >> >> 1) unzip openejb-tomcat-3.x.x-SNAPSHOT-bin.zip into the Tomcat's >> webapps folder >> (btw no need to start/stop Tomcat at this point) >> >> 2) Non-Windows users: go to http://localhost:8080/openejb/install >> >> Windows users: a) remove Tomcat's lib/annotations-api.jar (add >> an explanation here) >> b) edit Tomcat's bin/catalina.bat file .... > > If you can document the changes that need to be made to the > catalina.bat file, I can add them to the installer code. Also to > avoid the windows locking problem, we could remove the annotations- > api.jar in the bat file since it runs before the server starts (and > locks the files). > >> 3) restart Tomcat >> >> caveats: >> - There is no security integration >> - Injection is work in progress.. i.e. @EJB, @Resource, >> @PersistenceContext... >> >> As for the remark "support older versions of Tomcat if there were >> enough demand, but >> it is doubtful there will be since OpenEJB 3 requires Java5", well >> Tomcat 5.5 runs >> on Java5 and is still quite prevalent (many sites/hosting providers >> will not move to >> Tomcat 6 until 6.1). > > If you have the time, it would be great to get 5.5 going also. > >> So I gave it a try on 5.5 and got the "LifeCyle" class (from >> catalina.jar) not found >> via the webapp classloader. > > Looking at the code, we only use this class to get some constant > values which could be inlined: > > public interface Lifecycle { > public static final String INIT_EVENT = "init"; > public static final String START_EVENT = "start"; > public static final String BEFORE_START_EVENT = "before_start"; > public static final String AFTER_START_EVENT = "after_start"; > public static final String STOP_EVENT = "stop"; > public static final String BEFORE_STOP_EVENT = "before_stop"; > public static final String AFTER_STOP_EVENT = "after_stop"; > public static final String DESTROY_EVENT = "destroy"; > public static final String PERIODIC_EVENT = "periodic"; > // snip > > >> Probably a dumb question, but could 5.5 be supported as >> well if we added all the OpenEJB jars into Tomcat's lib folder? > > Class loading is only one aspect of the integration. We also need to > hook deployment so we can support annotations and other things like > JPA. The OpenEJBListener lets us know when each Web context is > loaded, so can preprocess the application before tomcat loads any > classes. > >> Which begs the >> question, is OpenEJB a feature request to be streamlined into >> Tomcat in the future? > > Isn't that what we are doing now? A very clean and simple > integration into Tomcat. > >> And what exactly is the story behind annotations-api.jar at Tomcat >> anyway (why is >> there)? > > It is the annotation classes that Tomcat needs so it can process > annotations on servlet classes. The jar is a hodgepodge of classes > from the commons annotations, ejb, jpa, and webservice specs. The > jar was developed over time based on changes from the different > committees. The problem is they missed some changes and have > deviated from the specs in a few cases, which causes stuff like > OpenJPA to blow up when the Tomcat annotation classes are present. > > > -dain > >