昨日の間違い

Webアプリケーションのフレームワークの選択を間違っていました。

ここでは、「Visual Web ICEFaces」を選択しなくてはいけなかったのです。
ここのチュートリアルを参考にしました。
http://www.netbeans.org/kb/articles/icefaces-netbeans-crud-apps.html
とりあえず編集もできるようになり、動作確認もできました。いやー、よかったです。でも、ここの「ICEFaces」って何なんでしょうか?まだ謎は解けていませんが、とりあえずよしとします。

今までStruts+素のJSPで開発することが多かったので、このリッチな画面が簡単に作成できてしまうのは感動です。
次はラベルの国際化対応の調査とPanelTabSetの使い方に挑戦するつもりです。

ICEFaces Visual Editorの動作がおかしい

ICEFaces関係のプラグインをインストールしてJSP(Page1.jsp)を編集していましたが、どうも動きがおかしい・・・。ICEFacesコンポーネントをドラッグしても、デザイナ上には何も表示されません。でも、ペアになるPage1.javaにはプロパティやメソッドが追加されていきます。
やった事といえば、プラグインをインストールしてWEBアプリケーションプロジェクトを新規作成しただけなんですが・・・、今日はあきらめてまた明日調べることにします。

T2 Samples showcase

今度はT2 Samples showcaseをダウンロードしてきました。
http://t-2.googlecode.com/files/t2-samples-0.5.1-ga.zip
シンプルなサンプルで、非常に分かりやすかったです。ざっと見て動かした感じではT2はJSPJavaのクラスをマッピングしているだけ?のように見えます。いろいろ便利なユーティリティはありますが、本当に薄いフレームワークなのかな?逆にもっといろいろな機能があるんじゃないか?との邪推を呼びそうなくらいです。
ビュー層は好きなものを選べるそうですが、今気になっているのがICEFacesなので、その場合はどうなのかな?と思っています。

昨日のコード

昨日試したコードです。
AddPage.javaを改変


protected void calc() {
final String s1 = params.get("arg1")[0];
final String s2 = params.get("arg2")[0];
final String s3 = params.get("arg3")[0];
try {
int arg1 = Integer.valueOf(s1);
int arg2 = Integer.valueOf(s2);
int arg3 = Integer.valueOf(s3);
int result = this.calcService.calclate(arg1, arg2, arg3);
request.setAttribute("result", result);
} catch (Exception e) {
request.setAttribute("message", "add error!");
}
}

CalcServiceImpl.javaに追加(もちろnCalcServiceにも追加)


@Override
public int calclate(int arg1, int arg2, int arg3) {
return arg1 + arg2 + arg3;
}

こんな感じで動かしました。
@ActionParamで分かりにくいと思ったのはここです。


@POST
@ActionParam
public Navigation add(WebContext context) {
// Injector自体をInjectしてrequestを取得する場合
// HttpServletRequest request =
// injector.getInstance(HttpServletRequest.class );
calc();
return Forward.to("/pages/add.jsp");
}

@POST
@ActionParam("add2.x")
public Navigation imgTest(WebContext context) {
calc();
return Forward.to("/pages/add.jsp");
}

@POST
@ActionParam()
public Navigation hoge(WebContext context) {
calc();
return Forward.to("/pages/add.jsp");
}

T2のFAQではGoogle Code Archive - Long-term storage for Google Code Project Hosting.に@ActionParam("add2.x")はIE用と書いてあったのですが、するとimgTestというメソッド名は気にしなくてもいいということなのかな?ブラウザがFireFoxでも".x"は認識するの?するとhogeは何?という感じで??となってしまいました。
Guiceについては、うーん、ちょっと好みではない感じです。T2 Samplesで試した方がいいかも・・・

jspをのせようとしたのですが、コードをそのままのせる方法が分かりませんでした・・

T2のサンプルをさわり始めました

久しぶりにNetBeansを立ち上げ、以前セッティングしたT2のサンプルを動かしてみます。
とりあえず動くことが確認できたので、足し算のサンプルを3個の数字を足すようにしてみました。GlassFishV2を動かしたままでjsp、page、serviceをそれぞれ変更してコンパイルします。ホットデプロイできているかな?と見てみると、どうやら3つ目の引数は無視されている様子。変更した部分が反映されていません。うーん、何か設定が必要なのかしら・・よくわからないのでとりあえず放置します。とにかく、慣れないうちは何をするにも時間がかかります。ここは辛抱です。

で、サンプルの中身も見てみます。予備知識0の状態で見ているので、わからないことだらけです。pageクラスの中を見てみると、jspからのパラメータは@RequestParametersアノテーションによりString型のMapでインジェクトされています。この辺りはStrutsのActionFormとは違う感覚ですね。よりマニュアル感覚が強い(PHP的?)気がします。おそらく、初心者とエキスパートの両極に受ける作りではないでしょうか?
@ActionParamは少しわかりにくいですね。AddPageクラスのimgTestとかhogeメソッドが何のために必要なのかが直観的ではない気がします。

頭の中が疑問符だらけでまたもやくじけそうになっていますが、もう少しさわってみようと思います。

認証局(CA)のパブリックとプライベート

仕事で必要に迫られ、ど素人の状態から調べてみた結論です。

インターネットにサービスを提供する場合のクライアント認証で、特定少数(例えば社内の人)に適用する場合はプライベートCAで十分。パブリックCAとプライベートCAでソフトウェア上のセキュリティ強度の違いはない(はず)ので、秘密鍵の保管さえちゃんとしていれば問題はなさそう。
ルート証明書を配ったり、ブラウザにインストールしてもらう手間はありますが、特定少数ということならば対応は可能です。
特定少数相手であれば、パブリックCAのコストは見合わない。

うーん、でも心理的にはプライベートCAに対する怖さっていうのは残るんですよね。ど素人だからでしょうが・・・・・

localhostじゃだめらしい?

先日の続きで、コンパイルが通ったので実行してみました(shinさんshot6さん、ありがとうございました)。しかし、実行しても何も起きません。???GlassFishも起動していないような・・・。プロジェクトのプロパティをみるとサーバーが指定されていません。これかと思い、GlassFishv2を選択し、再度実行!今度はちゃんとサーバーの起動をしています。
そのうちブラウザが立ち上がって、さぁきた!と思ったら、今度はページ読み込みエラーが・・。
URLには「http://www.localhost.com:17800/t2-guice-0.5.1-ga/」と表示されています。
試しに「http://localhost:17800/t2-guice-0.5.1-ga/」とやってもダメ。
最後に「http://127.0.0.1:17800/t2-guice-0.5.1-ga/」とやると動きました。
どーゆーこと?

いろいろ調べると、原因はhostsファイルに

1 localhost

と記述されていたことらしいです。::1という表記はipv6用のものらしく、FireFoxはそれを名前解決できないのでwww.localhost.comに変換して再検索したらしいのです。(らしいだらけですが・・)その1行を削除するとちゃんとlocalhostで動くようになりました。
なんか、いろいろ罠が多いですね・・・自分が引っ掛かりまくっているだけかもしれませんが、最初からくじけそうになりました。でもNetBeansは比較的設定項目が少ないので、設定を探すときはそれほど苦労しなくて済みました。その点はEclipseよりいいのかもしれません。