axis2 1.3 バージョンの TOMCAT 6.0.18 で axis2 サービスを実行しています。
transfer-encoding 要素をコメント化してチャンクを無効にし、以下に示すように HTTP を 1.0 に変更しました。
<transportSender name="http"
class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
<parameter name="PROTOCOL">HTTP/1.0</parameter>
<!-- <parameter name="Transfer-Encoding">chunked</parameter> -->
また、サービス実装クラスに LifeCycle インターフェイスを実装しました。
init()
メソッドコードは次のとおりです。
public void init(ServiceContext arg0) throws AxisFault {
// TODO Auto-generated method stub
arg0.getConfigurationContext().setProperty(HTTPConstants.HEADER_TRANSFER_ENCODING_CHUNKED,Boolean.FALSE);
arg0.getConfigurationContext().setProperty(HTTPConstants.HTTP_PROTOCOL_VERSION, HTTPConstants.HEADER_PROTOCOL_10);
MessageContext responseMessageContext =
MessageContext.getCurrentMessageContext().getOperationContext().getMessageContext(
WSDLConstants.MESSAGE_LABEL_OUT_VALUE);
responseMessageContext.setProperty(HTTPConstants.HEADER_TRANSFER_ENCODING_CHUNKED,Boolean.FALSE);
responseMessageContext.setProperty(HTTPConstants.HTTP_PROTOCOL_VERSION, HTTPConstants.HEADER_PROTOCOL_10);
これらの変更にもかかわらず、サービスを呼び出したときに HTTP 応答ヘッダーに content-length が表示されません。何か案は?