2016-10-10 4 views
0

私はCXF JAX-RSサービスとGWT MVP4Gプレゼンターを持っています。 私はRequestBuilderでサービスを呼び出し、Content-Typeヘッダーをapplication/jsonに設定します。GWT-APACHE CXFヘッダー

しかし、サーバー側のRESTメソッドでは呼び出しません。

RESTのコードは次のとおりです。

class PlayerService{ 
@POST 
@Path("addplayer") 
@Consumes({MediaType.APPLICATION_JSON}) 
@Produces({MediaType.APPLICATION_JSON}) 
String createOrSaveNewPLayerInfo(PlayerType playerType); 
} 

GWTコード:

RequestBuilder rq = new RequestBuilder(RequestBuilder.POST, url) 
rq.setHeader("Content-Type", "application/json"); 
rq.sendRequest(s, new RequestCallback() { 
@Override 
public void onResponseReceived(Request request, Response response) { 
LOGGER.info(">" + response.getStatusCode() + "<"); 
} 
@Override 
public void onError(Request request, Throwable exception) { 
LOGGER.info(">>" + exception.getMessage() + "<<"); 
} 
}); 
+0

404を取得したか、サーバー側で例外がありますか? –

+0

No。要求がサーバーに受信され、ビルダーを要求すると、このメッセージが表示されます。要求されたリソースに「Access-Control-Allow-Origin」ヘッダーがありません。したがって、 'http:// localhost:8080'はアクセスが許可されていません。応答はHTTPステータスコード415でした。 – user1576906

答えて

0

私はあなたのGWTアプリケーションは、桟橋サーバとTomcatサーバー上のサービス上で実行されていることを、前提としています。この場合、2つの異なるポートがあります:8080 & 8888。8080でサービスを呼び出すことは、同じ発信元ポリシーによってブロックされます。

この問題を解決するには、ポリシーを無効にする(CORSを探す)ことができます。悪いアイデア。

代わりにGWTアプリケーションをTomcat内で実行します。この場合、SOPに問題はありません。

GWTを使用して外部サーバを設定するには、hereを参照してください。

+0

CXFとGWTでembed Jettyを使用します.CXFを127.0.0.1:9000で実行し、GWT – user1576906

+0

を127.0.0.1:8888 – user1576906

+0

で実行します。両方のアプリケーションが同じポートを実行する必要があります。そうしないと、ブラウザの同じOrigin Policyが通信をブロックします。外部サーバーを使用する必要があります。 –