0

https://developers.google.com/web-toolkit/doc/latest/tutorial/RPCにある Google チュートリアル (これは非常に優れていると思います) を調べてきました 。

ローカル サーバーでサービスを稼働させており、JavaScript クライアントはそれを正常に呼び出すことができます。ここまではOK。さて、私がやりたいことは、リモート サーバーにサービスをデプロイすることです JoeSoapHost:8080
クライアントにリクエストの送信先を伝えるにはどうすればよいでしょうか? RPC 呼び出しで作成されているサーバー/URL が表示されません。それは魔法のように機能しますが、今はボンネットの下に入り、それを壊し始めたいと思っています.

[編集] これは、クライアントがサーバー上のどのサービスを呼び出すかを知るために使用するインターフェイスです。Web.xml Web 記述子には、これと一致する URL が必要であることを知っています。私のサーバーが正常に呼び出されるため、これがあります。問題は、サーバーを別の場所にデプロイすることにした場合、どのサーバー/ドメイン名を使用するかをクライアントにどのように伝えるかということです。

@RemoteServiceRelativePath("stockPrices")
public interface StockPriceService extends RemoteService 
{
    StockPrice[] getPrices(String[] symbols);
}

私が最初に達成したいことは、単純な GWT クライアントが RPC サービスを呼び出すことです。これは機能していますが、サーバーがlocalhostの場合のみです。次のステップでは、アプリを Google App Engine にデプロイします。アプリをhttp://stockwatcherjf.appspot.com/StockWatcher.htmlにデプロイするときに、JavaScript の RPC サービスが呼び出されないため、何を変更する必要がありますか ?

4

2 に答える 2

0

@RemoteServiceRelativePathGWT.getModuleBaseURL()(多かれ少なかれ*.nocache.jsスクリプトのURLである)を基準にしたサーブレットのパスを示します。「魔法で動く」だけではありません。

クライアントコードを提供しているサーバーとは異なるサーバーにサービスをデプロイすると、同一生成元ポリシーが適用される可能性があります。CORSはここで役立ちますが、IEとの互換性が失われます(IE9までが含まれます)。同じ起源からすべてを提供することに固執する方がよいでしょう。

于 2012-12-18T15:40:35.967 に答える
0

1)RPCに関するBrianSlesinskyの優れたドキュメント-https: //docs.google.com/document/d/1eG0YocsYYbNAtivkLtcaiEE5IOF5u4LUol8-LL0TIKU/edit#heading=h.amx1ddpv5q4m

2)@RemoteServiceRelativePath( "stockPrices")を使用すると、GWTコードでホスト/サーバー/ドメイン、つまりhttp // mydomain.com / gwtapp/stockPricesを基準にして決定できます。

3)2009年から2012年までのGOOGle IOセッションで、GWTRPCの使用法に関する詳細情報を検索できます。

于 2012-12-18T15:37:54.167 に答える