Java WSDP1.3

ダウンロードはこちらから

インストール(Windows2000):J2SDK1.4.xが必須
途中でTomcatを一緒に入れるかどうか聞いてくる(たぶん)。
Yesにすると、TomcatのAdminユーザ名とパスワードを何にするか聞いてくるので、適当に入れる。ただし憶えておくこと!
最後に\jre\lib\endorsedにC:\jwsdp-1.3\jaxp\lib\endorsed
の中身をコピーする。

スタートメニュー>Java(TM) Web Services Developer pack 1.3>start tomcatTomcatを起動し、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
(その他のプロパティはデフォルト)

とりあえずサンプルを動かす(動作確認)

コマンドプロンプト

cd C:\jwsdp-1.3\docs\jwstutorial13\examples\gs
ant build

コンパイルエラーが出なければOK。

スタートメニュー>Java(TM) Web Services Developer pack 1.3>start tomcatTomcat起動。

コマンドプロンプト

cd C:\jwsdp-1.3\docs\jwstutorial13\examples\gs
ant install

なんか文字化けしてますけど (゜ε゜)キニシナイ!!

ブラウザで
http://localhost:8080/gs/

おお! なんかうごいてる...

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());
    }
}

config-wsdl.xmlの編集

<?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

HelloClient.javaコンパイル&実行

こんなところでしょうか。

なんかぐちゃぐちゃになってしまいました。あとで実証して、書き直そうと思います。明日、tutorialの中身をもうちょっとちゃんと読みます。