2010-08-27 3 views

Antwort

13

Nr. grails run-app soll interaktiv für die Entwicklung ausgeführt werden.

Wenn Sie Grails als Dienst steuern möchten, sollten Sie es in einem Webanwendungscontainer wie Tomcat bereitstellen. Mit dem tomcat-Plugin können Sie Ihre App beispielsweise einfach auf tomcat bereitstellen. Fügen Sie Zeilen wie

tomcat.deploy.username="manager" 
tomcat.deploy.password="secret" 
tomcat.deploy.url="http://myserver.com/manager" 

zu Config.groovy und dann können Sie

grails tomcat deploy 
grails tomcat undeploy 

verwenden zu starten und Ihre Anwendung zu beenden. Alternativ können Sie grails war verwenden, um Ihre App in ein Kriegsarchiv zu bündeln, das alle Java-App-Server verwenden können.

Wenn Sie wirklich wollen grails run-app ohne Strg + C, schreiben Sie einen kleinen Controller zu stoppen, die System.exit(0) aufruft. Navigieren Sie dann zu dieser URL oder schreiben Sie ein kleines Shell-Skript oder eine Batch-Datei, die es z. wget oder curl.

+1

Wenn Sie die Route einer vom Web zugänglichen Controller-Aktion zum Beenden der Anwendung verwenden, müssen Sie sie entweder vor der Bereitstellung in der Produktion entfernen oder stark sichern, damit böswillige Benutzer Ihre App nicht einfach beenden können. – cdeszaq

0

Schnell Weg ist, den Java-Prozess zu töten:

ps -aux | grep grails 

kill „proess ID von oben das heißt Behälter auf Ihre Anwendung“

1

ich eine nette Art und Weise gefunden, die auf Grails 2.0.1 arbeitet für mich.

Dies ist ein Hack, der einen Hack in GrailsRun.groovy zum Herunterfahren von Servern nach dem Ausführen von Funktionstests verwendet. (Siehe Linie 246)

Erstellen Sie eine Datei in der Anwendung mit dem Namen basedir .kill-run-app

Wenn Grails sieht die .kill-run-app-Datei, eine grailsServer.stop ausgibt(). Es löscht auch bequem die Datei. Dies kann davon abhängen, ob autoRecompile aktiviert ist. Ich bin mir nicht sicher, wie ich schon sagte, das ist ein Hack.

Eines Tages wird es wahrscheinlich nicht mehr funktionieren, wenn das GrailsRun.groovy-Skript geändert wird.

Ich habe ein einfaches Ant-Ziel erstellt, um dies zu tun. Zugegeben, du brauchst ein anderes Terminal, um es auszuführen (eigentlich starte ich es aus Eclipse).

<target name="kill-app" description="--> Kills Grails web application" depends=""> 
    <touch file="${basedir}/.kill-run-app"/> 
</target> 
3

In Grails 2.1.0, ein einfaches "exit" stoppt den Server

0

Ich bin neu zu Grails und ich hatte auch dieses "Problem". Ich habe ein kleines Skript (genannt grill ;-)) geschrieben, das alle Grails-Prozesse abtötet.

#!/bin/bash 
for P in $(ps aux | grep grails | grep java | awk '{print $2};'); do 
kill -9 $P 
done 
exit 0 
10

Für Stop Server:

Ausgang von Terminal und verwenden Sie eine von unten Befehl

  • grails
  • grails Stop-App
  • grails beenden beenden
+1

Hi Dilit, obige Befehle funktionieren nicht in Grails 2.1.1 – Halil

+0

'Grails Stop-App' funktioniert auf Grails 3 – GreenGiant

6

in Grails 2.3.3, läuft 'Grails dev run-app' in der Befehlszeile das Befehlsfenster in einer Art von Limbo. Es gibt Ihnen die Eingabeaufforderung nicht zurück, Ctrl-C tut nichts, und Sie müssen die Prozesse manuell rückgängig machen.

Es ist viel angenehmer, die beabsichtigte Verwendung zu folgen, wie folgt:

  1. Auf der Kommandozeile geben Sie den Befehl ‚grails‘ und drücken die Eingabetaste (beachten Sie keine Parameter angegeben werden). Dies startet Grails selbst, (und nur Grails, d. H. Es startet nicht Ihren Server oder App). Dies führt zu einem neuen Java-Prozess. Es gibt Ihnen auch die Grals-Eingabeaufforderung zurück, so dass Sie immer noch die Kontrolle haben.

1,1 An der grails Aufforderung können Sie Ihren Server (und app) starten, indem Sie 'run-app'. Dies startet Ihren Server (im Dev-Modus) und gibt Ihnen wieder die Grails-Eingabeaufforderung zurück. Wenn Ihr Server läuft, haben Sie jetzt zwei Java-Prozesse, einen für Grails und den anderen für Ihren Server und Ihre App.

1.2 Wenn Sie Ihren Server (und Ihre App) anhalten möchten, können Sie bei der Eingabe von grails 'stop-app' eingeben, wodurch der Server und die App gestoppt werden. Außerdem erhalten Sie Ihre Grals-Eingabeaufforderung zurück. Nachdem Sie Ihren Server/Ihre App gestoppt haben, werden Sie wieder nur einen Java-Prozess ausführen, d. H. Grails.

1.3 Bei der Eingabeaufforderung "Grails" können Sie Ihre App so oft starten und stoppen, wie Sie möchten.

1,4 bis grails selbst, an den grails Aufforderung zu stoppen, können Sie eingeben ‚Ausfahrt‘ oder ‚beenden‘, und dann wird grails verlassen, und lassen Sie mit der normalen Eingabeaufforderung zurück. Zu diesem Zeitpunkt sollte auch der Java-Prozess von grails weg sein, also sollten keine Java-Prozesse mehr laufen.

Ich glaube, alle Grails 2.3.x verhält sich so. Mein System ist Windows 7.

Hoffe, das hilft. Noel

+0

Funktioniert auch auf Mac OSX, danke !! – nickromano

6

Öffnen Sie eine neue Kommandozeilen-Fenster, gehen Sie in das Projektverzeichnis und Typ:

grails Stop-App

Dies wird die Anwendung beenden, wenn es in gegabelten Modus ausgeführt wird. Sie können dann zur selben URL gehen und sehen, dass die Seite nicht angezeigt wird, d. H. Der Server wurde gestoppt, da er auch beim Ausführen des Befehls angegeben wird.

-

grails verlassen

Dies wird, wenn läuft in nicht-gegabelten Modus, um die Anwendung zu beenden, sonst wird es die Konsole beenden

-

grails beenden

Beendet die Konsole.

0

Ich hatte das gleiche Problem, meinen running grails Server zu stoppen. Ich tat

  1. ps aux | grep Grails -> die mir die PID
  2. Kill gab -9 PID

Auf diese Weise konnte ich meine laufenden Server stoppen. Ich hoffe, das hilft.

Verwandte Themen