Java WSDP1.3
インストール(Windows2000):J2SDK1.4.xが必須
途中でTomcatを一緒に入れるかどうか聞いてくる(たぶん)。
Yesにすると、TomcatのAdminユーザ名とパスワードを何にするか聞いてくるので、適当に入れる。ただし憶えておくこと!
最後に
の中身をコピーする。
スタートメニュー>Java(TM) Web Services Developer pack 1.3>start tomcatで Tomcatを起動し、http://localhost:8080/に
「Java TM Web Services Developer Pack 1.3」の文字と目無し鼻でか人形が現れれば,
OKっぽい感じがしますね。
このページの中段くらいに「Web Apprication Manager」というリンクがあるのでつつく。と、ベーシック認証のダイアログが出てくるので、さっき入れたTomcatのAdminユーザ名とパスワードを入力する。
と、Manager画面が出てきて、いかにもDeployとかできそうですね(やれよ)。
以上、こちらを参考にさせていただきました。
Java WSDP1.3チュートリアル
チュートリアルのダウンロード
サンプルコードはここからダウンロード。zipファイルになっているので解凍。
ここでは、解凍したあとのフォルダ jwstutorial13 を、C:\jwsdp-1.3\docs にコピーすることにします。
以降、「Chapter 3: Getting Started With Tomcat」に書いてあるとおりにやってみます。
チュートリアルのサンプルを動作させるための設定
- AntにPATHを通す
まだAntが入っていなければ、 C:\jwsdp-1.3\apache-ant\bin にPATHを通す
- Buildファイルの設定
C:\jwsdp-1.3\conf\tomcat-users.xmlに、TomcatのAdminユーザ名とパスワードを設定。(インストール時に設定していれば不要)
C:\jwsdp-1.3\docs\jwstutorial13\examples\common\build.propertiesに、以下のプロパティを設定。
username=(TomcatのAdminユーザ名)
password=(TomcatのAdminパスワード)
tutorial.home=C:/jwsdp-1.3/docs
(その他のプロパティはデフォルト)
とりあえずサンプルを動かす(動作確認)
JAX-RPCでWebServiceを動かす HelloService
まあ
cd C:\jwsdp-1.3\docs\jwstutorial13\examples\jaxrpc\helloservice
ant build
ant deploy
で動いちゃうんですが...
それでは味気ないので、チュートリアルを見て手動でやってみようと思います。
以下は、チュートリアルを読んで必要そうだと思った手順で、やってみたわけではありません。
まずはサービスのエンドポイントインターフェイスをコーディング。
HelloIF.java
package helloservice; import java.rmi.Remote; import java.rmi.RemoteException; public interface HelloIF extends Remote { public String sayHello(String s) throws RemoteException; }
続いて実装クラスをコーディング。
HelloImpl.java
package helloservice; public class HelloImpl implements HelloIF { public String message ="Hello"; public String sayHello(String s) { return message + s; } }
そしたらコンパイル。javacでもeclipseでも。
クラスファイルは
C:\jwsdp-1.3\docs\jwstutorial13\examples\jaxrpc\helloservice\build以下におく。
つづいて、C:\jwsdp-1.3\docs\jwstutorial13\examples\jaxrpc\helloservice\config-interface.xml を編集。
<?xml version="1.0" encoding="UTF-8"?> <configuration xmlns="http://java.sun.com/xml/ns/jax-rpc/ri/config"> <service name="MyHelloService" targetNamespace="urn:Foo" typeNamespace="urn:Foo" packageName="helloservice"> <interface name="helloservice.HelloIF"/> </service> </configuration>
wscompileを実行。コマンドプロンプトで
cd C:\jwsdp-1.3\docs\jwstutorial13\examples\jaxrpc\helloservice
C:\jwsdp-1.3\jaxrpc\bin\wscompile -define -d build -nd build -classpath build config-interface.xml -model build/model.gz
jaxrpc-ri.xmlファイルを編集。
<?xml version="1.0" encoding="UTF-8"?> <webServices xmlns="http://java.sun.com/xml/ns/jax-rpc/ri/dd" version="1.0" targetNamespaceBase="urn:Foo" typeNamespaceBase="urn:Foo" urlPatternBase="/ws"> <endpoint name="MyHello" displayName="HelloWorld Service" description="A simple web service" interface="helloservice.HelloIF" model="/WEB-INF/model.gz" implementation="hello.HelloImpl"/> <endpointMapping endpointName="MyHello" urlPattern="/hello"/> </webServices>
web.xmlを編集。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/j2ee/dtds/web-app_2_3.dtd"> <web-app> <display-name>Hello World Application <description>A web application containing a simple JAX-RPC endpoint <session-config> <session-timeout>60 </session-config> </web-app>
以下の構成でdist/hello-jaxrpc-portable.warファイルを作成。(zip圧縮して拡張子変えるなり、antを使用するなりして)
WEB-INF/classes/hello/HelloIF.class
WEB-INF/classes/hello/HelloImpl.class
WEB-INF/jaxrpc-ri.xml
WEB-INF/model.gz
WEB-INF/web.xml
デプロイ可能なwarファイルを作成
コマンドプロンプトで
C:\jwsdp-1.3\jaxrpc\bin\wsdeploy -o dist/hello-jaxrpc.war dist/hello-jaxrpc-portable.war
これで、MyHelloService.wsdlを含んだ dist/hello-jaxrpc.war が作成される。
このwarファイルを C:\jwsdp-1.3\webapps に配置すればOK。
ブラウザで http://localhost:8080/hello-jaxrpc/hello にアクセスすれば、WebServiceの情報が表示される。
JAX-RPCでHelloServiceのクライアントを動かす
これも
cd C:\jwsdp-1.3\docs\jwstutorial13\examples\jaxrpc\staticstub
ant build
ant run
で動いちゃうんですが...
antを使わずにやるとすると
ソースは
HelloClient.java
package staticstub; import javax.xml.rpc.Stub; public class HelloClient { private String endpointAddress; public static void main(String[] args) { System.out.println("Endpoint address = " + args[0]); try { Stub stub = createProxy(); stub._setProperty (javax.xml.rpc.Stub.ENDPOINT_ADDRESS_PROPERTY, args[0]); HelloIF hello = (HelloIF)stub; System.out.println(hello.sayHello("Duke!")); } catch (Exception ex) { ex.printStackTrace(); } } private static Stub createProxy() { // Note: MyHelloService_Impl is implementation-specific. return (Stub) (new MyHelloService_Impl().getHelloIFPort()); } }
<?xml version="1.0" encoding="UTF-8"?> <configuration xmlns="http://java.sun.com/xml/ns/jax-rpc/ri/config"> <wsdl location="http://localhost:8080/hello-jaxrpc/hello?WSDL" packageName="staticstub"/> </configuration>
スタブの生成
コマンドプロンプトで
cd C:\jwsdp-1.3\docs\jwstutorial13\examples\jaxrpc\staticstub
C:\jwsdp-1.3\jaxrpc\bin\wscompile -gen:client -d build -classpath build config-wsdl.xml
こんなところでしょうか。
なんかぐちゃぐちゃになってしまいました。あとで実証して、書き直そうと思います。明日、tutorialの中身をもうちょっとちゃんと読みます。