0

Netbeans 7.1.2 で Web サービス クライアント ウィザードを使用しましたが、いずれかのメソッドを呼び出そうとすると、次のエラーが表示されます。

javax.xml.ws.soap.SOAPFaultException: 例外: 圧縮が有効になっていません。この Web サービスは、クライアントが GZIP をサポートすることを期待しています。圧縮のデフレート

生成されたスケルトン ファイルは多数あり、圧縮を有効にする方法がわかりません。誰でもアドバイスできますか?

どうもありがとう

4

2 に答える 2

-1

アプリケーションサーバー構成から圧縮を有効にすることができます。あなたの質問から、グラスフィッシュまたはトムキャットを使用している可能性が最も高いです(私はトムキャット派です)。グラスフィッシュの場合、以下を追加することで圧縮を有効にすることができますdomain.xml

         <property name="compression" value="on"/>

または、管理コンソールからサーバーを管理している場合は、このビジュアル ガイドを使用してください。tomcat の追加

         compression="on" 

構成ファイルのtomcat<Connector/>要素に追加します。server.xml

圧縮された JAX-WS リクエストを実際に送信するには、HTTP ペイロードに圧縮ヘッダーを追加して、圧縮されたリクエストを送信する意図を示すだけです。

    Map<String, List<String> theHeaders = new HashMap<String, List<String>>();
theHeaders.put("Content-Encoding", Collections.singletonList("gzip"));//this indicates you're sending a compressed request
theHeaders.put("Accept-Encoding", Collections.singletonList("gzip")); //this says you're willing to accept a compressed response
Map<String, Object> reqContext = ((bindingProvider) proxy)
        .getRequestContext(); //get access to the request context of your webservice request
requestContext.put(MessageContext.HTTP_REQUEST_HEADERS, httpHeaders);

上記のロジックは、設計の問題として、 Web サービスハンドラーからより適切に実行されます。

于 2012-11-21T04:31:32.637 に答える