Честно говоря, я должен сказать, что это невозможно, или только с каким-то очень склонным к ошибкам хаком , подобным этому
Я предполагаю, что в этом случае реальный класс FacesContext.getCurrentInstance().getExternalContext().getContext()
idorg.apache.catalina.core.StandardContext
Таким образом, вы можете получить доступ docBase
вот так
javax.faces.context.ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
if(externalContext instanceof org.apache.catalina.core.StandardContext) {
String path = ((org.apache.catalina.core.StandardContext)externalContext .getContext()).getDocBase();
}
Но это, на мой взгляд, не решение, так как вы сильно зависите от внутренних компонентов tomcat.Остаются следующие проблемы: * у вас нет гарантии, что это действительно экземпляр StandardContext
*, если он работает для данной версии tomcat, он может перестать работать без объявления в будущем * в любом случае, он не будет работать на любом другом сервере приложений
Если вы только что сделали, ответьте так, как вы обнаружили, отладив это поле.В целом, это очень плохая практика - отлаживать некоторый код, к которому вы обращаетесь через API (здесь API-сервлет), а затем находить способ доступа к внутренним компонентам сома, не предоставленным этим API должным образом, даже если это теоретически возможно.