7

カスタム HTTP ヘッダーを Axis 1.4 Web サーバーに追加しようとしています。

BasicHandler を拡張するハンドラーを作成しました。

public class HttpHeaderHandler extends BasicHandler {

  .
  .
  .

  @Override
  public void invoke(org.apache.axis.MessageContext arg0) throws AxisFault {  
    LOG.trace("invoke called");     
    Hashtable ht = (Hashtable)ctx.getProperty(HTTPConstants.RESPONSE_HEADERS);
    if(ht == null) {
      ht = new Hashtable();
    }
    ht.put("custom-header", "Hello");
    ctx.setProperty(HTTPConstants.RESPONSE_HEADERS, ht);     
  }

  .
  .
  .

}

server-config.wsdd に以下を追加しました。

    .
    .
    .

<transport name="http">
    <requestFlow>
        <handler type="URLMapper" />
        <handler type="java:org.apache.axis.handlers.http.HTTPAuthHandler" />
    </requestFlow>
    <responseFlow>
        <handler type="java:com.my.package.HttpHeaderHandler" />
    </responseFlow>
</transport>

    .
    .
    .

ログがログ ファイルに表示されているため、invoke メソッドが呼び出されていることがわかりますが、カスタム ヘッダーは応答に追加されていません。

任意の提案をいただければ幸いです。

4

4 に答える 4

1

生成されたスタブ ファイルを使用して HTTP ユーザーとパスワードを追加したことを覚えています。このリンクを確認して、次のコードを見つけます。

_call.setProperty(org.apache.axis.client.Call.SEND_TYPE_ATTR, Boolean.FALSE);  

http://www.coderanch.com/t/225102/Web-Services/java/Axis-username-password-auth-stubs

そのような修正は機能します。

于 2013-09-19T08:48:56.690 に答える