アプリケーションサーバー構成から圧縮を有効にすることができます。あなたの質問から、グラスフィッシュまたはトムキャットを使用している可能性が最も高いです(私はトムキャット派です)。グラスフィッシュの場合、以下を追加することで圧縮を有効にすることができます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 サービスハンドラーからより適切に実行されます。