ServletContext.getResourceAsStream обычно используется для загрузки файла из самого веб-приложения. Например, если вы разместите файлы свойств как:
<CONTAINER_ROOT>/webapps/<CONTEXT>/WEB-INF/conf/hibernate.properties
Затем вы можете загрузить файл, используя
ctx.getResourceAsStream("/WEB-INF/conf/hibernate.properties");
Этот метод также можно использовать для загрузки «ресурсов» из файлов JAR, но первый метод, вероятно, лучше для получения файла конфигурации. JavaDocs весьма полезны в этом случае.
== UPDATE ==
Теперь я вижу, что ваша проблема в том, как вывести объект свойств из контекста сервлета в вашу конфигурацию Hibernate. Это зависит от того, на что похож ваш макет приложения. Вы используете Spring?
Предполагая, что вы, быстрое и грязное решение состояло бы в том, чтобы HibernateUitl реализовал интерфейс ServletContextAware (при условии, что HibernateUtil создан Spring) и имел код, подобный следующему
public class HibernateUtil implements ServletContextAware {
private ServletContext servletContext;
...
public void setServletContext(ServletContext servletContext) {
this.servletContext = servletContext;
}
private Properties getProperties() {
return servletContext.getAttribute("settings").getLocalHibernateProperties();
}
...
}
Однако это связывает HibernateUtil с API сервлета, что может быть нежелательно. Несколько более чистое решение может заключаться в создании интерфейса HibernatePropertiesSource, а затем в реализации ServletContextHibernatePropertiesSource, которая имеет вышеуказанные методы, и внедряет ее в HibernateUtil.
Опять же, все это предполагает, что вы используете Spring.