如何在facelets应用程序中获取应用程序名称

how to get name of application in facelets app

我试图解决的问题:在我们的日志管理器中区分应用程序。

我正在尝试找到一种可靠的方法来从 Seam 应用程序中提取应用程序名称以用于日志记录语句。例如,如果应用程序是 http://company.us/bottles/,我想获取字符串 "bottles"。

我试过了FacesContext.getCurrentInstance().getExternalContext().getRequestServletPath()

一种可怕的方式:

    Map appProps = (HashMap)Contexts.getApplicationContext().get("org.jboss.seam.properties");
    String answer = appProps.get("org.jboss.seam.core.init.jndiPattern").toString();
    String answers[] = answer.split("/");
    applicationName = answers[0];

所以,希望有比这更好的方法

 <version.richfaces>3.3.1.GA</version.richfaces>
    <version.seam>2.2.2.Final</version.seam>

我最终得到:

    ServletContext ctx = ServletLifecycle.getServletContext();
    String appName = ctx.getContextPath().replace("/","");

满足我的需求。