Apache Software Foundation | Jakarta Project | Apache Tomcat
JKとは何ですか?

最新の JK2 JK をリファクタリングしたものです。 ネイティブ部分は完全に再構成され、大部分の設定が簡潔になりました。

JKはApacheのモジュールとしてだけでなく、他の有名な Web サーバでも使われます。

  • mod_jk Apache 1.3 2.0 Web サーバで使用されるApacheのモジュールです。
  • isapi IIS で使用されるリダイレクタです。
  • nsapi Netscape/iPlanet で使用されるリダイレクタです。
  • dsapi Domino で使用されるリダイレクタです。ただし、これについてはあまりサポートされません。

なぜJKを使うべきなのでしょうか?

JKは元になった mod_jserv の多くの制限を克服するために開発されました。

mod_jserv はあまりに複雑でした。 Apache/JServから移植されたため、Apacheには不要な、JServに特化した余計な部分を引き継いでいたからです。

mod_jserv はUNIX OSのApache Web サーバでのみサポートされていましたが、 JK JKライブラリ と名付けられた互換階層により、 たくさんの Web サーバとオペレーティングシステムをサポートします。 このJKが提供する階層方式により、多くの異なった Web サーバとOSのサポートが容易になります。

JKはSSLのためのより良いサポートを提供します。 mod_jservではリクエストがHTTPによるものか、HTTPSによるものかという確実な識別ができないという問題がありました。

Servlet2.2と2.3仕様で必須になっている多くのSSLの情報を転送する、 新しいAjpv13プロトコルを使うことにより、JK では HTTP と HTTPS の識別が可能になります。

JKはたくさんの種類の柔軟な接続方法を、 Web サーバとTomcat Servlet エンジンの間に提供します。 また、 3.2.x 3.3.x 4.0.x 4.1.x および 5.x のすべてのASF Tomcatエンジンで使用可能です


JK と JK2 の違いは何でしょうか?

JK2はJKをリファクタリングしたものであり、さらに強力になっています。

JK2 は Apache 1.3 でも稼動しますが、Apache 2.0 を念頭に開発されています。IIS、NES/iPlanet のような マルチスレッドサーバにも最適です。 他のアプリケーションに組み込んだり、Javaから使用することもできます。

JK2はモジュール性を改善し、プロトコルと物理階層をさらに分離しました。 JK2は速い UNIXソケットをサポートし、 その他の連携方法をサポートできるよう拡張されました。 JNIに対してもサポートが向上し、(将来のバージョンでは)JDK 1.4のNIOも使用されます。

JavaのJMXと似た、監視のサポートも追加されました。 mod_statusと似たモジュールも提供されています。 追加アダプターはインターフェイスとして使われ、 状態と実行環境の構成情報を提供します。

設定は後述のコンポーネントモデルに変更されました。 複数の設定ソースがサポートされ、(ファイルに追加することにより) 埋め込まれているアプリケーションをより良く統合することができます。 設定階層は管理階層APIを使います。 そして、実行時構成により行われた変更を保存することをサポートします。

その他の機能にJNIモードがあります。 JK2はJNIライブラリのように使用でき、 Javaプログラムにネイティブにアクセスする機能を提供します。 たとえば、共有メモリ(マルチプロセス環境での設定や監視に使用される)や、 UNIXドメインソケットへのアクセスを提供できます。 また、シグナル、chuid、Winレジストリへのアクセスも提供できます。 すべて同じ連携機能を使っていて、in-processでもout-ofプロセスモードでもサポートしています。


ApacheとTomcatを接続する他の方法は?

その他の方法は mod_webapp の文書に詳しく書かれています。

webapp サイトをチェックして、どうしたいか決断してください。

mod_webappの大きな利点は、設定が楽なこと、 WARP という整理されたプロトコルを持つということ、 Tomcat 3.x以前で使われた汚いプロトコルを考慮していないことです。 しかし、 WARP プロトコルは JK2 でも実装することが可能です。;-))

欠点は Apache Portable Runtime が必要なことです。 それはまだApache 2.0でしか簡単には利用できず、IIS、NES/iPlanet、 Dominoのような Web サーバではサポートされません。


[訳注: これは新舘邦貴が翻訳しました。日本語訳に対するコメントがあれば、こちらに送って下さい。]