まず、実験用のWebサービスを作って公開する(その1)

JavaC++C#などを接続するために、S2Axisを使ってWebサービスで連携をしてみたいと思います。これから書く内容は、試行錯誤の途中経過なので、間違いも沢山含まれていると思います。一通り試せたら、まとめも書こうと思ってます。

とりあえず、今回クライアント側として主に実験をするのは、WTLで作るプログラムです。Webサービスの部分は、ATL Serverに含まれるものが使われているようです。また、適宜C#でも実験をしてみようと思います。特にエラーが出たときは比較対照として。

Webサービスの開発手順を確認

異なる言語間をつなぐ場合は、WSDLを基本にする方がいいみたいです。今までにも少し実験したことがあったのですが、Javaコーディング→dicon記述修正でサービス公開とすると、思ったようなWSDLが生成されませんでした。(そのとき問題になったのは、Operationのinputとoutputで別々の名前空間が割り当てられたこと)

そんなわけで、手順は以下のようにしたいと思います。

  1. Javaでインターフェース作成
  2. Java2WSDLでWSDL作成
  3. WSDL確認・修正
  4. WSDL2JavaでJavaの雛形作成
  5. 雛形から必要なファイルだけを利用する
バッチ処理で楽をする

私は、作業がし易いように、以下の様なバッチファイルを作り、Java2WSDLとWSDL2Javaを使いやすくしています。

AxisEnv.cmd

@REM Axisツール用環境設定
@REM SET JAVA_HOME=C:\j2sdk1.4.2_08
@REM SET PATH=%JAVA_HOME%;%PATH%
SET AXISLIB=D:\axis-1_2_1\lib
SET CLASSPATH=%AXISLIB%\axis.jar;%AXISLIB%\axis-ant.jar;%AXISLIB%\commons-discovery-0.2.jar;%AXISLIB%\commons-logging-1.0.4.jar;%AXISLIB%\jaxrpc.jar;%AXISLIB%\log4j-1.2.8.jar;%AXISLIB%\saaj.jar;%AXISLIB%\wsdl4j-1.5.1.jar;%AXISLIB%\activation.jar;%AXISLIB%\mail.jar;%AXISLIB%;.

Java2WSDL.cmd

@ECHO OFF
call AxisEnv.cmd
java -classpath %CLASSPATH% org.apache.axis.wsdl.Java2WSDL %1 %2 %3 %4 %5 %6 %7 %8 %9

WSDL2Java.cmd

@ECHO OFF
call AxisEnv.cmd
java -classpath %CLASSPATH% org.apache.axis.wsdl.WSDL2Java %1 %2 %3 %4 %5 %6 %7 %8 %9

JavaからWSDLを以下のコマンドで作成する

Java2WSDL --location <サービスのURL> --style WRAPPED --use LITERAL <クラス名>

WSDLが出来たら、以下のコマンドでJavaソースを生成する。

WSDL2Java --server-side 

S2Axisを使う場合、生成されたソースが全て必要にはならない。不要なファイルは、以下の通り。

  • XxxService
  • XxxServiceLocator
  • XxxServiceSoapBindingStub

…長くなってきたので、続きはまた今度。