3

Spring MVCとHibernate-Searchに組み込まれた巨大な読み取り専用のRESTFULアプリケーションがあり、モバイルアプリと監視アプリケーションで使用するために一部のデータをjsonとxmlにマーシャリングします。

私たちのURLは非常に単純です、私たちはこれを持っています:

server:port / entity / id /?marshalling = json

また

server:port / entity / id /?marshalling = xml

そして時折

server:port / entity / id /?marshalling = something&filterProp = entity.prop&ordering = desc

JSF 2.1を使用し、いくつかのユーザー管理機能を追加して、このためのプレゼンテーション層を作成する必要があります。次のようなことを考えていました。

server:port / entity / id /?marshall = html

または、マーシャルリクエストパラメータを完全に省略します。

今。私の知る限り、結合できるのはJSF2.1とSpringWeb Flowのみであり、SpringMVCを直接結合することはできません。この要件をどのように達成できるか知っている人はいますか?

4

1 に答える 1

2

Spring MVCとJSFはどちらも、別のサーブレットと競合しないコンテキストにのみマップできる個別のサーブレットで動作するため、これを簡単に行うことはできず、成功した場合は基本的に巨大なハックになります。

どうしてもこの方法で実行する必要がある場合(これは実行しません)、おそらくマーシャルサーブレットを使用してJSF要求のクローンを作成し、WebClientを使用してその要求をFacesServletに送信し、返されたWebClient応答をコピーします。サーブレットの応答をマーシャルし、それを返します。これはユーザーには透過的ですが、非常に厄介で、潜在的に安全ではありません。

個別のWebベースのプレゼンテーション層を実装する最良の方法は、プレゼンテーション層への要求をFacesServletにマップして、RESTFULWebサービスが直接呼び出されないようにすることです。

アクター->/admin/page.jsf->FacesServlet->JSFビュー->JSFコントローラー->ビジネスロジックレイヤー->RESTFULWebサービス

このようにして、RESTFUL WebサービスはXMLまたはJSONデータを返し、DAOとして機能し、ビジネスロジックレイヤーはその上で追加のロジックを実行できます。

于 2012-09-11T19:15:24.457 に答える