WebSphere で WS-Security

どっぷりハマってしまったんで, さっさとダンプして忘れてしまおう.
環境は Rational Application Developer v6.0(以下, RAD) と Websphere Application Server v6.0(以下, WAS).


とりあえず, 記憶が残ってるうちに書き殴ったレベルなので, 後で修正する予定.

サーバ側を実装

  1. POJO な Web Service を実装*1
  2. オプションで Interface を定義
  3. Servlet を定義していない war 作成
  4. 上記実装クラス*2と web モジュールを含む ear 作成
  5. Rational Application Developer(以下 RAD) にインポート
  6. "ファイル" -> "新規" -> "その他" で web service wizard を起動
  7. Java Bean?? を指定して, 上記の実装クラスを指定*3
  8. 既存の Service Endpoint Interface を指定する場合は上記の Interface を指定
  9. セキュリティの指定なしの部分を 署名とか暗号化とか好きなやつに変更
  10. web モジュールの指定を上記の web モジュールに設定して終了??
  11. 待つ
  12. しばらく待つ
  13. 一服する
  14. なんか色々と出力される. web サービスのサーバーに wsdl ファイルとか見えてれば成功*4
  15. ハンドラーの設定とかしちゃったり

で, クライアント側.

  1. web サービスのサービス名からメニューを表示してクライアント作成*5
  2. セキュリティの指定をサーバーの設定と同様にして, WS-Security を有効にする
  3. 面倒なんで, 上記の J2EE プロジェクトを指定
  4. 少々, 待つ.
  5. クライアント用に色々と出力される
  6. ibm-webservicesclient-bnd.xmi の中にセキュリティ関連の設定ができていれば成功
  7. こんなのが出力されてるはず
    1. wsdl/XXXXXXXXX.wsdl
    2. 各種 sutb
    3. application-client.xml
    4. and more....
  8. で, まとめて J2EE プロジェクトを ear で export

次は WAS の設定

  1. 管理コンソールを起動
  2. 上記まで上手くいってればデポロイされてるはず
  3. グローバルセキュリティの項を表示
  4. "グローバルセキュリティを有効にする" を設定
  5. "Java セキュリティを有効にする" は無効にする
  6. コンソールユーザを設定する??
    1. 停止時にユーザとパスワードが必要になる
  7. 変更を保存する
  8. サーバーを停止する
  9. RAD から起動できなくてボヤく
  10. 適当にコンソールから起動

最後にクライアントを実行

WAS に付属の launchClient(.bat) を利用して, 上記のクライアントを含む ear を実行する

参考リンク

ほとんど, 下記の tutorial の通り.

「J2EE&Webサービス:JavaBeansをSOAPで転送せよ!」

*1:RemoteException を throw する事

*2:jar に含めた

*3:クライアントの作成は後回し

*4:失敗したら, プロジェクトごと削除して, ear のインポートからやった方が良さげ.

*5:今回は クライアント・アプリケーションを選択