Jboss アプリケーション サーバーで実行される Spring-WS Web サービスがあります。また、Jboss 7 を実行する別のサーバーで Spring-MVC アプリケーションを実行しています。Spring-MVC アプリケーションは、主にユーザー インターフェイスに使用されます。Spring-WS アプリケーションには、ビジネス ロジックのすべてのサービスが含まれています。
私たちが持っているコンポーネントを使用する標準的なアプローチは、次の順序になります。
Client Browser ---(HTTP Request)---> Spring MVC ----(SOAP Request)-----> Spring-WS
Client Browser <---(HTTP Request)--- Spring MVC <----(SOAP Response)<----- Spring-WS
クライアント ブラウザからのリクエストの一部を、Spring MVC アプリケーション経由ではなく Web サービスに直接送信するように変更する必要があります。Spring MVC アプリケーションは、最初のプレゼンテーション画面をロードするために使用されますが、更新/書き込みを伴うアクションは Spring-WS プロセスを経由します。
これを実現するために、すべての HTTP リクエストをトラップするクライアント ブラウザと同じマシンで実行される特別なプロセスがあります。その目的は、要求を SOAP メッセージに変換し、応答を HTTP 応答に変換することです。パスを以下に示します。
初期リクエスト (プレゼンテーション/ユーザー インターフェイスの取得)
Client Browser ---(HTTP Request)---> Spring MVC
後続のリクエスト
Client Browser ---(Http Request) ----> SOAP Converter (Local process) ------> (SOAP Request) ----> Spring-WS
Client Browser <---(Http Request) ---- SOAP Converter (Local process) <------ (SOAP Request) <---- Spring-WS
上記のシナリオで発生する 2 つのパスがあります。画面にページを表示するための最初のリクエストは、Spring-MVC プロセスへのリクエストになります。データの変更を伴う後続のリクエストは、上記のパスを介して行われます。
私が今抱えている問題は、Spring-WS (Web サービス) からのすべての応答が XML 形式であることです。これは、リクエストがブラウザーから送信された場合、データは Web サービスから取得する必要がありますが、ページは Spring-MVC アプリケーションから更新する必要があることを意味します。各リクエストには呼び出しが含まれるため、これはどういうわけか少し間違っているように感じます。1 つはデータを取得するためのもので、もう 1 つはプレゼンテーション データを取得するためのものです。
これを克服するために、最初のリクエストを 1 つだけ行う必要がある手法を使用して、Spring-MVC レイヤーを実装したいと考えています。これは、ユーザー インターフェイスが画面にレンダリングされることを意味します。Spring-WS サービスへの後続のすべてのリクエストでは、データの更新以外にブラウザーがレンダリングされることはありません。
これを実現するためにどのような技術を使用できるか知りたいです。これを行う 1 つの方法はアプレットを使用することですが、これはセキュリティ上の理由から除外されています。私は、上で説明したのとまったく同じように機能する Web サイトをいくつか見てきました。つまり、ページが更新されることはありません。非常に良い例は、以下に示す Sonatype Nexus Maven リポジトリ マネージャーのユーザー インターフェイスです。
これは Web ブラウザーで実行され、Nexus ユーザー インターフェイスがブラウザーに読み込まれると、ほとんど Swing タイプのアプリケーションのようになります。(Nexus がユーザー インターフェイスに使用しているテクノロジを知っている人はいますか?)
私の質問は、swing タイプのルック アンド フィールを持ち、Swing ではなく、画面を更新するためにサーバーへの最小限のリクエストしか必要としない、どの Web ベースのユーザー インターフェイス テクノロジ (できればオープン ソース) を使用できるかということだと思います。
前もって感謝します。