Removed HTML cache for organizations and services metrics pages.

The combinatorial is too large:
- 48 pages by item
- 100 organizations + 300 services = 400 items
- => ~20 000 pages
- 200kB/page
- => 4GB in memory
- ==> no way.
Metrics pages are so numerous than they have to build on demand.
This commit is contained in:
Christian P. MOMON 2024-08-18 04:03:11 +02:00
parent fba9e6a7ab
commit dc73cd79f5
8 changed files with 176 additions and 216 deletions

View file

@ -66,34 +66,29 @@ public class MetricGenericPage extends HttpServlet
{ {
logger.info("PAGE Organization > Metrics > Summary"); logger.info("PAGE Organization > Metrics > Summary");
String html = StatoolInfosWeb.instance().getHtmlCache().get(request); // Get parameters.
if (html == null) // ===============
{ ViewMenu viewMenu = ViewMenu.valueFrom(request.getParameter("view"));
// Get parameters. PeriodMenu periodMenu = PeriodMenu.valueFrom(request.getParameter("period"));
// ===============
ViewMenu viewMenu = ViewMenu.valueFrom(request.getParameter("view"));
PeriodMenu periodMenu = PeriodMenu.valueFrom(request.getParameter("period"));
// Use parameters. // Use parameters.
// =============== // ===============
Organization organization = StatoolInfosWeb.instance().getOrganizationFromPathinfo(request.getPathInfo()); Organization organization = StatoolInfosWeb.instance().getOrganizationFromPathinfo(request.getPathInfo());
UptimeJournal uptimes = StatoolInfosWeb.instance().getUptimeJournal(); UptimeJournal uptimes = StatoolInfosWeb.instance().getUptimeJournal();
// Send response. // Send response.
// ============== // ==============
String headerView = OrganizationHeaderView.htmlize(organization, uptimes); String headerView = OrganizationHeaderView.htmlize(organization, uptimes);
String contentView = htmlize(organization, viewMenu, periodMenu); String contentView = htmlize(organization, viewMenu, periodMenu);
BreadcrumbTrail trail = new BreadcrumbTrail(); BreadcrumbTrail trail = new BreadcrumbTrail();
trail.add(StatoolInfosWeb.instance().getFederation().getName(), "/federation/"); trail.add(StatoolInfosWeb.instance().getFederation().getName(), "/federation/");
trail.add("Organisations", "/federation/organizations/"); trail.add("Organisations", "/federation/organizations/");
trail.add(organization.getName(), "/federation/organizations/" + organization.getTechnicalName() + "/"); trail.add(organization.getName(), "/federation/organizations/" + organization.getTechnicalName() + "/");
trail.add("Métriques", "/federation/organizations/" + organization.getTechnicalName() + "/metrics/"); trail.add("Métriques", "/federation/organizations/" + organization.getTechnicalName() + "/metrics/");
trail.add("Génériques", "/federation/organizations/" + organization.getTechnicalName() + "/metrics/generic.xhtml"); trail.add("Génériques", "/federation/organizations/" + organization.getTechnicalName() + "/metrics/generic.xhtml");
html = WebCharterView.build(headerView, contentView, trail); String html = WebCharterView.build(headerView, contentView, trail);
StatoolInfosWeb.instance().getHtmlCache().put(request, html);
}
// Display page. // Display page.
response.setContentType("application/xhtml+xml; charset=UTF-8"); response.setContentType("application/xhtml+xml; charset=UTF-8");

View file

@ -64,34 +64,29 @@ public class MetricSpecificPage extends HttpServlet
{ {
logger.info("PAGE Organization > Metrics > Specific"); logger.info("PAGE Organization > Metrics > Specific");
String html = StatoolInfosWeb.instance().getHtmlCache().get(request); // Get parameters.
if (html == null) // ===============
{ ViewMenu viewMenu = ViewMenu.valueFrom(request.getParameter("view"));
// Get parameters. PeriodMenu periodMenu = PeriodMenu.valueFrom(request.getParameter("period"));
// ===============
ViewMenu viewMenu = ViewMenu.valueFrom(request.getParameter("view"));
PeriodMenu periodMenu = PeriodMenu.valueFrom(request.getParameter("period"));
// Use parameters. // Use parameters.
// =============== // ===============
Organization organization = StatoolInfosWeb.instance().getOrganizationFromPathinfo(request.getPathInfo()); Organization organization = StatoolInfosWeb.instance().getOrganizationFromPathinfo(request.getPathInfo());
UptimeJournal uptimes = StatoolInfosWeb.instance().getUptimeJournal(); UptimeJournal uptimes = StatoolInfosWeb.instance().getUptimeJournal();
// Send response. // Send response.
// ============== // ==============
String headerView = OrganizationHeaderView.htmlize(organization, uptimes); String headerView = OrganizationHeaderView.htmlize(organization, uptimes);
String contentView = htmlize(organization, viewMenu, periodMenu); String contentView = htmlize(organization, viewMenu, periodMenu);
BreadcrumbTrail trail = new BreadcrumbTrail(); BreadcrumbTrail trail = new BreadcrumbTrail();
trail.add(StatoolInfosWeb.instance().getFederation().getName(), "/federation/"); trail.add(StatoolInfosWeb.instance().getFederation().getName(), "/federation/");
trail.add("Organisations", "/federation/organizations/"); trail.add("Organisations", "/federation/organizations/");
trail.add(organization.getName(), "/federation/organizations/" + organization.getTechnicalName() + "/"); trail.add(organization.getName(), "/federation/organizations/" + organization.getTechnicalName() + "/");
trail.add("Métriques", "/federation/organizations/" + organization.getTechnicalName() + "/metrics/"); trail.add("Métriques", "/federation/organizations/" + organization.getTechnicalName() + "/metrics/");
trail.add("Spécifiques", "/federation/organizations/" + organization.getTechnicalName() + "/metrics/specific.xhtml"); trail.add("Spécifiques", "/federation/organizations/" + organization.getTechnicalName() + "/metrics/specific.xhtml");
html = WebCharterView.build(headerView, contentView, trail); String html = WebCharterView.build(headerView, contentView, trail);
StatoolInfosWeb.instance().getHtmlCache().put(request, html);
}
// Display page. // Display page.
response.setContentType("application/xhtml+xml; charset=UTF-8"); response.setContentType("application/xhtml+xml; charset=UTF-8");

View file

@ -66,34 +66,29 @@ public class MetricSummaryPage extends HttpServlet
{ {
logger.info("PAGE Organization > Metrics > Summary"); logger.info("PAGE Organization > Metrics > Summary");
String html = StatoolInfosWeb.instance().getHtmlCache().get(request); // Get parameters.
if (html == null) // ===============
{ ViewMenu viewMenu = ViewMenu.valueFrom(request.getParameter("view"));
// Get parameters. PeriodMenu periodMenu = PeriodMenu.valueFrom(request.getParameter("period"));
// ===============
ViewMenu viewMenu = ViewMenu.valueFrom(request.getParameter("view"));
PeriodMenu periodMenu = PeriodMenu.valueFrom(request.getParameter("period"));
// Use parameters. // Use parameters.
// =============== // ===============
Organization organization = StatoolInfosWeb.instance().getOrganizationFromPathinfo(request.getPathInfo()); Organization organization = StatoolInfosWeb.instance().getOrganizationFromPathinfo(request.getPathInfo());
UptimeJournal uptimes = StatoolInfosWeb.instance().getUptimeJournal(); UptimeJournal uptimes = StatoolInfosWeb.instance().getUptimeJournal();
// Send response. // Send response.
// ============== // ==============
String headerView = OrganizationHeaderView.htmlize(organization, uptimes); String headerView = OrganizationHeaderView.htmlize(organization, uptimes);
String contentView = htmlize(organization, viewMenu, periodMenu); String contentView = htmlize(organization, viewMenu, periodMenu);
BreadcrumbTrail trail = new BreadcrumbTrail(); BreadcrumbTrail trail = new BreadcrumbTrail();
trail.add(StatoolInfosWeb.instance().getFederation().getName(), "/federation/"); trail.add(StatoolInfosWeb.instance().getFederation().getName(), "/federation/");
trail.add("Organisations", "/federation/organizations/"); trail.add("Organisations", "/federation/organizations/");
trail.add(organization.getName(), "/federation/organizations/" + organization.getTechnicalName() + "/"); trail.add(organization.getName(), "/federation/organizations/" + organization.getTechnicalName() + "/");
trail.add("Métriques", "/federation/organizations/" + organization.getTechnicalName() + "/metrics/"); trail.add("Métriques", "/federation/organizations/" + organization.getTechnicalName() + "/metrics/");
trail.add("Résumé", "/federation/organizations/" + organization.getTechnicalName() + "/metrics/summary.xhtml"); trail.add("Résumé", "/federation/organizations/" + organization.getTechnicalName() + "/metrics/summary.xhtml");
html = WebCharterView.build(headerView, contentView, trail); String html = WebCharterView.build(headerView, contentView, trail);
StatoolInfosWeb.instance().getHtmlCache().put(request, html);
}
// Display page. // Display page.
response.setContentType("application/xhtml+xml; charset=UTF-8"); response.setContentType("application/xhtml+xml; charset=UTF-8");

View file

@ -65,34 +65,29 @@ public class MetricWebPage extends HttpServlet
{ {
logger.info("PAGE Organization > Metrics > Web"); logger.info("PAGE Organization > Metrics > Web");
String html = StatoolInfosWeb.instance().getHtmlCache().get(request); // Get parameters.
if (html == null) // ===============
{ ViewMenu viewMenu = ViewMenu.valueFrom(request.getParameter("view"));
// Get parameters. PeriodMenu periodMenu = PeriodMenu.valueFrom(request.getParameter("period"));
// ===============
ViewMenu viewMenu = ViewMenu.valueFrom(request.getParameter("view"));
PeriodMenu periodMenu = PeriodMenu.valueFrom(request.getParameter("period"));
// Use parameters. // Use parameters.
// =============== // ===============
Organization organization = StatoolInfosWeb.instance().getOrganizationFromPathinfo(request.getPathInfo()); Organization organization = StatoolInfosWeb.instance().getOrganizationFromPathinfo(request.getPathInfo());
UptimeJournal uptimes = StatoolInfosWeb.instance().getUptimeJournal(); UptimeJournal uptimes = StatoolInfosWeb.instance().getUptimeJournal();
// Send response. // Send response.
// ============== // ==============
String headerView = OrganizationHeaderView.htmlize(organization, uptimes); String headerView = OrganizationHeaderView.htmlize(organization, uptimes);
String contentView = htmlize(organization, viewMenu, periodMenu); String contentView = htmlize(organization, viewMenu, periodMenu);
BreadcrumbTrail trail = new BreadcrumbTrail(); BreadcrumbTrail trail = new BreadcrumbTrail();
trail.add(StatoolInfosWeb.instance().getFederation().getName(), "/federation/"); trail.add(StatoolInfosWeb.instance().getFederation().getName(), "/federation/");
trail.add("Organisations", "/federation/organizations/"); trail.add("Organisations", "/federation/organizations/");
trail.add(organization.getName(), "/federation/organizations/" + organization.getTechnicalName() + "/"); trail.add(organization.getName(), "/federation/organizations/" + organization.getTechnicalName() + "/");
trail.add("Métriques", "/federation/organizations/" + organization.getTechnicalName() + "/metrics/"); trail.add("Métriques", "/federation/organizations/" + organization.getTechnicalName() + "/metrics/");
trail.add("Web", "/federation/organizations/" + organization.getTechnicalName() + "/metrics/web.xhtml"); trail.add("Web", "/federation/organizations/" + organization.getTechnicalName() + "/metrics/web.xhtml");
html = WebCharterView.build(headerView, contentView, trail); String html = WebCharterView.build(headerView, contentView, trail);
StatoolInfosWeb.instance().getHtmlCache().put(request, html);
}
// Display page. // Display page.
response.setContentType("application/xhtml+xml; charset=UTF-8"); response.setContentType("application/xhtml+xml; charset=UTF-8");

View file

@ -67,40 +67,35 @@ public class MetricGenericPage extends HttpServlet
{ {
logger.info("PAGE Service > MetricGenericPage"); logger.info("PAGE Service > MetricGenericPage");
String html = StatoolInfosWeb.instance().getHtmlCache().get(request); // Get parameters.
if (html == null) // ===============
{ ViewMenu viewMenu = ViewMenu.valueFrom(request.getParameter("view"));
// Get parameters. PeriodMenu periodMenu = PeriodMenu.valueFrom(request.getParameter("period"));
// ===============
ViewMenu viewMenu = ViewMenu.valueFrom(request.getParameter("view"));
PeriodMenu periodMenu = PeriodMenu.valueFrom(request.getParameter("period"));
// Use parameters. // Use parameters.
// =============== // ===============
Service service = StatoolInfosWeb.instance().getServiceFromPathinfo(request.getPathInfo()); Service service = StatoolInfosWeb.instance().getServiceFromPathinfo(request.getPathInfo());
Organization organization = service.getOrganization(); Organization organization = service.getOrganization();
UptimeJournal uptimeJournal = StatoolInfosWeb.instance().getUptimeJournal(); UptimeJournal uptimeJournal = StatoolInfosWeb.instance().getUptimeJournal();
// Send response. // Send response.
// ============== // ==============
String headerView = ServiceHeaderView.htmlize(service, uptimeJournal); String headerView = ServiceHeaderView.htmlize(service, uptimeJournal);
String contentView = htmlize(service, viewMenu, periodMenu); String contentView = htmlize(service, viewMenu, periodMenu);
BreadcrumbTrail trail = new BreadcrumbTrail(); BreadcrumbTrail trail = new BreadcrumbTrail();
trail.add(StatoolInfosWeb.instance().getFederation().getName(), "/federation/"); trail.add(StatoolInfosWeb.instance().getFederation().getName(), "/federation/");
trail.add("Organisations", "/federation/organizations/"); trail.add("Organisations", "/federation/organizations/");
trail.add(organization.getName(), "/federation/organizations/" + organization.getTechnicalName() + "/"); trail.add(organization.getName(), "/federation/organizations/" + organization.getTechnicalName() + "/");
trail.add("Services", "/federation/organizations/" + organization.getTechnicalName() + "/services.xhtml"); trail.add("Services", "/federation/organizations/" + organization.getTechnicalName() + "/services.xhtml");
trail.add(service.getName(), trail.add(service.getName(),
"/federation/organizations/" + organization.getTechnicalName() + "/services/" + service.getTechnicalName() + "/"); "/federation/organizations/" + organization.getTechnicalName() + "/services/" + service.getTechnicalName() + "/");
trail.add("Métriques", trail.add("Métriques",
"/federation/organizations/" + organization.getTechnicalName() + "/services/" + service.getTechnicalName() + "/metrics/"); "/federation/organizations/" + organization.getTechnicalName() + "/services/" + service.getTechnicalName() + "/metrics/");
trail.add("Générique", "/federation/organizations/" + organization.getTechnicalName() + "/services/" + service.getTechnicalName() trail.add("Générique", "/federation/organizations/" + organization.getTechnicalName() + "/services/" + service.getTechnicalName()
+ "/metrics/generic.xhtml"); + "/metrics/generic.xhtml");
html = WebCharterView.build(headerView, contentView, trail); String html = WebCharterView.build(headerView, contentView, trail);
StatoolInfosWeb.instance().getHtmlCache().put(request, html);
}
// Display page. // Display page.
response.setContentType("application/xhtml+xml; charset=UTF-8"); response.setContentType("application/xhtml+xml; charset=UTF-8");

View file

@ -67,40 +67,35 @@ public class MetricSpecificPage extends HttpServlet
{ {
logger.info("PAGE Service > MetricGenericPage"); logger.info("PAGE Service > MetricGenericPage");
String html = StatoolInfosWeb.instance().getHtmlCache().get(request); // Get parameters.
if (html == null) // ===============
{ Service service = StatoolInfosWeb.instance().getServiceFromPathinfo(request.getPathInfo() + "?" + request.getQueryString());
// Get parameters. ViewMenu viewMenu = ViewMenu.valueFrom(request.getParameter("view"));
// =============== PeriodMenu periodMenu = PeriodMenu.valueFrom(request.getParameter("period"));
Service service = StatoolInfosWeb.instance().getServiceFromPathinfo(request.getPathInfo() + "?" + request.getQueryString());
ViewMenu viewMenu = ViewMenu.valueFrom(request.getParameter("view"));
PeriodMenu periodMenu = PeriodMenu.valueFrom(request.getParameter("period"));
// Use parameters. // Use parameters.
// =============== // ===============
Organization organization = service.getOrganization(); Organization organization = service.getOrganization();
UptimeJournal uptimeJournal = StatoolInfosWeb.instance().getUptimeJournal(); UptimeJournal uptimeJournal = StatoolInfosWeb.instance().getUptimeJournal();
// Send response. // Send response.
// ============== // ==============
String headerView = ServiceHeaderView.htmlize(service, uptimeJournal); String headerView = ServiceHeaderView.htmlize(service, uptimeJournal);
String contentView = htmlize(service, viewMenu, periodMenu); String contentView = htmlize(service, viewMenu, periodMenu);
BreadcrumbTrail trail = new BreadcrumbTrail(); BreadcrumbTrail trail = new BreadcrumbTrail();
trail.add(StatoolInfosWeb.instance().getFederation().getName(), "/federation/"); trail.add(StatoolInfosWeb.instance().getFederation().getName(), "/federation/");
trail.add("Organisations", "/federation/organizations/"); trail.add("Organisations", "/federation/organizations/");
trail.add(organization.getName(), "/federation/organizations/" + organization.getTechnicalName() + "/"); trail.add(organization.getName(), "/federation/organizations/" + organization.getTechnicalName() + "/");
trail.add("Services", "/federation/organizations/" + organization.getTechnicalName() + "/services.xhtml"); trail.add("Services", "/federation/organizations/" + organization.getTechnicalName() + "/services.xhtml");
trail.add(service.getName(), trail.add(service.getName(),
"/federation/organizations/" + organization.getTechnicalName() + "/services/" + service.getTechnicalName() + "/"); "/federation/organizations/" + organization.getTechnicalName() + "/services/" + service.getTechnicalName() + "/");
trail.add("Métriques", trail.add("Métriques",
"/federation/organizations/" + organization.getTechnicalName() + "/services/" + service.getTechnicalName() + "/metrics/"); "/federation/organizations/" + organization.getTechnicalName() + "/services/" + service.getTechnicalName() + "/metrics/");
trail.add("Spécifique", "/federation/organizations/" + organization.getTechnicalName() + "/services/" + service.getTechnicalName() trail.add("Spécifique", "/federation/organizations/" + organization.getTechnicalName() + "/services/" + service.getTechnicalName()
+ "/metrics/specific.xhtml"); + "/metrics/specific.xhtml");
html = WebCharterView.build(headerView, contentView, trail); String html = WebCharterView.build(headerView, contentView, trail);
StatoolInfosWeb.instance().getHtmlCache().put(request, html);
}
// Display page. // Display page.
response.setContentType("application/xhtml+xml; charset=UTF-8"); response.setContentType("application/xhtml+xml; charset=UTF-8");

View file

@ -67,40 +67,35 @@ public class MetricSummaryPage extends HttpServlet
{ {
logger.info("PAGE Service > MetricSummaryPage"); logger.info("PAGE Service > MetricSummaryPage");
String html = StatoolInfosWeb.instance().getHtmlCache().get(request); // Get parameters.
if (html == null) // ===============
{ ViewMenu viewMenu = ViewMenu.valueFrom(request.getParameter("view"));
// Get parameters. PeriodMenu periodMenu = PeriodMenu.valueFrom(request.getParameter("period"));
// ===============
ViewMenu viewMenu = ViewMenu.valueFrom(request.getParameter("view"));
PeriodMenu periodMenu = PeriodMenu.valueFrom(request.getParameter("period"));
// Use parameters. // Use parameters.
// =============== // ===============
Service service = StatoolInfosWeb.instance().getServiceFromPathinfo(request.getPathInfo()); Service service = StatoolInfosWeb.instance().getServiceFromPathinfo(request.getPathInfo());
Organization organization = service.getOrganization(); Organization organization = service.getOrganization();
UptimeJournal uptimeJournal = StatoolInfosWeb.instance().getUptimeJournal(); UptimeJournal uptimeJournal = StatoolInfosWeb.instance().getUptimeJournal();
// Send response. // Send response.
// ============== // ==============
String headerView = ServiceHeaderView.htmlize(service, uptimeJournal); String headerView = ServiceHeaderView.htmlize(service, uptimeJournal);
String contentView = htmlize(service, viewMenu, periodMenu); String contentView = htmlize(service, viewMenu, periodMenu);
BreadcrumbTrail trail = new BreadcrumbTrail(); BreadcrumbTrail trail = new BreadcrumbTrail();
trail.add(StatoolInfosWeb.instance().getFederation().getName(), "/federation/"); trail.add(StatoolInfosWeb.instance().getFederation().getName(), "/federation/");
trail.add("Organisations", "/federation/organizations/"); trail.add("Organisations", "/federation/organizations/");
trail.add(organization.getName(), "/federation/organizations/" + organization.getTechnicalName() + "/"); trail.add(organization.getName(), "/federation/organizations/" + organization.getTechnicalName() + "/");
trail.add("Services", "/federation/organizations/" + organization.getTechnicalName() + "/services.xhtml"); trail.add("Services", "/federation/organizations/" + organization.getTechnicalName() + "/services.xhtml");
trail.add(service.getName(), trail.add(service.getName(),
"/federation/organizations/" + organization.getTechnicalName() + "/services/" + service.getTechnicalName() + "/"); "/federation/organizations/" + organization.getTechnicalName() + "/services/" + service.getTechnicalName() + "/");
trail.add("Métriques", trail.add("Métriques",
"/federation/organizations/" + organization.getTechnicalName() + "/services/" + service.getTechnicalName() + "/metrics/"); "/federation/organizations/" + organization.getTechnicalName() + "/services/" + service.getTechnicalName() + "/metrics/");
trail.add("Résumé", "/federation/organizations/" + organization.getTechnicalName() + "/services/" + service.getTechnicalName() trail.add("Résumé", "/federation/organizations/" + organization.getTechnicalName() + "/services/" + service.getTechnicalName()
+ "/metrics/summary.xhtml"); + "/metrics/summary.xhtml");
html = WebCharterView.build(headerView, contentView, trail); String html = WebCharterView.build(headerView, contentView, trail);
StatoolInfosWeb.instance().getHtmlCache().put(request, html);
}
// Display page. // Display page.
response.setContentType("application/xhtml+xml; charset=UTF-8"); response.setContentType("application/xhtml+xml; charset=UTF-8");

View file

@ -67,40 +67,35 @@ public class MetricWebPage extends HttpServlet
{ {
logger.info("PAGE Service > MetricGenericPage"); logger.info("PAGE Service > MetricGenericPage");
String html = StatoolInfosWeb.instance().getHtmlCache().get(request); // Get parameters.
if (html == null) // ===============
{ ViewMenu viewMenu = ViewMenu.valueFrom(request.getParameter("view"));
// Get parameters. PeriodMenu periodMenu = PeriodMenu.valueFrom(request.getParameter("period"));
// ===============
ViewMenu viewMenu = ViewMenu.valueFrom(request.getParameter("view"));
PeriodMenu periodMenu = PeriodMenu.valueFrom(request.getParameter("period"));
// Use parameters. // Use parameters.
// =============== // ===============
Service service = StatoolInfosWeb.instance().getServiceFromPathinfo(request.getPathInfo() + "?" + request.getQueryString()); Service service = StatoolInfosWeb.instance().getServiceFromPathinfo(request.getPathInfo() + "?" + request.getQueryString());
Organization organization = service.getOrganization(); Organization organization = service.getOrganization();
UptimeJournal uptimeJournal = StatoolInfosWeb.instance().getUptimeJournal(); UptimeJournal uptimeJournal = StatoolInfosWeb.instance().getUptimeJournal();
// Send response. // Send response.
// ============== // ==============
String headerView = ServiceHeaderView.htmlize(service, uptimeJournal); String headerView = ServiceHeaderView.htmlize(service, uptimeJournal);
String contentView = htmlize(service, viewMenu, periodMenu); String contentView = htmlize(service, viewMenu, periodMenu);
BreadcrumbTrail trail = new BreadcrumbTrail(); BreadcrumbTrail trail = new BreadcrumbTrail();
trail.add(StatoolInfosWeb.instance().getFederation().getName(), "/federation/"); trail.add(StatoolInfosWeb.instance().getFederation().getName(), "/federation/");
trail.add("Organisations", "/federation/organizations/"); trail.add("Organisations", "/federation/organizations/");
trail.add(organization.getName(), "/federation/organizations/" + organization.getTechnicalName() + "/"); trail.add(organization.getName(), "/federation/organizations/" + organization.getTechnicalName() + "/");
trail.add("Services", "/federation/organizations/" + organization.getTechnicalName() + "/services.xhtml"); trail.add("Services", "/federation/organizations/" + organization.getTechnicalName() + "/services.xhtml");
trail.add(service.getName(), trail.add(service.getName(),
"/federation/organizations/" + organization.getTechnicalName() + "/services/" + service.getTechnicalName() + "/"); "/federation/organizations/" + organization.getTechnicalName() + "/services/" + service.getTechnicalName() + "/");
trail.add("Métriques", trail.add("Métriques",
"/federation/organizations/" + organization.getTechnicalName() + "/services/" + service.getTechnicalName() + "/metrics/"); "/federation/organizations/" + organization.getTechnicalName() + "/services/" + service.getTechnicalName() + "/metrics/");
trail.add("Web", "/federation/organizations/" + organization.getTechnicalName() + "/services/" + service.getTechnicalName() trail.add("Web", "/federation/organizations/" + organization.getTechnicalName() + "/services/" + service.getTechnicalName()
+ "/metrics/web.xhtml"); + "/metrics/web.xhtml");
html = WebCharterView.build(headerView, contentView, trail); String html = WebCharterView.build(headerView, contentView, trail);
StatoolInfosWeb.instance().getHtmlCache().put(request, html);
}
// Display page. // Display page.
response.setContentType("application/xhtml+xml; charset=UTF-8"); response.setContentType("application/xhtml+xml; charset=UTF-8");