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 のエンジンを使わなくてもいいようだ。
…ためには色々面倒な実装が必要なのかと調べてみれば、実はそうでもなかった、というお話。
NTLM 認証の設定
IIS マネージャでファイルもしくはディレクトリのプロパティを開き、
[ディレクトリセキュリティ(ファイルセキュリティ)] -> 認証とアクセス制御の[編集] ->
[匿名アクセスを有効にする]のチェックを外し、[総合 Windows 認証]にチェックを入れる。
この状態でブラウザからアクセスするとユーザ名、パスワードを入力させる認証ダイアログが表示される。
ライブラリのダウンロード
Java1.6 からは JAX-WS リファレンス実装が rt.jar に含まれたため、JRE だけで使用可能。
最新バージョンを使用したい場合はJAX-WSサイトからダウンロードできる。
Java 1.6.0_29 でバージョンを確認したところ、
System.out.println(com.sun.xml.internal.ws.util.RuntimeVersion.VERSION);
「JAX-WS RI 2.1.6 in JDK 6」だった。
本日時点でダウンロードできる最新は2.2.5。
ライブラリのダウンロード
Apache Axis2 サイトから axis2-1.6.1-bin をダウンロードする。
スタブを使用して Web サービス実行
ダウンロードしたライブラリには bin/wsdl2java.bat, bin/wsdl2java.sh が同梱されているため、
java コマンドを直接叩く必要がない。
uri のみ指定するとデータバインディングクラスを全てサブクラスに持つ1クラスが巨大な Stub が作成されるので、
u オプションをつけてバインディングクラスを別に生成したほうがいい。
接続先には前回のエントリで作成したものを使用する。
wsdl2java.bat -uri http://localhost:49175/WS/ZaneliWS.asmx?WSDL -u
Web サービスを用意する(ASP.NET)
今回は Java のライブラリである Apache Axis を利用してクライアントを作成するため、
せっかくなので繋ぎ先は Java 以外で。
Visual Studio 2010 で[新しいプロジェクト] -> [ASP.NET Web アプリケーション]を作成し、
ソリューション エクスプローラーで適当なディレクトリを作成し右クリック -> [追加] -> [新しい項目] -> [Web サービス]を選択。
文字列と数値を受け取って文字列を返すWebサービスを作成。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;

namespace WebServices.WS
{
 [WebService(Namespace = "http://www.zaneli.com/")]
 [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
 [System.ComponentModel.ToolboxItem(false)]
 public class ZaneliWS : System.Web.Services.WebService
 {
  [WebMethod(Description="テスト用Webサービスオペレーション")]
  public string GetMessage(String text, int num)
  {
   return "text=" + text + ", num=" + num;
  }
 }
}

Copyright© 2011-2021 Shunsuke Otani All Right Reserved .