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: [email protected]
>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>
>>>
>>>
>>
>
>
> ---------------------------------------------------------------------
> To start a new topic, e-mail: [email protected]
> 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-tp16065357p16102507.html
Sent from the Tomcat - User mailing list archive at Nabble.com.
---------------------------------------------------------------------
To start a new topic, e-mail: [email protected]
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]