// 下階層用テンプレート #topicpath ---- //ここにコンテンツを記述します。 #contents Plugin開発の練習を兼ねて、Web Recorder Pluginなるものを作ってみました #ref(image.png) このプラグインはWebアプリケーションのテストを支援します。Webブラウザへのレスポンスをキャプチャしてファイルに保存したり、その保存したファイルを使ってWebブラウザからのリクエストにレスポンスしたりすることができます。いちど録画モードでWebブラウザでオペレーションしてキャプチャしておけば、そのあとはその保存したファイルから同じレスポンスを返すことが出来るので、クライアントサイドの単体テストなどにも活用できそうです。 開発用サーバに接続できないお客様先とかスタンドアロンの環境でWEBアプリケーションのデモをしたいよねってはなしがあったのが、このプラグインをつくろうとしたきっかけでした。 **インストール [#pf2d6167] http://www.masatom.in/update/ よりインストールできます #ref(install01.png) commons と Web Recorderを選択してください #ref(install02.png) あとは次へ次へですね #ref(install03.png) 以上でインストールは完了です。再起動したら、最初の画面イメージのようなボタンが並んでいたらインストール完了ですね。。 **使い方 [#q7e1ba88] 基本的にはWEBプロキシなので、WebブラウザやWebクライアントにプロキシの設定をすればOKです。デフォルトではポート 8008 ((Eclipseのpreferences>>Web Recorderで変更可能です))でプロキシのプロセスを起動します。 起動モードは以下の3つがあります -録画モード -再生モード -プロキシモード これらのモードの起動、停止、切替はツールバーのボタンで簡単におこなうことができます。 :録画モード|クライアントからのリクエストに対してサーバが返却した情報をローカルに保存するモードです。保存先はEclipseの設定画面で指定可能です。またツールバーの「ファイル保存フォルダを開く」をクリックするとその場所をExplorerやFinderで開きます。 :再生モード|録画モードでローカルに保存したファイルを用いて、クライアントからのリクエストにレスポンスを返すモードです。保存していないリクエストに対しては通常のプロキシのようにサーバよりレスポンスを返します。開発してるWEBアプリで、想定しうるリクエストを録画モードで保存しておけば、あとはスタンドアロンでも再生モードでWEBアプリを紙芝居のように動かすことができます。また、録画モードで保存しておいたレスポンスを用いて、WEBクライアントのノンデグレテストなどに活用することも出来ます((サーバのコンテンツが変わったとしてもつねに同じレスポンスを返すことができるわけで。。))。 :プロキシモード|いわゆる普通のプロキシです。Eclipseのコンソールにリクエストヘッダの情報やPostしているときのRequest Bodyなどを出力するので、ちょっとしたデバッグに使用できます。 **ライセンス [#z1ac2ed3] Eclipse Public License - v 1.0 に準じます。 **ソースコード [#kb76760f] [[http://www.masatom.in/viewvc/Others/tags/V1.0.0_20120708_01/]] http://www.masatom.in/viewvc/Others/tags/V1.0.0_20120708_01/ **謝辞 [#o91aed92] 以下のモジュールを使ってます。作者の方々へ、感謝。 -Eclipse http://www.eclipse.org/ -Jetty(Servlet Container) http://www.eclipse.org/jetty/ -Apache Commons http://commons.apache.org/ -Apache HttpComponents(HTTP Components) http://hc.apache.org/index.html -Apache log4j(ログ出力用ライブラリ) http://logging.apache.org/log4j/1.2/index.html **その他 [#pa5f4c34] 今回プロキシというかWebサーバの機能を実装するのにはじめてJettyを使ったのですが、JettyはプログラマブルにServlet Containerを制御できておもろいですねー ---- この記事は #vote(おもしろかった[1],そうでもない[0]) #comment #topicpath SIZE(10){現在のアクセス:&counter;}