J'ai développé une application Web qui est déployée dans Apache Tomcat.Il est nécessaire d'arrêter l'application sans arrêter Tomcat.Il peut être fait en utilisant la fonctionnalité de démarrage/arrêt fournie par le Tomcat manger. L'exigence est d'afficher une page web personnalisée (qui dit que l'application est en panne pour la maintenance) lorsque l'application web est arrêtée.Je veux savoir que tomcat faciliter pour faire cela en configurant le webxml dans catalina/conf ou par tout autre mécanisme.Can tout corps donner une idée .....Afficher une page Web personnalisée lorsque applicatino est arrêté
Répondre
Une question un peu ancienne mais je vais ajouter mes 2 cents car cela pourrait aider quelqu'un en bas de la piste. Je comprends que tout ce qui provient de Tomcat provient d'une application. Chaque fois que vous créez un dossier dans webapps, cela deviendra disponible en tant qu'application. Cela dit, il est assez facile de fournir la fonctionnalité en utilisant un http apache en face de votre serveur Tomcat. En utilisant mod_proxy sur apache http, lorsque l'application tomcat est arrêtée, tomcat renvoie un http 503. Il vous suffit d'ajouter la ligne ci-dessous à votre httpd.conf (ou de la décommenter si elle est déjà présente) et de créer un downtime.html (dans ce cas) dans votre dossier www apache (ou htdocs). :)
ErrorDocument 503 /downtime.html
Pourriez-vous peut-être fournir une page d'erreur personnalisée (500 statut, ou tout ce que le serveur retournerait normalement lorsque l'application ne répond pas), et l'utiliser juste cette?
Je voulais une page personnalisée pour ma webapp arrêtée ou temporairement non-déployée. J'ai d'abord créé une page d'erreur personnalisée et l'ai placée dans /srv/www/html/maintenance/report.html. Ensuite, j'ai créé une valve personnalisée, compilée, jared et l'ai mise dans le dossier lib de tomcats (6).
package my.package;
import org.apache.catalina.Container;
import org.apache.catalina.connector.Request;
import org.apache.catalina.connector.Response;
import org.apache.catalina.core.StandardContext;
import org.apache.catalina.valves.ValveBase;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
/**
* Created by IntelliJ IDEA.
* User: przemyslaw
* Date: 13.11.11
*/
public class AppErrorReportValve extends ValveBase {
String errorPagePath = null;
String appContextName = null;
String appContextPath = null;
public void invoke(Request request, Response response)
throws IOException, ServletException {
StandardContext appContext = (StandardContext)container.findChild(appContextName);
if((appContext==null || appContext.getState()!=1 || !appContext.getAvailable()) && request.getRequestURI().startsWith(appContextPath)){
if (response.isCommitted()) {
return;
}
// The response is an error
response.setError();
// Reset the response (if possible)
try {
response.reset();
} catch (IllegalStateException e) {
}
response.sendError(HttpServletResponse.SC_SERVICE_UNAVAILABLE);
response.setSuspended(false);
try {
//containerLog.info("render Error");
response.setContentType("text/html");
response.setCharacterEncoding("utf-8");
renderError(response);
return;
} catch (Throwable tt) {
}
}
// Perform the request
getNext().invoke(request, response);
}
void renderError(Response response){
BufferedInputStream bis = null;
OutputStream os = null;
try
{
FileInputStream fis = new FileInputStream (errorPagePath);
bis = new BufferedInputStream (fis);
os = response.getOutputStream();
int byte_;
while ((byte_ = bis.read()) != -1)
os.write (byte_);
}
catch (FileNotFoundException e)
{
containerLog.error("File not found " + errorPagePath, e);
// Do other stuff related to that exception (if necessary).
}
catch (IOException e)
{
containerLog.error("I/O Problem: ",e);
// Do other stuff related to that exception (if necessary).
}
finally
{
if (bis != null)
try
{
bis.close();
}
catch (IOException e)
{
}
if (os != null)
try
{
os.flush();
os.close();
}
catch (IOException e)
{
}
}
}
public String getErrorPagePath() {
return errorPagePath;
}
public void setErrorPagePath(String errorPagePath) {
this.errorPagePath = errorPagePath;
}
public String getAppContextName() {
return appContextName;
}
public void setAppContextName(String appContextName) {
this.appContextName = appContextName;
this.appContextPath = appContextName+"/";
}
}
Au moins, je configuré matous conf/server.xml
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Valve className="my.package.AppErrorReportValve" appContextName="/report" errorPagePath="/srv/www/html/maintenance/report.html" resolveHosts="false"/>
...
</Host>
Maintenant montre tomcat un service personnalisé page non disponible, quand mon application web/rapport est arrêté ou non déployé.
- 1. Arrêt d'un TaskExecutor dans une application Web lorsque le serveur Web est arrêté
- 2. Django - alerte lorsque memcached est arrêté
- 3. en utilisant JNDI lorsque websphere est arrêté
- 4. Comment afficher automatiquement une page de notification lorsque le serveur Web principal ne répond plus?
- 5. Comment configurer une page à afficher lorsque le serveur est en maintenance planifiée dans Jboss?
- 6. Comment afficher une page 404 personnalisée dans ASP.NET-MVC?
- 7. Afficher une page Web dans un UIWebView
- 8. Cocoa webView pour afficher une page Web
- 9. Envoi de données throgh NamedPipe lorsque le serveur est arrêté
- 10. Commande d'exécution lorsque le script bash est arrêté
- 11. Désactiver la réponse Apache 503 lorsque Tomcat est arrêté
- 12. Ouvrir une page Web lorsque je reçois un appel entrant
- 13. Afficher la page d'erreur personnalisée lorsque le téléchargement dépasse la taille autorisée dans ASP.NET MVC
- 14. IIS7 Site arrêté
- 15. Comment diriger vers une page d'erreur personnalisée?
- 16. Page Web de signalisation lorsque le thread ThreadPool est terminé
- 17. FormsAuthentication.RedirectFromLoginPage vers une page personnalisée
- 18. Le serveur Lighttpd est arrêté
- 19. Comment afficher différemment une page Web dans différents navigateurs?
- 20. ASP.net: Afficher le PDF dans une page web asp.net
- 21. Meilleures pratiques pour afficher une page Web dans différentes langues
- 22. Comment afficher l'adresse ipv6 sur une page web?
- 23. Afficher un formulaire d'une page Web
- 24. Afficher une page Web et des cartes dans Blackberry
- 25. comment afficher une image dans la page Web
- 26. Comment utiliser uiwebview pour afficher une page Web?
- 27. Lorsque votre page Web peut aller dormir
- 28. Afficher la page Web en hébreu
- 29. Comment afficher une vue personnalisée dans UIActionSheet?
- 30. page Afficher ASPX dans le navigateur Web
mmmmm.Once Je configuré Tomcat pour afficher la page d'erreur personnalisée, il sera utilisé pour toutes les applications Web déployées dans le Tomcat, suis-je raison? Dans ce cas la page d'erreur devrait être plus générique. De toute façon pouvez-vous expliquer comment Tomcat est configuré pour afficher une page d'erreur personnalisée? –