Vielen Dank V33R und Chetan. Ihre beiden Kommentare hatten mir eine Richtung gegeben. ich verwendet, um die Systemeigenschaft
catalina.home
statt catalina.base, die an die richtige Stelle nicht deutete ich brauchte. unten Das ist, was ich tat schließlich:
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;
}
ich die DB-Eigenschaften zu entfernen, hatte die in der hibernate.cfg.xml Datei auf die unten Verfahren eingestellt wurden. Ich habe versucht, die extrahierte Eigenschaftendatei zu laden, funktionierte jedoch nicht wie erwartet und lud sie daher wie unten in die Hibernate.cfg.Configuration-Instanz. Um Session Fabrik zu bauen:
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();
}
}
öffentliche Methode zu erhalten Session
public static SessionFactory getSessionFactory() {
if(sessionFactory == null){
sessionFactory = buildSessionFactory();
}
return sessionFactory;
}
Coole .. Und gute Sache Sie auf dem Laufendes, was tun Sie das am Ende zu lösen, damit andere davon profitieren können. catalina.base sollte jedoch verwendet werden, wenn Sie zwei Instanzen von tomcat ausführen möchten, ansonsten catalina.home sollte in Ordnung sein. –
Ich bin mir nicht sicher, ob eine Datei mit $ TOMCAT_HOME/lib über die Eigenschaft 'catalina aufgerufen werden kann. base ', da es auf Folgendes verweist: workspace \ .metadata \ .plugins \ org.eclipse.wst.server.core \ tmp0. Ich sehe keinen Verweis auf den lib-Ordner von hier. – NixRam
Könnte die Art sein, wie Sie den Server in Eclipse konfiguriert haben. Für mich verweisen sowohl "catalina.base" als auch "catalina.home" auf den gleichen Speicherort "C: \ Programme \ Apache Software Foundation \ Tomcat 7.0". 'Wie auch immer, da dein Code funktioniert, yey! –