2013-04-03 4 views
6

Ich habe eine Anwendung läuft auf OpenShift. Es funktioniert gut, aber das Testen ist schwierig, weil ich jedes kleine Ding zum Öffnen schieben muss und auf das ganze Gebäude warten und neu starten muss, um die Änderungen zu sehen.Test Feder OpenShift Anwendung lokal

Also versuche ich einen Weg zu finden, die Anwendung lokal zu testen. Ein anderer Typ fragte das gleiche hier: How to test an openshift application on local host, aber ich frage mich, ob eine einfachere Lösung existiert.

Ich habe das Quickstart-Projekt hier http://github.com/openshift/spring-eap6-quickstart.git verwendet, um es zu starten. Also im Grunde ist es eine Spring-Anwendung mit Hibernate.

Was ich im Sinne habe, haben zwei Sätze von Konfigurationsdateien (persistence.xml etc.) in dem Projekt, einen für lokalen Tomcat-Server und einen für Jboss eap und Änderung web.xml nach dem Server ich mag bereitstellen zu. Ist das machbar? Sieht so einfach aus, ich habe Angst vor irgendwelchen Überraschungsproblemen, bevor ich das Projekt ändere.

+0

Vorschläge von Adietisheim sind wahrscheinlich am besten und Ihr Ansatz klingt auch gut. Probieren Sie es mit einem einfachen Projekt aus. –

Antwort

3

So endete ich. Ich habe die ursprüngliche web.xml Datei mit etwas wie web-openshift.xml umbenannt. Wenn Projekte in OpenShift erstellt werden, wird das Profil maven openshift verwendet. Sie finden es in Ihrem Abschnitt <profiles> in pom.xml. So habe ich eine Linie zu meinem pom.xml:

<build> 
    <plugins> 
    <plugin> 
     <artifactId>maven-war-plugin</artifactId> 
     <configuration> 
     .... 
      <webXml>src/main/webapp/WEB-INF/web-openshift.xml</webXml> <!--add this--> 

Dies ist die maven-war-plugin macht die web-openshift.xml Datei als Web-Deployment Descriptor zu verwenden, wenn der Krieg zu bauen. Dann habe ich eine web.xml Datei hinzugefügt, die für meinen lokalen Build verwendet wird. In diesen Dateien Sie Ihre Servlets mit konfigurieren:

<init-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>/WEB-INF/jboss-as-spring-mvc-context.xml</param-value> 

So durch die <param-value> Wechsel in meinen beiden web.xml Dateien, ich war in der Lage Frühling zu konfigurieren und auf unterschiedliche Weise Hibernate.

Dann habe ich die Gläser als <provided> in pom.xml in das Verzeichnis \lib meiner Tomcat-Installation hinzugefügt. Jetzt kann ich die Anwendung sowohl für OpenShift als auch für Tomcat bereitstellen und ausführen.

0

Wenn Sie eine schnelle Verbindung haben, können Sie Ihre App auf einem lokalen Server ausführen und die Datei persistence.xml auf die OpenShift-Datenbank verweisen lassen. Um remote auf die Datenbank zugreifen zu können, müssen Sie die Portweiterleitung (https://www.openshift.com/blogs/getting-started-with-port-forwarding-on-openshift) verwenden. Sie müssen den RHC-Client (https://www.openshift.com/developers/rhc-client-tools-install) einrichten und den RHC-Port-Forward-Client ausführen, um auf die Datenbank zuzugreifen. Sie können dann zeigen Sie einfach das Eclipse-Projekt auf Ihrem Tomcat-Server ausführen, und es wird (mit persistence.xml nehme ich an, dass Sie eine db verwenden) eine Verbindung zur Datenbank herstellen. Alle Codeänderungen werden wie jedes andere Tomcat-Projekt behandelt. Für die meisten Fälle ist keine separate web.xml erforderlich (es sei denn, Sie haben einige openshift-spezifische Konfigurationen).

Sie können sogar Tools wie Toad verwenden, um eine Verbindung zur db herzustellen, wenn Sie möchten.

+0

Danke, das sieht vielversprechend aus, aber ich denke, dass ich noch zwei verschiedene Konfigurationen für die Persistenz benötige. Zum Beispiel für die lokale Entwicklung muss ich 'hibernate.show_sql = true' setzen – lunr

0

In einer App, die sowohl lokal als auch auf OpenShift ausgeführt wird, habe ich den persistenten Ordner app-root/data verwendet, um eine bestimmte OpenShift-Konfiguration zu speichern.

In meinem Web.xml, ich bin auch die Eigenschaften wie folgt:

<context:property-placeholder location="file:${user.home}/app-root/data/configuration.properties"/> 

Wenn Sie empfindliche Konfigurationseigenschaften wie Benutzernamen und Passwörter sind die Verwaltung, Openshift des env Variablen einen langen Weg gehen. Zum Beispiel können Sie die folgenden Eigenschaften in Ihrem pom.xml unter dem Openshift Profil setzen:

<properties> 
    <db.username>${env.OPENSHIFT_POSTGRESQL_DB_USERNAME}</db.username> 
    <db.password>${env.OPENSHIFT_POSTGRESQL_DB_PASSWORD}</db.password>      
    <db.connectionURL>postgresql://${env.OPENSHIFT_POSTGRESQL_DB_HOST}:5432/${env.PGDATABASE}</db.connectionURL> 
</properties> 

Um Ihre Datenbank-Verbindungseigenschaften von den Openshift Umgebungsvariablen abzurufen. Sie können dann die Ressourcefilter von Maven verwenden, um diese Eigenschaften in beliebige Dateien in bestimmten Verzeichnissen wie src/main/resources zu setzen. Meine eigenen lokalen db-Verbindungseigenschaften werden in einem Profil in meiner Datei ~/.m2/settings.xml verwaltet.

Dieser Ansatz ermöglicht es mir zu:

  • halten alle sensiblen Eigenschaften aus meinem öffentlichen Code-Repository
  • sehr einfach zwischen Openshift und lokale Bereitstellung wechseln, indem die Aktivierung/Deaktivierung Maven Profile erstellen.
Verwandte Themen