Axis 編
普通にアクセスしようとすると以下のエラーが出る。
Exception in thread "main" AxisFault
 faultCode: {http://xml.apache.org/axis/}HTTP
 faultSubcode: 
 faultString: (401)Unauthorized
 faultActor: 
 faultNode: 
 faultDetail: 
    {}:リターンコード:  401
NTLM 認証対応と全く同じ方法でBasic 認証, Digest 認証ともに対応できた。
ちなみに Basic 認証の場合のみ、commons-httpclient のエンジンを使わなくてもいいようだ。
Axis 2 編
普通にアクセスしようとすると以下のエラーが出る。
Exception in thread "main" org.apache.axis2.AxisFault: Transport error: 401 Error: Unauthorized
Axis2 の場合、認証方式を HttpTransportProperties.Authenticator の中から指定する必要がある。
以下のサンプルでは Basic 認証のみ設定している。
JAX-WS 編
JAX-WS で作成した Web サービスクライアントは、実行時に WSDL を見に行っている。
(正直これは不要だと思う。スタブを生成した時点でいらなくなるはずだし)
認証が WSDL の URL にもかかっている場合には以下のエラーが出る。
まず WSDL の URL にアクセスしに行き、
失敗すると ?wsdl パラメータをつけて再度アクセスを試みているようだ。
Exception in thread "main" com.sun.xml.internal.ws.wsdl.parser.InaccessibleWSDLException: 2 counts of InaccessibleWSDLException.

java.io.IOException: Server returned HTTP response code: 401 for URL: http://localhost:8080/WS/ZaneliWS.wsdl
java.io.IOException: Server returned HTTP response code: 401 for URL: http://localhost:8080/WS/ZaneliWS.wsdl?wsdl
認証が WSDL にはかかっておらず、Webサービスエンドポイントにかかっている場合には以下のエラーが出る。
Exception in thread "main" com.sun.xml.internal.ws.client.ClientTransportException: The server sent HTTP status code 401: Unauthorized
対応方法は2通りある。
[WebService][JAX-WS] ベーシック認証が設定されているWebサービスへのアクセス方法
などを参考に以下のように設定してみたが、
これでは WSDL に認証がかかっていない Basic 認証のみに対応できているようだった。
WSDL にも認証がかかっている場合やエンドポイントのみであっても Digest 認証の場合では、
stackoverflowのこの記事 などを参考に以下のようにして、成功を確認した。

Copyright© 2011-2021 Shunsuke Otani All Right Reserved .