Спасибо V33R и Chetan. Оба ваших комментария дали мне направление. я использовал свойство системы
catalina.home
вместо catalina.base который не указывал на нужное место мне нужно. Ниже то, что я наконец-то:
private static Properties extractPropertiesFile() throws FileNotFoundException, IOException{
String propertiesFilePath = System.getProperty("catalina.home") +
File.separator + "lib"+ File.separator + "myapp.properties";
Properties properties = new Properties();
properties.load(new FileInputStream(propertiesFilePath));
return properties;
}
мне пришлось удалить свойства БД, которые были установлены в файле hibernate.cfg.xml к описанному ниже методу. Я попытался загрузить файл извлеченных свойств, но не работал должным образом и, следовательно, загрузил их в экземпляр Hibernate.cfg.Configuration, как показано ниже. Чтобы построить завод Session:
private static SessionFactory buildSessionFactory() {
try {
Configuration configuration = new Configuration();
Properties properties = extractPropertiesFile();
configuration.configure("hibernate.cfg.xml").setProperties(properties);
// The properties below are extracted from $TOMCAT_HOME/lib/myapp.properties
configuration.setProperty("hibernate.connection.driver_class", properties.getProperty("propertyfile.database.driver.classname"));
serviceRegistry = new ServiceRegistryBuilder().applySettings(
configuration.getProperties()). buildServiceRegistry();
sessionFactory = configuration.buildSessionFactory(serviceRegistry);
} catch (HibernateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Открытый метод, чтобы получить SessionFactory
public static SessionFactory getSessionFactory() {
if(sessionFactory == null){
sessionFactory = buildSessionFactory();
}
return sessionFactory;
}
Круто .. И хорошо, что ты писал, что вы в конечном итоге делает, чтобы решить эту проблему так, чтобы другие могли извлечь выгоду из этого. catalina.base следует использовать, однако, если вы собираетесь запускать два экземпляра tomcat, в противном случае catalina.home должно быть в порядке. –
Я не уверен, доступен ли файл с $ TOMCAT_HOME/lib, используя свойство 'catalina. base ', поскольку он указывает на: workspace \ .metadata \ .plugins \ org.eclipse.wst.server.core \ tmp0. Здесь я не вижу ссылки на папку lib. – NixRam
Возможно, вы настроили сервер в Eclipse. Для меня как 'catalina.base', так и' catalina.home' указывают на то же место, 'C: \ Program Files \ Apache Software Foundation \ Tomcat 7.0. 'Так или иначе, так как ваш код работает, yey! –