If you do decide you really want a combined web application that does everything, this is how I'd do it:
(1) Create a new directory in framework, which contains the build materials needed for your combined web application, called "combined-service". (2) Include a class that contains the equivalent of your patch code. Or, you could also create a "framework/combined-classes" directory to build a jar, similar to the framework/xxx-servlet packages. (3) Include a web.xml in your combined-service area that invokes the correct ServletContextListener for your web application. If you really want to go ahead with this project, please create a ticket that covers it, titled something like "provide a combined web application encapsulating all ManifoldCF processes and services". Karl On Tue, Sep 4, 2012 at 6:15 AM, Karl Wright <[email protected]> wrote: > Here was my response from yesterday: > > How does this proposal deal with the API service and the authority > service? There are three independent web applications in ManifoldCF > at this time, and a process that does the actual crawling. > >>>>>>> > Those are only in jetty-launcher Main method > <<<<<< > > Please examine the scripts under multiprocess-example. This differs > from the single-process example in that all the web applications are > broken out and are expected to run in a JVM different from the > crawler. The single-process example is simply a way of running all of > these under one process. > >>>>>>> > Without those running application without embedded jetty (and > jetty-launcher) is impossible. > <<<<<< > > That's not true. Please read up on how ManifoldCF is run in a > multiprocess environment. You are looking at the single-process > example, and that is useful, but is not how many people use the > system. > > We do not expect, at this time, for people to want to run the entire > ManifoldCF application as one single web application under Tomcat. If > that is your goal, we can try to provide such a deployment model, but > since it is a fair bit of work it would be important to understand why > you believe this is a requirement. > > Karl > > On Tue, Sep 4, 2012 at 5:38 AM, Maciej Liżewski > <[email protected]> wrote: >> There is ServletListener in every application but all it does initializing >> is call: >> >> ManifoldCF.initializeEnvironment(); >> >> but there are other tasks which should be done (at least by one >> application): >> >> - init database, register and init connectors, register agent, etc: >> >>> ILockManager lockManager = LockManagerFactory.make(tc); >>> lockManager.clearGlobalFlag(agentShutdownSignal); >>> ManifoldCF.createSystemDatabase(tc); >>> ManifoldCF.installTables(tc); >>> ManifoldCF.registerThisAgent(tc); >>> ManifoldCF.reregisterAllConnectors(tc); >> >> >> - run agents as separate thread periodically calling: >> >>> ManifoldCF.startAgents(tc); >> >> >> Those are only in jetty-launcher Main method and are needed to run >> Manifold. Without those running application without embedded jetty (and >> jetty-launcher) is impossible. >> >> My proposition is to provide separate (non-default, to maintain backward >> compatibility) ServletListener for this task. If someone wishes to launch >> manifold in application server has just to change single line in web.xml.
