2017-07-11 21 views
0

Grails 3.3.0(Java 8)にアップグレードするときに、このアップグレードが長引く理由がなく、Grails 2.2.4(Java 6)モノリスを分割しています。アイデアは、本当に良いもののように見えるビッグバンのアップグレードを試みるのではなく、段階的にアップグレードすることです。私たちはそれに慣れていますが、モノリシックなものよりもサービスベースのもので終わりたいと思っています。grails実行可能なwar配備

実行可能なWARデプロイメントモデルを使用することに決めたので、ビルド成果物をさまざまな環境に展開する際に、定義済みの構成要素に基づいて異なることがあります。

私は最初の部分をWebサービスに移行しましたが、私のローカル環境ではすべて問題なく動作しています。つまり、モノリスをリファクタリングしてサービスを呼び出し、コマンドラインからjava -jarを使用してサービスを実行させるようにしました。今私は自動化されたビルドとデプロイメントツール(Bamboo)と統合しようとしています。

現在のプロセス(モノリス用)は、Tomcatインスタンス(shutdown.sh)を停止し、warを展開し、Tomcat(startup.sh)を再起動することです。実行可能な戦争として実行されている場合、これを実行するにはどうすればよいですか?具体的には、実行中のインスタンス/サービスを停止しますか?

私の最初の考えは、特定のjava-jarプロセスのpidを見つけてそれを殺すスクリプトを書くことですが、それは控えめなようです。より良い方法がありますか?

ありがとうございます!あなたがそう./foo.jar stop

のようにそれを実行することができますそして、あなたが見ることができる、彼らは単にプロセスにkillコマンドを送信するよう

+0

ドッキングウィンドウの容器に、あなたのサービスを展開し、必要に応じて停止コンテナを起動するかもしれません! –

+0

ええ、Docker、Spring Boot、またはそのilkを導入することは間違いありませんが、私たちがその価値を確立したらその投資を遅らせることを望んでいました。実験を始めるために多くの投資をしても、それほど機敏ではありません。 Grailsの実行可能な戦争機能を準備する方法があると願っています。 – Andrew

答えて

0

実行可能戦争/ jarファイルを作成し、このスクリプト[0]は、それに埋め込まれています。これは割り込みであり、プロセスはそれを見て、完全なシャットダウンを開始します。 kill -9を実行しても正常にシャットダウンしない場合は強制停止があります。

あなたは自分の/etc/init.d/fooにリンクし、最後にあなたはポートが同様にクリーンシャットダウンを開始することを呼び出して、シャットダウンポートを公開することができservice foo start|stop|restart

のようなコマンドを実行できるように、このスクリプトはまた、init.dスクリプトのように振る舞います。 (もちろんインターネットにそのポートを公開していない)

[0] https://github.com/spring-projects/spring-boot/blob/master/spring-boot-tools/spring-boot-loader-tools/src/main/resources/org/springframework/boot/loader/tools/launch.script

関連する問題