| アプリケーションサーバ/コンテナ活用編 |
|
ユーザの入力やシステムの状態によって表示が変化する、動的なWebページを構築する技術としては、サーバサイドJavaが登場する以前から、CGI(Common Gateway Interface)がよく知られています。CGIとは、Webサーバから外部プログラムを呼び出すための仕組みです。PerlやRubyなどのスクリプトを呼び出すことで、Webページを動的に表示させることができます。
小・中規模のWebサイト構築では、まだまだサーブレット・コンテナを導入できないことも多いので、いまだにCGIがよく使われます。一方ではサーバサイドJavaの開発、もう一方ではPerlによるCGIの開発、というようなプログラマの方も多いことと思います。
さて、そのようにJavaとCGIを並行で開発していて、Tomcatがすでにインストールされている環境に、さらにApacheをインストールしなくてはならないのを面倒に感じたことはないでしょうか? Tomcat上でCGIも動かせれば、わざわざApacheをインストールする必要もなく、開発環境がシンプルで済みます。
実は、Tomcatでは、デフォルトでCGIが無効になっているだけで、CGIの実行自体はサポートされているのです。TomcatでCGIを走らせることで、上記のようなニーズに応えることができますし、また、CGIで構築された既存のシステムとJavaを連携させる必要がある場合など、Tomcatのみで環境を作ることもできるわけです。
■TomcatでCGIを有効にする方法
上で書いたとおり、Tomcatでは、デフォルトでCGIサポートが無効になってるため、設定を有効にしてやる必要があります。
まず、「%CATALINA_HOME%\server\lib」フォルダ以下のservlet-cgi.renametojarファイルを、servlet-cgi.jarに名前を変更します。
注:「%CATALINA_HOME%」は、Tomcatのルートフォルダを示すこととします。Windowsでのデフォルトは、「C:\Program Files\Apache Software Foundation\Tomcat 5.0」です。続いて、CGIを利用したいWebアプリケーションのweb.xmlに、以下のようにして、CGI起動用のサーブレット(org.apache.catalina.servlets.CGIServlet)を配備します。web.xmlは、Webアプリケーションのルート配下の「WEB-INF」フォルダにあります。
| 各Webアプリケーションのweb.xml |
<?xml version="1.0" encoding="UTF-8"?> |
CGIServletに設定可能なパラメータは以下のとおりです。
CGIServletの設定パラメータ| パラメータ名 | 説明 |
| cgiPathPrefix | CGIスクリプトの置かれている場所の指定。頭の「/」を除いた、Webアプリケーションのルートからの絶対パスで指定する。デフォルトの場所は「WEB-INF/cgi」 |
| clientInputTimeout | ブラウザからの入力がないと判定するまでの時間(単位はミリ秒)。デフォルトは100ミリ秒 |
| debug | ログへ出力させるデバッグ情報の表示レベル。デフォルトは0 |
| executable | スクリプトの実行コマンド。デフォルトは「perl」。実行環境において、perlなどの実行コマンドのパスが通っていない場合は、「C:\Perl\bin\perl.exe」のように絶対パスで場所を指定してやる必要がある |
なお、上記のCGI利用のための配備記述は、「%CATALINA_HOME\conf」フォルダにあるweb.xmlに、コメントアウトされた形ですでに記述されています。従って、そのコメントアウトを取り除いて記述を有効にするだけで、簡単に設定することが可能です。しかし、こちらのweb.xmlで記述してしまうと、TomcatサーバのすべてのWebアプリケーションでCGIが有効になりますので、注意が必要です。すべてのWebアプリケーションでCGIを使う必要がないのであれば、先に示したとおり、個々のWebアプリケーションのweb.xmlでCGIの設定をする方が無難です。
これで設定は終了ですが、Windowsをお使いでPerlをCGIに利用したい場合、デフォルトではPerlはインストールされていません。Perlのインストールが必要であれば、以下を参考にPerlをインストールしてください。
■Perlをインストールする(Windowsの場合)
LinuxやMac OS Xでは、デフォルトでPerlの実行環境がインストールされていますが、Windowsには入っていません。そのため、Windowsでは、まずはPerlをインストールしてやる必要があります。Red Hat社のCygwinからも、Perlの実行環境をインストールすることができますが、ここではActive State社のActivePerlのインストール方法について説明します。
まず、以下のURLよりActivePerlのインストーラをダウンロードします。
インストーラには、アンインストーラの付いているもの(MSI版)と付いていないもの(AS Package版)がありますが、特に問題がない限り、アンインストーラ付きの方(ファイル名ActivePerl-x.x.x.xxx-MSWin32-x86.msi)をダウンロードします。
ダウンロードしたファイルActivePerl-x.x.x.xxx-MSWin32-x86.msiを右クリックし、[インストール(I)]を選択してください。以下のインストーラが起動します。
![]() |
|
ActivePerlのインストーラ |
後はウィザードに従って進めていくだけです。特にカスタマイズする必要がなければ、ずっと「Next」を押していくだけでインストールは完了します。デフォルトのインストール場所は、「C:\Perl」になります。
Tomcatがすでに起動している場合は、ActivePerlのインストール完了後に、再起動させてください。インストールしたPerlのパス設定を有効にするためです。
■CGIプログラムの動作を確認する
最後に、CGIプログラムが実際にTomcat上で動作することを確認しておきましょう。以下のようなごく基本的なCGIプログラムを用意し、アプリケーションルート配下の「/WEB-INF/cgi」フォルダに配置してください。
| hello.cgi |
#! c:/perl/bin/perlprint "Content-Type:
text/html\n\n"; |
「http://localhost:8080/sample/cgi-bin/hello.cgi」でアクセスできれば、成功です。
| 「Java TIPS」 |
TechTargetジャパン
- Scalaのパッケージ、アクセス修飾子、オブジェクト継承 (2012/5/22)
インポート、パッケージオブジェクト、抽象クラス/抽象メソッド、オーバーライド、final、シールドクラスなども - 基幹系システムでCloud SQLは使えるか試してみた (2012/5/17)
サンプルとしてMRPシステムを作成して動かし、「再帰呼び出し」などのパフォーマンスを測定して検証してみます - アジャイル管理ツール9選+Pivotal Tracker入門 (2012/5/14)
群雄割拠のアジャイルプロジェクト管理ツールを9つ紹介し、特に注目を集めているPivotal Trackerの基本的な使い方を解説します - サーバサイドJSやJavaでWebアプリが作れるXPages (2012/5/11)
Notes/Dominoの資産をサーバサイドJavaScriptやJavaで操作し、HTMLやJavaScript、CSSをUIにできる技術を紹介
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -

