Sorry I didn't mean to say ActionServlet or ModuleConfig objects...these are struts based objects.. more generally, from within a Tomcat web application... how do you access the Context object? Thanks Jamie
jamieb wrote: > > Hi There > > I had a look at Tomcat's Manager application.... the reload(..) function > reveals a hint: > .. > Context context = (Context) host.findChild(path); > .. > context.reload(); > > This should do the trick? Any idea on how to get the tomcat context > object... from ActionServlet or ModuleConfig objects...? I am not familar > with Tomcat's object model. > > Many thanks > > Jamie > > > /** > * Reload the web application at the specified context path. > * > * @param writer Writer to render to > * @param path Context path of the application to be restarted > */ > protected void reload(PrintWriter writer, String path) { > > if (debug >= 1) > log("restart: Reloading web application at '" + path + "'"); > > if ((path == null) || (!path.startsWith("/") && path.equals(""))) > { > writer.println(sm.getString("managerServlet.invalidPath", > RequestUtil.filter(path))); > return; > } > String displayPath = path; > if( path.equals("/") ) > path = ""; > > try { > Context context = (Context) host.findChild(path); > if (context == null) { > writer.println(sm.getString > ("managerServlet.noContext", > RequestUtil.filter(displayPath))); > return; > } > // It isn't possible for the manager to reload itself > if (context.getPath().equals(this.context.getPath())) { > writer.println(sm.getString("managerServlet.noSelf")); > return; > } > context.reload(); > writer.println > (sm.getString("managerServlet.reloaded", displayPath)); > } catch (Throwable t) { > log("ManagerServlet.reload[" + displayPath + "]", t); > writer.println(sm.getString("managerServlet.exception", > t.toString())); > } > > } > > > Pid-2 wrote: >> >> jamieb wrote: >>> Hi >>> >>> Thanks for the tip. While I am very grateful for your advice, I am not >>> sure >>> I like either of the approaches. I was hoping just to call a Tomcat API >>> function directly from my web application. >> >> Tomcat provides an API, in the form of JMX. >> >>> Is'nt there a method called restart() or something? >> >> I'm not aware of one, have you found one in the docs? >> >>> JMX seems like overkill since I do not need to >>> control the application remotely. The application doing the calling is >>> the >>> application that needs to be restarted itself. Any further ideas? >> >> You haven't elaborated on how you're connecting to the box, but a simple >> JMX app could be run from the command line, or another webapp on the >> same server. >> >> I'd suggest that you would be better off if a different app called the >> restart, as you'll never be able to recover (or notify afterwards) from >> a failure if the app itself is down. >> >> p >> >> >> >> >>> Thanks >>> Jamie >>> >>> >>> Pid-2 wrote: >>>> jamieb wrote: >>>>> Hi there >>>>> >>>>> I am busy implementing an auto update facility for a Tomcat web >>>>> application. >>>>> As part of the auto update process, the auto update code needs to >>>>> unpack >>>>> the >>>>> changed class files and reload the Tomcat web application. >>>>> >>>>> I am aware that you can configure Tomcat to automatically reload the >>>>> web >>>>> application when class files are changed. I've decided against the use >>>>> of >>>>> this functionality for fear of unscheduled service disruption. >>>>> >>>>> My question: Is recommended way for a web application to apply an >>>>> update >>>>> to >>>>> itself and restart itself? Is there an API call to reload the current >>>>> Tomcat >>>>> web application from within that application? >>>> If app auto-reload facilities are switched off, you should be able to >>>> replace WAR files safely*, and then use the built in JMX stuff to >>>> restart the webapp in question. >>>> >>>> (* If you're doing it from a remote location, be sure to send it to a >>>> safe directory /then/ do an internal copy to replace the file, rather >>>> than directly uploading to the target web app dir. Failed or slow >>>> uploads won't cause problems then.) >>>> >>>> >>>> >>>> You can also use the included Tomcat Ant tasks, I think, (see >>>> bin/catalina-tasks.xml) >>>> >>>> See also: >>>> >>>> http://tomcat.apache.org/tomcat-6.0-doc/monitoring.html >>>> http://tomcat.apache.org/tomcat-6.0-doc/mbeans-descriptor-howto.html >>>> >>>> The Tomcat manager app uses JMX AFAIK, so you could examine the source >>>> code if you wanted to customise your own utility. >>>> >>>> >>>> p >>>> >>>> >>>> >>>> >>>>> Much appreciate >>>>> >>>>> Jamie >>>>> >>>>> >>>> >>>> --------------------------------------------------------------------- >>>> To start a new topic, e-mail: users@tomcat.apache.org >>>> To unsubscribe, e-mail: [EMAIL PROTECTED] >>>> For additional commands, e-mail: [EMAIL PROTECTED] >>>> >>>> >>>> >>> >> >> >> --------------------------------------------------------------------- >> To start a new topic, e-mail: users@tomcat.apache.org >> To unsubscribe, e-mail: [EMAIL PROTECTED] >> For additional commands, e-mail: [EMAIL PROTECTED] >> >> >> > > -- View this message in context: http://www.nabble.com/API-call-to-reload-Tomcat-web-application-tp16065357p16102607.html Sent from the Tomcat - User mailing list archive at Nabble.com. --------------------------------------------------------------------- To start a new topic, e-mail: users@tomcat.apache.org To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]