build.xmlのrunserverタスク部分
<target depends="datanucleusenhance" description="Starts the development server." name="runserver"> <exec executable="kill-jetty.bat"> <dev_appserver port="8888" war="war"> </dev_appserver> </exec> </target>kill-jetty.bat
FOR /F "tokens=5 delims= " %P IN ('netstat -a -n -o ^| findstr :8888') DO TaskKill.exe /F /PID %P他にもっと簡単な方法があるのか分からないがこういうノウハウがあまりないのはなんでだろうか?というかTOMCATだとデプロイするだけで自動的にアプリケーションをロードしてくれるからこんなことは考えなくてもよかったりする。
参考
Google Apps Engine - Apache Ant の使用
GAE/J の開発で ant を使うと java.exe プロセスが残る [NT]
Kill a Process by Looking up the Port being used by it from a .BAT
追記(2013/1/27)
macでも試したところ同じようにjettyのプロセスが残っていたので起動時に一旦プロセスを削除する処理を書いてみました。ポート番号からプロセスをkillする処理が割と簡単に書けました。<target name="runserver" depends="compile" description="Starts the development server."> <exec executable="/bin/bash"> <arg value="kill-jetty.sh"/> </exec> <dev_appserver war="war" port="8888"/> </target>kill-jetty.sh
kill -9 `lsof -a -t -i:8888 -c java`
0 件のコメント:
コメントを投稿