ヘッダーをスキップ

Oracle Application Server Web Services開発者ガイド
10g(10.1.3.1.0)

B31868-01
目次
目次
索引
索引

戻る 次へ

6 WSDLからのWebサービスのアセンブル

この章では、Web Service Description Language(WSDL)ファイルから始めてWebサービスをアセンブルする方法について説明します。この方法は、トップダウン方式でのWebサービスの生成とも呼ばれます。

トップダウン方式でのアセンブリの概要

トップダウン方式でのWebサービスのアセンブリでは、公開しようとするビジネス・プロセスがモデリングされている既存のWSDLファイルからサービスを生成します。

WebServiceAssemblerなどの開発ツールは、WSDLを使用してサービスのサービス・エンドポイント・インタフェースを生成します。この後で、Javaクラスなどのサポートされているアーキテクチャ用にそのサービスを実装できます。実装をコンパイルした後、サービスを生成し、アプリケーション・サーバーにデプロイします。

Webサービスをアセンブルするには、WebServiceAssemblerツール、およびJ2SE 1.4 SDKディストリビューションに含まれるjavacコンパイラなどのJavaプラットフォーム・ツールが必要です。

Webサービスをトップダウン方式で生成する場合の一般的な手順は次のとおりです。

  1. サービス・エンドポイント・インタフェースを生成します。

    この手順はWebServicesAssemblerが実行します。

  2. サービスを実装およびコンパイルします。

    この手順は開発者が実行します。

  3. サービスをアセンブルします。

    この手順はWebServicesAssemblerが実行します。これらの各手順の詳細は、「トップダウン方式でWebサービスをアセンブルする手順」を参照してください。

    関連項目

    Webサービスに割当て可能なメッセージ書式の詳細は、第5章「OracleAS Web Servicesメッセージ」を参照してください。 


    注意

    Webサービスをトップダウン方式でアセンブルする場合には、WebServicesAssemblerは、xsd:choiceまたはxsd:groupのXML型を含むWSDLを使用できません。これらのXML型を含むWSDLを使用する場合は、WebServicesAssemblerのdataBinding引数をfalseに設定し、WSDLファイルでのスキーマ定義にペイロードが準拠するようにSOAPElementをコーディングする必要があります。 


トップダウン方式でのWebサービスのアセンブル方法

この項の内容は、次のとおりです。

前提条件

WebServiceAssemblerを使用してWebサービスをトップダウン方式で生成する場合、指定する必要があるのはWSDLと出力ディレクトリのみです。

Webサービスの生成を開始する前に、次の各事項に注意してください。

トップダウン方式でWebサービスをアセンブルする手順

次の手順は、Webサービスをトップダウン方式でアセンブルする方法を例で示しています。このWebサービスはロギング機能を実現するものです。このロギング機能は、wsdl/LoggingFacility.wsdlにあるWSDLで定義されています。

  1. Webサービスの生成ベースとなるWSDLを、WebServiceAssemblerのgenInterfaceコマンドへの入力として指定します。

    コマンドライン:

    java -jar wsa.jar -genInterface 
                      -output build/src/service  
                      -wsdl wsdl/LoggingFacility.wsdl 
                      -unwrapParameters false 
                      -packageName oracle.demo.topdowndoclit.service 
                      -mappingFileName type-mapping.xml
    

    Antタスク:

    <oracle:genInterface wsdl="wsdl/LoggingFacility.wsdl" 
                  output= "build/src/service"   
                  packageName= "oracle.demo.topdowndoclit.service" 
                  mappingFileName="type-mapping.xml" 
                  dataBinding="true" 
                  unwrapParameters="false"
    />
    

    このコマンドラインおよびAntタスクの説明:

    • genInterface: 各ポート・タイプのサービス・エンドポイント・インタフェースと、WSDLに定義された複合型に対応するJava値タイプ・クラス(Bean)を作成します。また、XMLスキーマ型とJava値タイプ・クラス間のマッピングを記述するJAX-RPCマッピング・ファイルも作成されます。「genInterface」を参照してください。

    • output: 生成されるファイルを格納するディレクトリを指定します。そのディレクトリが存在しない場合は、作成します。「output」を参照してください。

    • wsdl: WSDLドキュメントの絶対ファイル・パス、相対ファイル・パスまたはURLを指定します。「wsdl」を参照してください。

    • unwrapParameters: falseに設定すると、生成対象のサービス・エンドポイント・インタフェースが、入力パラメータおよび戻り型をラップするラッパーとともに生成されます。「unwrapParameters」を参照してください。

    • packageName: JAX-RPCマッピング・ファイルにパッケージ名が宣言されていない場合に、生成されたクラス用に使用されるパッケージ名を指定します。「packageName」を参照してください。

    • mappingFileName: JAX-RPCマッピング・ファイルを指すファイル位置を指定します。「mappingFileName」を参照してください。

    • dataBinding: trueの場合、WebServicesAssemblerでは、スキーマ内の全要素に対して、JAX-RPCデフォルト・タイプ・マッピング規則に従うJava値タイプを生成しようとします。「dataBinding」を参照してください。

    少なくとも、WSDLの名前を指定します。genInterfaceの必須およびオプションの引数の詳細は、「genInterface」を参照してください。

    WSDLに指定されているポート・タイプごとにJavaインタフェースが生成され、複合タイプごとにJavaBeanが生成されます。生成されたインタフェースが格納されるディレクトリの名前は、outputおよびpackageName引数の値に基づいて付けられます。この例の場合、生成されたインタフェースはbuild/src/service/oracle/demo/topdowndoclit/serviceに格納されます。値タイプは指定された出力ディレクトリに格納されますが、パッケージ名は値タイプの名前空間またはJAX-RPCマッピング・ファイルtype-mapping.xml内の値に基づいて付けられます。

  2. 生成されたインタフェースおよびタイプ・クラスをコンパイルします。次に例を示します。

    javac build/src/service/*.java -destdir build/classes 
    
  3. Webサービスのサービス・エンドポイント実装を作成します。

    Javaサービス・エンドポイントには、生成されたJavaインタフェース内のすべてのメソッドと一致するメソッド・シグネチャが必要です。この例では、DocLitLoggerImpl.javaファイルにサービスを作成しているものとします。

  4. Javaサービス・エンドポイントをコンパイルします。

    たとえば、Implクラスが保存されているディレクトリと同じディレクトリでJavaサービス・エンドポイント・インタフェースのソースが生成された場合は、手順2と同じコマンドを使用できます。そうでない場合は、classpath引数の値を変更する必要があります。

  5. topDownAssembleコマンドを使用してWebServiceAssemblerツールを実行し、サービスをアセンブルします。この例において、doclit_topdownは、生成されたWebサービスのアプリケーション名です。次に例を示します。

    コマンドライン:

    java -jar wsa.jar -topDownAssemble 
                -appName doclit_topdown
                -wsdl ./wsdl/LoggingFacility.wsdl 
                -unwrapParameters false 
                -className oracle.demo.topdowndoclit.service.DocLitLoggerImpl 
                -input build/classes/service 
                -output build 
                -ear dist/doclit_topdown.ear 
                -mappingFileName type-mapping.xml 
                -packageName oracle.demo.topdowndoclit.service 
                -fetchWsdlImports true 
                -classpath ./build/classes/client 
    

    Antタスク:

    <oracle:topDownAssemble 
             appName="doclit_topdown"
             wsdl="./wsdl/LoggingFacility.wsdl"
             unwrapParameters="false"
             input="build/classes/service "
             output="build"
             ear="dist/doclit_topdown.ear"
             mappingFileName="type-mapping.xml"
             packageName="oracle.demo.topdowndoclit.service"
             fetchWsdlImports="true"
             >
                <oracle:portType
                   className="oracle.demo.topdowndoclit.service.DocLitLoggerImpl"/>
      </oracle:topDownAssemble>
    

    このコマンドおよびAntタスクの説明:

    • topDownAssemble: WSDL記述をベースにしたWebサービスで必要となるクラスとデプロイメント・ディスクリプタを作成します。これらのファイルは、EARファイル、WARファイル、ディレクトリのいずれにも格納できます。「topDownAssemble」を参照してください。

    • appName: アプリケーションの名前を指定します。この名前は、通常contexturiなどの他の引数のベース値として使用されます。「appName」を参照してください。

    • wsdl: WSDLドキュメントの絶対ファイル・パス、相対ファイル・パスまたはURLを指定します。「wsdl」を参照してください。

    • unwrapParameters: falseに設定すると、生成対象のサービス・エンドポイント・インタフェースが、入力パラメータおよび戻り型をラップするラッパーとともに生成されます。「unwrapParameters」を参照してください。

    • input: WEB-INF/classesにコピーされるクラスを格納するJARまたはディレクトリを指定します。この引数は、WebServicesAssemblerによって使用されるクラスパスに追加されます。「input」を参照してください。

    • output: 生成されるファイルを格納するディレクトリを指定します。そのディレクトリが存在しない場合は、作成します。「output」を参照してください。

    • ear: 生成されるEARファイルの名前と位置を指定します。「ear」を参照してください。

    • mappingFileName: JAX-RPCマッピング・ファイルを指すファイル位置を指定します。「mappingFileName」を参照してください。

    • packageName: JAX-RPCマッピング・ファイルにパッケージ名が宣言されていない場合に、生成されたクラス用に使用されるパッケージ名を指定します。「packageName」を参照してください。

    • fetchWsdlImports: WSDLとそれにインポートされるものすべてについてローカル・コピーを作成するかどうかを指定します。「fetchWsdlImports」を参照してください。

    少なくとも、WSDL名、サービスを実装するクラス名、出力ディレクトリ名を指定します。EARファイルおよびEAR内のWARファイルが出力されます。WARファイルには、サービスのアーチファクト、実装クラス、Webデプロイメント・ディスクリプタ(web.xml)およびJAX-RPCデプロイメント・ディスクリプタ(webservices.xml)が含まれています。topDownAssembleの必須およびオプションの引数の詳細は、「topDownAssemble」を参照してください。

  6. サービスをデプロイします。

    通常の方法でEARファイルをOC4Jの実行中インスタンスにデプロイします。EARファイルのデプロイの詳細は、『Oracle Containers for J2EEデプロイメント・ガイド』を参照してください。次は、デプロイメント・コマンドのサンプルです。

    java -jar <oc4jHome>/j2ee/home/admin_client.jar deployer:oc4j:localhost:port <user> 
    <password> 
                -deploy 
                -file dist/doclit_topdown.ear 
                -deploymentName doclit_topdown 
                -bindWebApp default-web-site
    

    次のリストは、このコード例のパラメータの説明です。

    • <oc4j_Home>: OC4Jインストールが含まれているディレクトリ。

    • <user>: OC4Jのインスタンスのユーザー名。ユーザー名はインストール時に割り当てられます。

    • <password>: OC4Jのインスタンス用のパスワード。パスワードはインストール時に割り当てられます。

    • doclit_topdown: アプリケーションの名前。

    • default-web-site: アプリケーションのバインド先のWebサイト。通常、これはdefault-web-siteになります。Webサイトを構成するには、<oc4j_home>/j2ee/home/configserver.xmlファイルを参照してください。

  7. 必要に応じて、デプロイメントが成功したかどうかを確認します。OracleAS Web Servicesでは、デプロイされたWebサービスごとにWebサービス・テスト・ページが提供されます。Webサービス・テスト・ページへのアクセスおよびその使用方法の詳細は、「Webサービス・テスト・ページの使用方法」を参照してください。

  8. クライアント・コードを生成します。

    • J2SE環境の場合、genProxyコマンドを使用してWebServicesAssemblerツールを実行し、J2SE Webサービス・クライアントのスタブ(クライアント・プロキシ)を生成します。J2SE Webサービスのクライアント側コードの生成およびアセンブルの詳細は、第15章「J2SE Webサービス・クライアントのアセンブル」を参照してください。

    • J2EE環境の場合、genInterfaceコマンドを使用してWebServicesAssemblerツールを実行し、J2EE Webサービス・クライアント用のJAX-RPCマッピング・ファイルおよびサービス・エンドポイント・インタフェースを生成します。J2EE Webサービスのクライアント側コードの生成およびアセンブルの詳細は、第14章「J2EE Webサービス・クライアントのアセンブル」を参照してください。

    たとえば、次のコマンドは、J2SEクライアント用に使用可能なクライアント・プロキシ(スタブ)をアセンブルします。この例において、doclit_topdownは、生成されたWebサービスのアプリケーション名です。

    コマンドライン:

    java -jar wsa.jar -genProxy 
                    -wsdl http://localhost:8888/doclit_topdown/doclit_topdown?WSDL
                    -unwrapParameters false  
                    -output build/src/client 
                    -packageName oracle.demo.topdowndoclit.stubs 
                    -mappingFileName type-mapping.xml
    

    Antタスク:

    <oracle:genProxy
        wsdl="http://localhost:8888/doclit_topdown/doclit_topdown?WSDL"
        unwrapParameters="false"
        output="build/src/client"
        packageName="oracle.demo.topdowndoclit.stubs"
        mappingFileName="type-mapping.xml"
    />
    

    このコマンドおよびAntタスクの説明:

    • genProxy: J2SE Webサービス・クライアントから使用可能な静的プロキシ・スタブを作成します。「genProxy」を参照してください。

    • wsdl: WSDLドキュメントの絶対ファイル・パス、相対ファイル・パスまたはURLを指定します。「wsdl」を参照してください。

    • unwrapParameters: falseに設定すると、生成対象のサービス・エンドポイント・インタフェースが、入力パラメータおよび戻り型をラップするラッパーとともに生成されます。「unwrapParameters」を参照してください。

    • output: 生成されるファイルを格納するディレクトリを指定します。そのディレクトリが存在しない場合は、作成します。「output」を参照してください。

    • packageName: JAX-RPCマッピング・ファイルにパッケージ名が宣言されていない場合に、生成されたクラス用に使用されるパッケージ名を指定します。「packageName」を参照してください。

    • mappingFileName: JAX-RPCマッピング・ファイルを指すファイル位置を指定します。「mappingFileName」を参照してください。

    少なくとも、WSDL名および出力ディレクトリ名を指定します。WebServiceAssemblerツールにより、スタブが生成されます。クライアント・アプリケーションはこのスタブを使用して、リモート・サービスでの操作を起動します。genProxyの必須およびオプションの引数の詳細は、「genProxy」を参照してください。

  9. クライアントをコンパイルおよび実行します。

    クライアントをコンパイルする前に、クラスパス上にある適切なJARをリストします。クライアントのクラスパスで使用可能なすべてのJARファイルのリストについては、表A-2「クライアント・サイド・プロキシを使用するクライアントのクラスパス・コンポーネント」を参照してください。個々のJARをリストするかわりに、クライアントのクラスパスにクライアント側のJARとしてwsclient_extended.jarを含めることができます。このJARファイルには、Webサービス・クライアントをコンパイルおよび実行するために必要なすべてのクラスが含まれます。これらのクラスは、表A-2にリストされている各JARファイルに含まれているものです。wsclient_extended.jarおよびクライアントのクラスパスの詳細は、「Webサービス・プロキシのクラスパスの設定」を参照してください。

制限事項

「WSDLからのWebサービスのアセンブル」を参照してください。

追加情報

詳細は、次を参照してください。


戻る 次へ
Oracle
Copyright © 2006 Oracle Corporation.

All Rights Reserved.
目次
目次
索引
索引