NetBeans の main/contrib をビルドするには? [IC]
NetBeans で Jetty プラグインを利用するには? の続き。
NetBeans に Servlet コンテナ Jetty のプラグインを追加するために NetBeans の main/contrib をビルドするにはどうするか。
Nabble - NetBeans - Japanese Users - NB6.5PHPでの全角スペースやタブの表示 によると、本記事とは別件の文脈であるが、
ビルドするには(私の理解だと) NetBeans のソース全体をクローンする
必要があります。これが大きいですね…
% hg clone http://hg.netbeans.org/main
% cd main
% hg clone http://hg.netbeans.org/main/contrib
と記載がある。ここで hg は Mercurial のコマンドの事である。Mercurial は水銀を意味するから、コマンドを水銀んお原子記号の hg とかけているわけだ。ということで、Mercurial が必要になった訳だが、NetBeans には Mercurial プラグインがある。
これを使ってみたところ、NetBeansにもありました。 - ひたすらプログラミング日記 で紹介されているように、NetBeans の【メニューバー】-【ウィンドウ】-【その他】-【Maven Repository Browser】が見つかった。その様子が次の図。
しかし、ここを見てみても main/contrib が見つからない。jetty で検索してみても j2ee.jetty プラグインにうまくヒットしない。このリポジトリは Maven のリポジトリであって、Mercurial のリポジトリではないのだろうか。
しょうがないから、Mercurial をインストールする羽目になる。上記の状態であれば NetBeans には既に Mercurial が統合されているはずだから、本来は必要ないはずだが、めんどうなので。
NetBeans の main/contrib をビルドするには? その 2 に続く。
NetBeans で Jetty プラグインを利用するには? [IC]
Servlet/JSP でのエラーページの表示 その3 で Servlet コンテナによりエラーページの取り扱いが異なるようだと書いた。では、Jetty という Servlet コンテナ(+Web Server) ではどうなるだろうか。
NetBeans で各種 Servlet コンテナを扱うには 【メニューバー】-【ツール】-【サーバー】から次のダイアログを開いて設定する。
このダイアログで【サーバーを追加】を選択すると次のダイアログが表示される。
しかし、このダイアログには Jetty の項目がない。今回の記事の意図は、ここに Jetty を追加するにはどうしたらよいか?である。
- Nabble - Netbeans IDE Users - Adding a Jetty server instance
- Nabble - Netbeans IDE Users - Netbeans + Jetty
によると、novakim 氏がプラグインを作ったようだ。掲示板に nbm を添付している。私の環境でそのリンクを開くとなぜか binary でダウンロードされない。Iria などのダウンロードツールを使ってダウンロードしてもファイルが壊れてしまう。頑張れば何とかなるかもしれないが、めんどくさそうなので、ソースコードからビルドすることにした。
しかし、それはそれでめんどくさい。 だからこうして blog に記事を書いているわけだ。
novakim 氏のプラグインは main/contrib/j2ee.jetty にある。現在、NetBeans のソースコードは Mercurial で管理している。ということで、ここからは、NetBeans の main/contrib をビルドしよう!に内容が変わってしまうのである。
...これ、なんて RPG?
NetBeans の main/contrib をビルドするには? に続く。
Servlet/JSP でのエラーページの表示 その3 [IC]
Servlet/JSP でのエラーページの表示 その2 と同じ Servlet を GlassFish Ver.2 で表示したところ次のように表示された。
同じ Servlet が Tomcat Ver.5.5 だと空白ページが表示される。
どうやら、GlassFish Ver.2 と Tomcat Ver.5.5 ではエラーページの扱いが異なるようだ。私が実際に使うのは GlassFish Ver.3 Prelude か Jetty になりそうなので、そちらでも調べておかないと...。
それにしても、エラーページ一つとっても Servlet コンテナによって既定の仕様が異なるんだね。
NetBeans で Jetty プラグインを利用するには? に続く。
Servlet/JSP でのエラーページの表示 その2 [IC]
Servlet/JSP でのエラーページの表示 という記事の続き。
基本に戻り単純な Servlet を作る。
import java.io.IOException;
import javax.servlet.*;
import javax.servlet.http.*;
public class NewServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
throw new ServletException("ServletException");
}
}
この Servlet は単純に例外を発生させるだけである。例外が起きれば Internal Server Error になるかなと思ったが、localhost:8080/WebApplication3/NewServlet にアクセスしても真っ白いページが表示されるだけ。
確かに HTTP レスポンスは返していないので、それはそれで正しいが、例外が発生した場合は、既定では Tomcat がエラーページを作成するのではなかったか?
仮にそのような仕様は無いとすれば、 カスタムエラーページの仕様も無さそうなものだが...
まだ調べる必要があるらしい。
Servlet/JSP でのエラーページの表示 その3 に続く。
Servlet/JSP でのエラーページの表示 [IC]
Java Servlet や JSP(Java Server Pages) で例外が発生したとき表示するエラーページを変更したい。
Web で検索したり Sun の試験の書籍を調べると、web.xml を次のように編集すれば良いとある。例えば、プログラム中の内部エラーが発生したときは
<error-page>
<error-code>500</error-code>
<location>/resources/error.html</location>
</error-page>
とする。しかし、なぜか、このエラーページが表示されず Servlet コンテナが用意するエラーページになってしまう。しかも、500 だけ。404 ならば設定したページが表示される。
Servlet コンテナは Apache Tomcat Ver.6.0.18 と GlassFish Ver.2 を試した。どちらも同じ。
フィルタが設定されているとそちらが優先されるとか、アプリケーションコンテキストがあると web.xml は無視されるとかという情報がどこかの blog に書いてあったが、どうだろう。フィルタは問題ないようだが...。
とりあえず、さらに古いバージョンの Tomcat と非常にシンプルな Servlet または JSP の組み合わせで試してみようと思う。
Servlet/JSP でのエラーページの表示 その2 に続く。
Servlet、JSP、JSF の変遷 [IC]
- Servlet
Java プログラムをサーバで動かす技術。HTTP プロトコルに対応した doGet とか dPost などのメソッドをオーバライドする。あらかじめソースコードをコンパイルしておかなければならない。 HTML を出力するなら、Java ソースコード中に out.print("<h1>Hello</h1>") のように記述する必要がある。Java 言語を用いて Web アプリケーションを作成するのにあたり最も基礎となる技術。 - JSP
Servlet だとソースコードをコンパイルしないといけないし、HTML を出力するのに不便であることから、もう少し簡単にできるようにしたのが JSP。HTML 中に「タグ」を書いて Java のクラスのメソッドを呼び出したりすることが出来る。PHP の Java 版のような感じ。あらかじめ、ソースコードをコンパイルしておく必要がない。 - JSP ver.2.0
JSP の仕様に EL 式を追加し、カスタムタグライブラリの作成にタグファイルを使用できるようにしたもの。他にも追加点はあるが省略。 - JSF
平たく言うと、MVC モデルで言うところのビュー層とコントローラ層を提供するフレームワーク。JSP のカスタムタグライブラリとして提供している。
- WoodStock
JSF をベースにした WEB 用の GUI コンポーネント。NetBeans に付属する。NetBeans でビジュアルエディタを使うと、このコンポーネントが使われる。今後の開発は停止するらしい。
- ICEfaces
Visual Web JSF, Web UI コンポーネントのマイグレーション によると WoodStock が開発停止して、今後はこちらに注力するらしい。ICEfaces に関しては 【ハウツー】JavaScriptの記述が不要! Java開発者向け本格的AjaxフレームワークICEfaces (1) JSFの文法でAjaxアプリを作成可能 (マイコミジャーナル) が詳しい。WoodStock と同様に JSF ベースの GUI コンポーネント。 - JSF 2.0
【特集】JBoss Seam - EJB 3.0時代のフレームワークを使いこなす (8) Faceletsとは (マイコミジャーナル)
Facelets が取り込まれるかも。JSP ベースの JSF ではなくなる模様。Tapestry みたいなもの?まだ正式に決まっていない。
他にも、Struts、Struts 2、Maaya、Spring、Wicket、Tapestry とかたくさんある。
JSP と JSF の関係を巧く表しているのが、【特集】JBoss Seam - EJB 3.0時代のフレームワークを使いこなす (8) Faceletsとは (マイコミジャーナル) にある次の文章。
JSP(Java Server Pages)はHTMLで記述されたWebページ上で動的なコンテンツを出力することのできる技術である。それに対してJSFは、動的なWebページの構築にコンポーネント・ベースのモデルを導入するためのフレームワークと言える。ただしJSFの仕様はJSPを拡張する形で設計されているため、JSFによるアプリケーションの作成はJSFのカスタム・タグを用いてプログラミングすることが作業の中心となる。つまり、結局は、JSP に何かタグを書いて、そのタグの定義を別のファイルに書く。これらはライブラリにすることができ、そうすると、コンポーネントとして再利用しやすくなるよね、みたいなもの...だと思う。
JSF に関しては JSFアプリケーションの“表”と“裏” - ITアーキテクト [IT Architect] も参考になる。
Servlet、JSP が使用可能なレンタルサーバ [IC]
Servlet や JSP が使用できるレンタルサーバというと、専用サーバか VPS (Virtual Private Server) くらいしか知らなかったのだが、1strentalserver というのを見つけた。
¥2520/月 で Tomcat が使える。アカウントごとの仮想 JVM を提供するという。PressNetwork | 1stレンタルサーバー日本初となるJVMを採用した新感覚のJAVA共用プランを開始 で公開されているプレスリリースによると、2008年8月29日よりこのサービスを開始した模様。
価格は問題ないが、信頼性とか性能とかサポートとかもろもろの評判はどうなのだろうか?
2ch ではサポートが微妙っぽい情報があったが、そもそも 1strentalserver で検索しても使用している例があまり見つからない。各種ブログ検索にもヒットしないようだ。裏を取りたかったのだが...。Web には
1strentalserver はサーバー業界で共用レンタルサーバー、専用サーバー分野における草分け的存在です。とフッターがあるにもかかわらず、全然情報が見つからないのだが...。
まぁ、価格が安いのでちょっと利用してみて問題があれば引っ越すというのが良さそうだ。
iCalendar 形式を扱うライブラリ [IC]
iCalendar 形式とは? [IC]
また、RFC 2446 iCalendar
Transport-Independent Interoperability Protocol(iTIP) - Scheduling
Events, BusyTime, To-dos and Journal Entries、RFC 2447 iCalendar Message-Based Interoperability Protocol(iMIP) にも関連する仕様がある。
例えば、iCal天気 - Weather Hacks - livedoor 天気情報 では iCal 形式で天気予報を配信しており、Google Calendar で読み込むことができる。他にも、アップル - iCal - カレンダーライブラリ で配信されている。
iKnow -API 手習い - [IC]
iKnow -Developer Challenge - というエントリを書いたので、少し API を使ってみる。
例えば、iKnow! で学習しているアイテム数を得るには study results を使えばよい。API リファレンスには
You can use "total_summary" data to show study badges, ranking etc.
(It's included in "results" tag as attributres in XML responses)
"study_results" is for progress graphs etc.
と書いてある。学習しているアイテム数を表示するようなバッジやランキングなんかを作るなら total_summary を使えば良い。これがあれば、blog parts なんかは簡単にできそうだ。
API は XML か JSON で結果が返ってくるので、