2012-04-02 11 views
2

Ich führe eine Tomcat 7 Web-Anwendung an 2 Standorten; An einem Standort befindet sich eine MySQL-Datenbank, im anderen ein SQL-Server. In der context.xml-Datei der Webapp habe ich zwei <Resources> definiert, die die Datenbankverbindungsinformationen für beide Datenbanken enthalten. Da ich mich immer noch entwickle, starte ich manchmal die Anwendung mit dem MySQL-Server (zu Hause) und manchmal mit dem SQL-Server (bei der Arbeit).Wie kann ich eine einfache benutzerdefinierte Einstellung in Tomcat speichern

Bis jetzt war ich schon entweder eine Verbindung zu MySQL oder SQL-Server zu jeder Zeit den Code neu kompilieren, indem Sie den

//connect to MySQL 
DataSource ds = (DataSource) env.lookup("jdbc/mysql"); 

in

//connect to SQL-Server 
DataSource ds = (DataSource) env.lookup("jdbc/sqlserver"); 

Linie ändern Ändern Gibt es eine einfache (r) Möglichkeit, der Webapplikation mitzuteilen, an welchem ​​Ort ich bin, zB mit einer Einstellung in einer XML-Datei, damit die Webanwendung weiß, mit welcher Datenbank sie sich verbinden muss?

Antwort

1

Machen Sie den JNDI-Namen zu einer externen Konfigurationseinstellung, die Sie als Eigenschaftendateiwert oder als VM-Argument oder möglicherweise als Umgebungsvariablenwert abrufen.

z. als eine Eigenschaften config.properties-Datei, die Sie put in the classpath:

db.jndi.name=jdbc/mysql 

, die Sie erhalten, wie folgt:

Properties properties = new Properties(); 
properties.load(input); 
String dbJndiName = properties.getProperty("db.jndi.name"); 

oder als VM-Argument, das Sie in Serverstartskript angeben:

-Ddb.jndi.name=jdbc/mysql 

die Sie erhalten wie folgt:

1

Definieren Sie in der Kontextdefinition für Ihre Anwendung nur eine Datenquelle mit immer demselben Namen. Ändern Sie die Datenquellendefinition abhängig von Ihrem Standort.

+0

Smart Antwort auch, danke! – reus

Verwandte Themen