Apache JServ Protocol ( AJP ) は、Web サーバーからの受信リクエストを、Web サーバーの背後にあるアプリケーション サーバーにプロキシできるバイナリ プロトコルです。AJP は非常に信頼性の高いプロトコルであり、機密情報にアクセスしたり、アプリケーション サーバー上でコードを実行したりするために悪用される可能性のある信頼できないクライアントには決して公開すべきではありません。[ 1 ]
また、Web サーバーがアプリケーション サーバーにping を実行できるため、監視機能もサポートしています。Web 実装者は通常、ロード バランシングされたデプロイメントで AJP を使用します。このデプロイメントでは、1 つ以上のフロントエンド Web サーバーが、1 つ以上のアプリケーション サーバーにリクエストを送信します。セッションはルーティング メカニズムを使用して適切なアプリケーション サーバーにリダイレクトされ、各アプリケーション サーバー インスタンスには名前 (ルートと呼ばれる) が割り当てられます。このシナリオでは、Web サーバーはアプリケーション サーバーに対するリバース プロキシとして機能します[ 2 ]。最後に、AJP はリクエスト属性をサポートしており、リバース プロキシで環境固有の設定をこの属性に設定すると、リバース プロキシとアプリケーション サーバー間の安全な通信が実現されます。[ 3 ] [ 4 ]
AJP は、 mod_jkプラグインを使用してApache HTTP Server 1.xで動作し、 mod_proxy_ajp、mod_proxy 、および proxy balancer モジュールを組み合わせて Apache 2.x で動作します。他の Web サーバー実装は、 lighttpd 1.4.59、[ 5 ] nginx、[ 6 ] Grizzly 2.1、[ 7 ]およびインターネット情報サービス[ 2 ]に存在します。
AJPをサポートするWebコンテナアプリケーションサーバーには、Apache Tomcat、WildFly(旧JBoss AS)、GlassFishなどがあります。
Alexei Kosut は元々 1997 年 7 月に Apache JServ プロトコルを開発しましたが[ 8 ]、バージョン 1.0 仕様は後に 1998 年 7 月 29 日に公開されました[ 9 ]。彼はまた、同じ月に Apache JServ サーブレット エンジン 0.9 と Apache mod_jserv 0.9a (1997 年 7 月 30 日にリリース)をリリースし、その最初の実装も作成しました[ 10 ]。
仕様は1998年9月9日にバージョン1.1に更新されました。[ 11 ]また、1998年には、改訂されたプロトコルが作成され、仕様バージョン2 [ 12 ]および2.1 [ 8 ]で公開されましたが、採用されることはありませんでした。
1999年、Sun MicrosystemsはJavaServer Web Development Kit(JSWDK、コードネームTomcat)のリファレンス実装をApache Software Foundationに寄贈した。これがApache Tomcatバージョン3.0となり、JSWDK 2.1の後継となったが、Apache JServサーブレットエンジンとAJPのJavaサーブレットAPIバージョン2.1のサポートに向けた開発は頓挫した。 [ 13 ]
現在の仕様はバージョン1.3のままですが[ 14 ]、公開された拡張提案[ 15 ]とアーカイブされた実験的な1.4提案[ 16 ]があります。