Eclipse + WTPを使って、WEBサービスの開発をプロトしてみました。プリミティブオブジェクト以外の型についても、正しくWSDLとプロキシクライアントが作成され、使い物になるものが生成されることが確認できました。 WEBサービス開発の流れは
といった感じになります。 Webプロジェクトの作成 †動的Webプロジェクト プロジェクト名 : WebServicesSamplesWeb Content Directory: war Source Deirectory: source EARプロジェクト プロジェクト名 : WebServicesSamplesEAR 公開したいJavaBeans?の作成 †例として
を持つ nu.mine.kino.services.HelloWorld? クラスを作成し、これをWEBサービスとして公開したいと思います。
JavaBeans?からWEBサービスの作成 †WSDLの作成 †次にWTPを使って、JavaBeans?からWSDLなどなどを作成していきます。パッケージエクスプローラからHelloWorld?を選択して右クリックし Create Web services を選択します。そうすると下のようなダイアログが表示されます。 このダイアログで Web Service Type: Bottom up Java Bean Web Service Generate a proxy にチェック Install Web Service client on server は外す など選択して、次へ進みます。ちなみに一般的に Bottom up Java Bean Web Service: JavaBeansからWSDL作成 Top down Java Bean Web Service: WSDLからJavaBeans作成 という意味だそうです。 次画面ではBeansを選択する画面です。このままHelloWorld?を選択して、次へ進みます 次は公開するWEBサービスをどのWebプロジェクトにDeployするか、またクライアントプロキシをどのプロジェクトに配置するかを指定します。Client Project typeは Java Utility Project にしておきます。 次に公開するメソッドを選択します。下のように選択し、次に進みます。 ここまできて、ようやくWEBプロジェクトにWSDLファイルが作成されます。J次の画面で、JBossをスタートしますかと聞いてくるので、サーバをスタートさせます。自動的にEARプロジェクトがデプロイされ、WEBサービスが公開された状態になります*1。 プロキシクライアントの作成 †あとは次へ次へと進んでいけばさっき指定したJavaProject?にプロキシクライアントが配置され、全て完了です。 最終的に上のようなディレクトリ構造になります。 実行してみる。 †いま、WEBサービスが公開されている状態なので、実際にテストクラスを作って稼動確認してみます。プロキシが置かれたプロジェクト内で以下のMainクラスを作成します。 import java.rmi.RemoteException; import javax.xml.rpc.ServiceException; import nu.mine.kino.services.HelloWorld; import nu.mine.kino.services.HelloWorldServiceLocator; import nu.mine.kino.services.Model; public class Main { public static void main(String[] args) { try { HelloWorld helloWorld = new HelloWorldServiceLocator() .getHelloWorld(); System.out.println(helloWorld.sayHello()); String[] hellos = helloWorld.sayHellos(); for (int i = 0; i < hellos.length; i++) { System.out.println(hellos[i]); } Model model = helloWorld.getModel(); System.out.println(model.getName()); } catch (ServiceException e) { e.printStackTrace(); } catch (RemoteException e) { e.printStackTrace(); } } } 実行結果は以下のようになります。 2006/04/25 17:36:29 org.apache.axis.utils.JavaUtils isAttachmentSupported 警告: 要求されたクラス(javax.activation.DataHandler と javax.mail.internet. MimeMultipart)が見つかりません。Attachmentサポートが利用できません。 / [en]-(Unable to find required classes (javax.activation.DataHandler and javax.mail.internet.MimeMultipart). Attachment support is disabled.) Hello Hello World. hello world. なまえ なんか警告が出てますが、Stringも配列もJavaBeans?も正しく稼動していることが確認できました!! deploy/undeployをするためのantのbuild.xml †さて、ここまでで既存のJavaBeans?をWEBサービスとして公開するところまでができました。あとは公開したWEBサービスを、デプロイしたりアンデプロイするantのbuildスクリプトを作成しておこうと思います。
TIPS集 †TCPモニタを使う †Apache Axisにはサーバとの通信をキャプチャするTCPモニタが同梱されています。Eclipseから、メインクラス名:org.apache.axis.utils.tcpmon で起動できます。 つかいかたですが、今までは クライアント(接続先:8080) -> (ポート:8080)サーバ という接続でしたが、あいだにこのツールをかますためにはクライアントの接続先ポート番号を例えば クライアント(接続先:8081) -> (ポート:8081)tcpmon(接続先:8080) -> (ポート:8080)サーバ と変更する必要があります。つまりクライアントのプロクシが接続しに行くサーバのポート番号を変更する必要があるのですが、それは HelloWorldServiceLocator#setHelloWorldEndpointAddress ("http://localhost:8081/WebServicesSamplesWeb/services/HelloWorldService") というエンドポイントを変更するメソッドで行うことができます。 参考:
この記事は
現在のアクセス:66004 |