起動が簡単なhudsonだが
・continuumみたいにWindowsのサービスに登録してくれない…
・再起動時に勝手にhudsonは立ち上がってくれない…
・スタートアップに登録しても、ログインしないと立ち上がらない…
なので!再起動時にログインしなくても勝手に立ち上がるようにしてみた!(Windows版)
・Hudson起動用バッチを作成する
・「コントロールパネル」を開く
・「タスク」を開く
・「スケジュールされたタスクの追加」を開く
・実行プログラムにHudson起動用バッチを登録する
・実行タイミングを「コンピュータ起動時」にする
・Hudsonが実行させていたユーザとパスワートを入力する
※入力しないと[ユーザフォルダ]/.hudsonにアクセスできない
これで勝手にHudsonが立ち上がってる
あーらくちんだ♪
2008/01/22
2007/10/18
Hudson(winstone)の起動ポート(port)の変更方法
Hudsonはwinstoneのコマンドラインがそのまま使えます。
このため起動portを変えたかったら「Command-line options」にある「--httpPort」でport番号を指定すればOK
なのでwinstoneも同じ方法でportが変更できる。
なんかもったいないので見つけ出した過程を書いとく。
ずっと探してたけどわかんなくて結局Hudsonのコードを見て探し当てた。
winstoneの起動コマンドでportが変更できるのを知ってたので
hudsonからwinstoneの起動場所のコードをいじる方針で調査開始!
<起動Mainのクラス名の検索>
・Hudsonは起動時に%TEMP%フォルダにhudson.warを解凍するので見に行く
・META-INF\MANIFEST.MFのMain-Classを見る
・Mainというクラスが始めに起動することがわかった
<起動Mainのクラスコードの検索>
・HudsonのコードからMain.javaを検索
・4つMain.javaあったがデフォルトパッケージの「hudson/war/src/launcher/java/Main.java」を開く
<winstone起動場所の調査>
・Main.main(String[] args)を見るとjarを読み込んでる
・winstoneのMainクラス「winstone.Launcher」を呼び出してる場所を発見
・Mainクラスのコマンドライン引数に「--warfile」を追加して、
winstone.Launcher.mainを起動しているだけと判明

ちなみに、hudsonのプラグインで「port-allocator」なるものがあった。
ヘルプを見るとHTTP_PORT, ADMIN_PORT, SHUTDOWN_PORTが指定できるそうなので、引数指定しなくてもよくなるかもしれない
このため起動portを変えたかったら「Command-line options」にある「--httpPort」でport番号を指定すればOK
java -jar hudson.war --httpPort=1192
なのでwinstoneも同じ方法でportが変更できる。
なんかもったいないので見つけ出した過程を書いとく。
ずっと探してたけどわかんなくて結局Hudsonのコードを見て探し当てた。
winstoneの起動コマンドでportが変更できるのを知ってたので
hudsonからwinstoneの起動場所のコードをいじる方針で調査開始!
<起動Mainのクラス名の検索>
・Hudsonは起動時に%TEMP%フォルダにhudson.warを解凍するので見に行く
・META-INF\MANIFEST.MFのMain-Classを見る
・Mainというクラスが始めに起動することがわかった
<起動Mainのクラスコードの検索>
・HudsonのコードからMain.javaを検索
・4つMain.javaあったがデフォルトパッケージの「hudson/war/src/launcher/java/Main.java」を開く
<winstone起動場所の調査>
・Main.main(String[] args)を見るとjarを読み込んでる
・winstoneのMainクラス「winstone.Launcher」を呼び出してる場所を発見
・Mainクラスのコマンドライン引数に「--warfile」を追加して、
winstone.Launcher.mainを起動しているだけと判明

ちなみに、hudsonのプラグインで「port-allocator」なるものがあった。
ヘルプを見るとHTTP_PORT, ADMIN_PORT, SHUTDOWN_PORTが指定できるそうなので、引数指定しなくてもよくなるかもしれない
2007/10/16
Hudson(winstone)で日本語が文字化けたのをむりくり直す
CIツールとして個人的に大流行のHudson!
簡易httpサーバとしても利用できるので大変重宝している。
しかし、こやつを介して静的なHTMLを表示しようとすると
日本語が文字化けるんです…
HTML側でContent-Typeで「Shift_JIS」とかにしても
強制的に「ISO-8859-1」になってしまう。
なんか優先順があるのかなーと思ったらあった。
確かにfirefoxのLiveHTTPheadersで見ると強制的に指定されている…
でもどこでHTTPのContent-Typeヘッダのcharsetパラメータを変えてるのかずっと探していた
が、どうやらwinstone↓が原因…
http://blog.cles.jp/item/2173
※clesさんありがとうございます
修正方法は2種類あるようだ、しかし↓にFilter変更は目的違いなのでは?と書いてあった
http://d.hatena.ne.jp/chinpeinet/20070919
※chinpeinetさんありがとうございます
なので、doGet()/doPost()を修正する方法でチャレンジ!
したのですがうまくいかない…
ひとまず強制的に「UTF-8」にするように変更してみた。
<1.winstoneのコードを取得>
・「winstone java」あたりでググってコードを持ってくる
・適当な場所で解凍
※今回は「winstone-src-0.9.9.tar.gz」を使った
<2.winstoneのコードを変更>
・Eclipse>ファイル>インポート>既存のプロジェクトをインポートでwinstoneを指定
・mavenの依存関係があるので「ビルドパス」で関係を削除
※使用しているjreのversionが直書きなので、異なっていたら変更
・src/java/winstone.WinstoneResponse.getCharacterEncoding()の「ISO-8859-1」を「UTF-8」に変更

・保存してコンパイル
・「winstone-src-0.9.9\build-eclipse\winstone\WinstoneResponse.class」をコピー
<3.hudson.warの解凍>
・hudson.warをzip解凍
<4.winstone.jarの再生成>
・hudson直下にあるwinstone.jarをzip解凍
・「winstone\winstone」に「2」でコピったファイルを上書きペースト
・winstoneフォルダで「jar cvfm winstone.jar META-INF\MANIFEST.MF .」
・winstoneフォルダにできた「winstone.jar」を取得
<5.hudson.warにwinstone.jarの配置>
・「3」のhudsonフォルダに「4」のwinstone.jarを上書き
<6.hudson.warの再生性>
・hudsonのソースを取得&解凍、直下にある「dummy.keystoreファイル」を取得して「3」に配置
※ここからでも取得可
※今回は「hudson-1.146-src.zip」を使った
・以下のようなantスクリプト(build.xml)を作成して「3」に配置
・コマンドラインから「ant」を実行
<7.hudson.warの起動>
・いつもと同じように「java -jar hudson.war」で起動
この方法だとfirefoxはうまく表示できたが、IE6では表示できなかった。
「2」の処理の時に「強制的にContent-Typeを指定しない」ように
修正をしたら、IE6でも文字化けしなかった。
(WinstoneResponse.validateHeaders():L242~253をコメントアウト)
表示方法をブラウザ側に委ねるので危険そうだ…
もうちょいよい修正方法はないものか…
簡易httpサーバとしても利用できるので大変重宝している。
しかし、こやつを介して静的なHTMLを表示しようとすると
日本語が文字化けるんです…
HTML側でContent-Typeで「Shift_JIS」とかにしても
強制的に「ISO-8859-1」になってしまう。
なんか優先順があるのかなーと思ったらあった。
確かにfirefoxのLiveHTTPheadersで見ると強制的に指定されている…
でもどこでHTTPのContent-Typeヘッダのcharsetパラメータを変えてるのかずっと探していた
が、どうやらwinstone↓が原因…
http://blog.cles.jp/item/2173
※clesさんありがとうございます
修正方法は2種類あるようだ、しかし↓にFilter変更は目的違いなのでは?と書いてあった
http://d.hatena.ne.jp/chinpeinet/20070919
※chinpeinetさんありがとうございます
なので、doGet()/doPost()を修正する方法でチャレンジ!
したのですがうまくいかない…
ひとまず強制的に「UTF-8」にするように変更してみた。
<1.winstoneのコードを取得>
・「winstone java」あたりでググってコードを持ってくる
・適当な場所で解凍
※今回は「winstone-src-0.9.9.tar.gz」を使った
<2.winstoneのコードを変更>
・Eclipse>ファイル>インポート>既存のプロジェクトをインポートでwinstoneを指定
・mavenの依存関係があるので「ビルドパス」で関係を削除
※使用しているjreのversionが直書きなので、異なっていたら変更
・src/java/winstone.WinstoneResponse.getCharacterEncoding()の「ISO-8859-1」を「UTF-8」に変更

・保存してコンパイル
・「winstone-src-0.9.9\build-eclipse\winstone\WinstoneResponse.class」をコピー
<3.hudson.warの解凍>
・hudson.warをzip解凍
<4.winstone.jarの再生成>
・hudson直下にあるwinstone.jarをzip解凍
・「winstone\winstone」に「2」でコピったファイルを上書きペースト
・winstoneフォルダで「jar cvfm winstone.jar META-INF\MANIFEST.MF .」
・winstoneフォルダにできた「winstone.jar」を取得
<5.hudson.warにwinstone.jarの配置>
・「3」のhudsonフォルダに「4」のwinstone.jarを上書き
<6.hudson.warの再生性>
・hudsonのソースを取得&解凍、直下にある「dummy.keystoreファイル」を取得して「3」に配置
※ここからでも取得可
※今回は「hudson-1.146-src.zip」を使った
・以下のようなantスクリプト(build.xml)を作成して「3」に配置
<project name="hudson" default="war" basedir=".">
<target name="war">
<war destfile="hudson.war" webxml="WEB-INF/web.xml" manifest="META-INF/MANIFEST.MF">
<fileset dir="." excludes="META-INF/**,WEB-INF/**,build.xml,dummy.keystore,hudson.war" />
<metainf dir="META-INF" includes="maven/**"/>
<webinf dir="WEB-INF" includes="*" excludes="web.xml"/>
<lib dir="WEB-INF/lib" includes="*.jar"/>
</war>
<signjar jar="hudson.war" alias="hudson" keystore="dummy.keystore" storepass="hudson"/>
</target>
</project>
・コマンドラインから「ant」を実行
<7.hudson.warの起動>
・いつもと同じように「java -jar hudson.war」で起動
この方法だとfirefoxはうまく表示できたが、IE6では表示できなかった。
「2」の処理の時に「強制的にContent-Typeを指定しない」ように
修正をしたら、IE6でも文字化けしなかった。
(WinstoneResponse.validateHeaders():L242~253をコメントアウト)
表示方法をブラウザ側に委ねるので危険そうだ…
もうちょいよい修正方法はないものか…
登録:
投稿 (Atom)