私はまだ REST ソリューションについて読んでいますが、RESTlet を使用して Web サービスを実装し、Jackson を使用して JSON として応答を提供することにしました。
それ以前は Axis2 を使用していましたが、そのパフォーマンスに恐怖を感じていました。単純な要求がクライアントに返されるまでに数百ミリ秒かかっていたのに、クライアントとサーバーの両方が同じマシン上にあったのです! (ベンチマークをやり直して、以前よりもうまくやって、今度は直接呼び出し、Axis2、および RESTlet+Jackson を比較します。)
RESTlet は多くのコンテナーで使用できることを知っており、Tomcat と RESTlet を統合するためのチュートリアルをいくつか見つけました。しかし、私が理解したように、RESTlet アプリを Tomcat に直接バインドすることを意図していました。
私の問題は、Axis2 を使用すると、非ブラウザー クライアントにサービスを提供する Axis2 WebService と共に、ブラウザー リクエストを処理して HTML ページにサービスを提供するサーブレットを開発する独自の Eclipse プロジェクトを作成できることです。この Eclipse プロジェクトは、すべてのコードと必要なすべての jar を保持する独自の war としてエクスポートされます。次に、それを Tomcat にデプロイし、独自のサーバーからすべてを機能させることができます。
例:
- http://host.com/projectname/operationはサーブレットにバインドされ、HTML ページを提供しますが、
- http://host.com/projectname/services/は、WebService 情報、WSDL へのリンクなどを含む Axis2 メイン ページです。
- http://host.com/projectname/services/operationはhttp://host.com/projectname/operationと同じことを行いますが、SOAP リクエストを受け取り、SOAP レスポンスを提供します。
私はRESTletで同じことをしたい:
- http://host.com/contentは、コンテンツへのリンクを一覧表示する HTML ページを提供します。
- http://host.com/content/123は、コンテンツ 123 のデータを含む HTML ページを提供します。
- GET http://host.com/webservice/contentは、コンテンツへのリンクをリストする JSON 配列を返します。
- GET http://host.com/webservice/content/123は、コンテンツ 123 のデータを含む JSON オブジェクトを返します。
- http://host.com/content/123/updateは、従来の POST パラメータを受け取って DB 上のコンテンツ 123 を更新し、更新されたデータを含む HTML を返します。
- PUT http://host.com/webservice/content/123は、JSON オブジェクトを受け取り、DB で更新し、DB からクエリされたデータを含む別の JSON オブジェクトを返します。
ご覧のとおり、適切な web.xml 構成を使用してこの war を作成する際に、Eclipse が「魔法」を実行する必要があります。Axis2 では機能しますが、RESTlet で行う方法がわかりません。
別の質問です。サーブレットが不要で、RESTlet WebService のみが必要な場合、数百のリクエストを同時に実行する 12 のクライアントに対して最も効率的なコンテナはどれでしょうか?