2

これまでのところ、サーバー側の要求に GWT RPC 呼び出しを使用していますが、これは非常に優れています。コードをサーブレットと GWT クライアント側に分離することを計画しています。私はRPC呼び出しを使用しているため、不可能のようです。このようにしたい理由は、アプリにホワイトラベルオプションを提供することを計画しているためです。したがって、コードをクライアント コードとサーブレットに分離できれば、ホワイト ラベルのクライアント コードをパートナーに提供して、パートナーのサーバーでホストすることができます。GWT RequestBuilder で確認しましたが、正常Access-Control Allow-Origin : Origin from Client Headerに動作します。

ただし、RequestBuilder リクエストとサーブレット レスポンスに gwt-serialization を実装する必要があります。これどうやってするの ..?

私が作りたいシナリオ:

  1. RequestBuilder は Serializable String (IsSerialiazibleオブジェクト) を Servlet に送信します。

  2. サーブレットは文字列を Java オブジェクトにデシリアライズし、処理して、'IsSeraliazable' オブジェクトの文字列応答を返します。

  3. GWT RequestBuilder で受信した応答文字列は、Java オブジェクト (コンパイル後の JS) に逆シリアル化されます。

リクエストとレスポンスのシリアライズとデシリアライズに関する情報があると思われる RemoteServiceServlet クラスを確認しました。しかし、RequestBuilder で動作させることができませんでした。どんなアイデアでも、それが誰にとっても役立つことを願っています.

    public final void processPost(HttpServletRequest request,HttpServletResponse response) 
    throws IOException, ServletException,SerializationException 
    {
        // Read the request fully.
        //
        String requestPayload = readContent(request);

        // Let subclasses see the serialized request.
        //
        onBeforeRequestDeserialized(requestPayload);

        // Invoke the core dispatching logic, which returns the serialized
        // result.
        //
        String responsePayload = processCall(requestPayload);

        // Let subclasses see the serialized response.
        //
        onAfterResponseSerialized(responsePayload);

        // Write the response.
        //
        writeResponse(request, response, responsePayload);
    }
4

2 に答える 2

1

GWTRPCとRequestBuilderは異なる目的を果たします。それらを組み合わせたり、組み合わせたりすることはできません。

GWTRPC-データをフェッチするサービス

GWTリクエストビルダー-js、css、jsonオブジェクト、SOAPサービスのクエリなどの静的リソースに対するリクエストを起動します

リクエストを処理するための私の頭の中で唯一の実行可能な解決策は、JSONを使用することです-https ://developers.google.com/web-toolkit/doc/latest/tutorial/JSON

サーブレットのコードをそのままにして、RequestBuilderを使用してこれらのサーブレットにマップされたURLにJSONオブジェクトを問い合わせることができます。JSNIまたはオーバーレイの概念を使用してJSONオブジェクトを処理します。

于 2012-12-03T11:13:31.063 に答える