注意:この機能は、早期採用者製品 (Early Adopter Product; EAP) リリース ステータスに提供されます。機能の最終版については、今後リリースする予定です。詳細については、
Micro Focus SupportLine までお問い合わせください。
CICS Web サービス機能は、開発およびテストでの使用を目的とした早期採用者製品 (Early Adopter Product; EAP) です。本製品リリースでは、この機能は製品のディプロイ用には推奨されません。
制限事項:本トピックは Windows 環境にのみ該当します。
このチュートリアルでは、トップダウン メソッドを使用して、生成された CICS アプリケーションに 1 つ以上の文字列を SOAP 要求の形で送信する Web サービス プロバイダーを作成します。このアプリケーションは、各文字列を読み込んで反転し、その反転した文字列を SOAP 応答メッセージとして Web サービスに返送します。
トップダウン メソッドを使用するには、アクセス先となる CICS アプリケーションを記述する WSDL ファイルが必要です。Enterprise Developer プロジェクトを作成するためにこのチュートリアルで使用するプロジェクト テンプレートには、この目的のための reverse.wsdl ファイルが含まれています。
前提条件
このチュートリアルの「Reverse Web サービス プロバイダーのテスト」を実行するために、SOAPui Eclipse プラグイン (sourceforge.net から入手可能) をダウンロードしてインストールすることをお奨めします。
このチュートリアルでは、Enterprise Developer プロジェクトが [Build Automatically] に設定されていることを前提としています。設定されていない場合は、メイン メニューで [Project > Build Automatically] をクリックして、この機能をオンにしてください。
Reverse プロジェクトの作成
CICSWebServicesTemplate テンプレート プロジェクトを使用して、CICS Web サービス プロバイダー用のプロジェクトを作成します。
- CICSWebServicesTemplate_Eclipse.zip ファイルを一時ディレクトリに展開します。このファイルは、デフォルトでは %PUBLIC%\Documents\Micro Focus\Enterprise Developer\Samples\Mainframe\CICS\Classic\CWS ディレクトリにあります。
- Eclipse で、COBOL エクスプローラーを起動します。
- Enterprise Developer のメイン メニューで、[File > New > Mainframe COBOL Project] をクリックします。
注:[
Mainframe COBOL Project] が表示されない場合:
- [Other] を選択します。
- [Micro Focus COBOL] を展開します。
- [Mainframe COBOL Project] を選択し、[Next] をクリックします。
- [Project name] フィールドに「Reverse」と入力します。
- [Browse for template] をオンにします。
- [Location] フィールドに対応する [Browse] ボタンをクリックし、CICSWebServicesTemplate_Eclipse.zip ファイルを展開した場所をブラウズします。
- CICSWebServicesTemplate テンプレート フォルダーを選択し、[OK] をクリックします。
- [Use default location] をオンにして、[Finish] をクリックします。
COBOL エクスプローラーに Reverse プロジェクトが表示されます。このプロジェクトは、現在の Eclipse ワークスペースの Reverse サブディレクトリに作成され、自動的にビルドされます。
CICS Web サービス プロバイダー コンポーネントの生成
CICS Web サービスの新規作成ウィザードを使用して、Web サービス プロバイダーのコンポーネントを生成します。
- COBOL エクスプローラーで、[Reverse] プロジェクトをクリックして選択します。
- [File > New > CICS Web Service] をクリックします。[New CICS Web Service Wizard] が起動します。
注:[
CICS Web Service] が表示されない場合:
- [Other] を選択します。
- [Micro Focus Service Interface] を展開します。
- [CICS Web Service] をクリックし、[Next] をクリックします。
- [Service type] ドロップダウン リストから [CICS Web Service Provider (Top-Down)] を選択し、[Next] をクリックします。
[Project] フィールドに [Reverse] というプロジェクト名が表示されます。
- [Service definition] フィールドに対応する [Browse] ボタンをクリックし、wsdl プロジェクト フォルダー内にある reverse.wsdl ファイルをブラウズします。
- reverse.wsdl をダブルクリックします。これにより、[Service definition] フィールドに値が入力されます。
- [Server name] フィールドにreverseと入力します。これは生成される COBOL スケルトン プログラムのプログラム名です。
要求または応答の受信時に適切な Web サービスを識別して見つけるために Enterprise Server で使用する URI を提供する必要があります。この情報は [Service location] フィールドに格納されます。
- [Service location] フィールドに/cwsDemo/reverseMeと入力します。
[Request file prefix] フィールドおよび [Response file prefix] フィールドには自動的に値が入力されます。これらは、生成されるスケルトン プログラム ファイルをサポートする生成コピーブックの名前で、1 つは要求データ構造用であり、もう 1 つは応答データ構造用です。
[Program interface] フィールドでは、スケルトン プログラムで COMMAREA インターフェイスと CHANNEL インターフェイスのどちらを生成するかを指定できます。このチュートリアルでは、CHANNEL インターフェイスを生成します。
- [Program interface] ドロップダウン リストから、[CHANNEL] を選択します。これにより、[Container name] フィールドがアクティブになります。
デフォルトのコンテナー名は DFHWS-DATA です。これは、CICS Web サービスのサービス プロバイダー アプリケーションで使用される最上位のコンテナーです。
- [完了] をクリックします。
Enterprise Developer により、次の CICS Web サービス コンポーネントが生成されます。
- COBOL Programs\reverse.cbl
- スケルトン CICS プログラム。
- Copybooks\REQ01.cpy
- 入力としての SOAP 要求を送信するために必要な COBOL データ構造を含むコピーブック。
- Copybooks\RESP01.cpy
- 出力としての SOAP 応答メッセージを受信するために必要な COBOL データ構造を含むコピーブック。
- loadlib\reverse.wsbind
- SOAP 要求を REQ01.cpy 内のデータ構造にマッピングし、RESP01.cpy 内のデータ構造を SOAP 応答メッセージにマッピングするバインド ファイル。
サービスの実装
生成されたスケルトン プログラム reverse.cbl には、CHANNEL インターフェイスを使用するすべての CICS Web サービスに共通する次のような基本的な機能が含まれています。
- DFHWS-OPERATION コンテナーの内容を取得して、操作名を確認します。
- 返された操作名がプログラム (この場合は reverserequest) で予期される名前と一致する場合、プログラムは次の処理を行います。
- DFHWS-DATA コンテナーの内容を要求データ構造 (REQ01.cpy 内) に入力します。
- 応答データ構造 (RESP01.cpy 内) の内容を DFHWS-DATA コンテナーに入力します。
必要な操作ロジックを用意するには、プログラムを編集して、手動でコーディングする必要があります。
- COBOL エクスプローラーで、reverse.cbl をダブルクリックして COBOL エディターで開きます。
- 作業場所節で次の 2 つの変数を宣言します。
01 ws-string-len pic x(4) comp-5.
01 ws-reversedString-len pic x(4) comp-5.
- プログラムの一番下までスクロールし、次の COPY 文を最後のexit program. 文の後に追加します。
copy 'revLogic.cpy'.
- WS-OP-1 段落まで上にスクロールし、次の PERFORM 文を EXEC CICS GET 文と EXEC CICS PUT 文の間に追加します。
Perform reverse-logic
注:reverse.cbl 内には、2 つの EXEC CICS 文の間に 2 つのコメント行があります。このコメント行の間に PERFORM 文を配置できます。
- [File > Save] をクリックします。
- COBOL エディターを閉じます。
Eclipse により、変更内容が含まれるようにプロジェクトが自動的にビルドされます。
エンタープライズ サーバー リージョンの作成
Enterprise Server を使用して、Web サービスが実行されるエンタープライズ サーバー リージョンを作成します。
- Enterprise Developer で、サーバー エクスプローラーをアクティブにします。
注:サーバー エクスプローラーが表示されていない場合は、[
Window > Show View > Other > Micro Focus > Server Explorer] をクリックします。
- [Local [localhost:86]] を右クリックして、[New > Enterprise Server] をクリックします。
- [Name] フィールドにCWSPROVと入力します。これは新しいエンタープライズ サーバー リージョンの名前です。
- [Template] フィールドに対応する [Browse] ボタンをクリックし、ESTemplates プロジェクト フォルダー内にある CICSWebServicesTemplate.xml ファイルに移動します。
- CICSWebServicesTemplate.xml をダブルクリックします。これにより、[Template] フィールドに値が入力されます。
- [Associate with projects] の横にあるリストで、[Reverse] をオンにします。
- [完了] をクリックします。
サーバー エクスプローラーで、[Local [localhost:86]] の下に CWSPROV エンタープライズ サーバー リージョンが表示されます。
注:[
CWSPROV] が表示されない場合は、[
Local [localhost:86]] を展開します。
CWSPROV リソースの構成
すべての Enterprise Server リージョンでは、実行するアプリケーションのタイプに応じて、特定のリソースにアクセスできる必要があります。リージョンのスタートアップ リストで定義されているリソースは、リージョンが実行されている間に利用できるよう、スタートアップ ルーチン中に読み込まれます。
CICS Web サービスでは、標準の Enterprise Server CICS Web インターフェイス (CWI) および CICS Web Services (CWS) サポートで提供される基本リソースを使用します。ただし、CWSPROV リージョンを作成するために使用する CICSWebServicesTemplate にはスタートアップ リスト上のこれらのリソースが含まれていないため、リソースを手動で追加する必要があります。CWI リソースは DFHWEB という名前のリソース グループ内にあります。CWS リソースは DFHPIPE グループ内にあります。
また、Reverse プログラムに必要なリソースを含むリソース グループを作成し、その新しいグループをスタートアップ リストに追加する必要もあります。
- Enterprise Server を起動します。
-
- サーバー エクスプローラーで [Local [localhost:86]] を右クリックし、[Open Administration Page] を選択します。Enterprise Server Administration が起動します。
注:サーバーを初めて起動した場合は、サインオン ダイアログ ボックスが表示されます。[Store Credentials] がオンになっている場合は、オフにしてから、[OK] をクリックします。[Store Credentials] をオフにすると、次回のリージョンの起動から、このダイアログ ボックスが表示されなくなります。Secure Storage のプロンプトが表示された場合は、[
No] をクリックします。
ホーム ページのリストに CWSPROV エンタープライズ サーバー リージョンが表示されます。
- サーバー エクスプローラーに戻り、[CWSPROV] を右クリックし、[Start] を選択します。
リージョンの起動時、Enterprise Server Administration ホーム ページのリージョンの [Status Log] 列にログ情報が表示されます。リージョンが完全に起動されると、リージョンの [Status] 列に示されます。
- ESMAC の起動
-
- CWSPROV の起動後、Administration ホーム ページで、CWSPROV リージョンの [Status] 列にある [Details] ボタンをクリックします。
- [Server > Control] ページで、[ES Monitor & Control] をクリックします。スタートアップ リストを編集できる ESMAC ユーティリティが起動します。
- DEMOSTRT スタートアップ リストを開く
-
- ESMAC メニューで、[Resources] の下にあるドロップダウン リストをクリックし、[by Group] を選択します。
- [Startup] をクリックします。[CICS Startup Lists] のリストが右ペインに表示されます。
CWSPROV リージョンでは、DEMOSTRT というデフォルトのスタートアップ リストを使用します。
- [DEMOSTRT] に対応する [Details] ボタンをクリックします。これにより、CICS STARTUP - DEMOSTRT ページが表示されます。
- リソース グループの追加
- ここでは、2 つの新しいリソース グループの名前をスタートアップ リストに追加しますが、この時点では、これらのグループおよびその各リソースは作成も定義もされていません。この作業は、このチュートリアルの後続のセクションで行います。
- CICS STARTUP - DEMOSTRT ページで、リストの末尾まで下にスクロールし、一番下にある空のフィールドにDFHWEBと入力して、[Apply] をクリックします。DFHWEB グループが追加され、別の空のフィールドがリストの末尾に追加されます。
- 新しい空のフィールドに、DFHPIPEと入力して、[Apply] をクリックします。
- 新しい空のフィールドに、MYCWSPRVと入力して、[Apply] をクリックします。
- MYCWSPRV リソース グループの作成
-
- ESMAC メニューで、[Resources] の下にある [Groups] ボタンをクリックします。
- CICS Resource Groups ページで、[New] をクリックします。
- [Name] フィールドにMYCWSPRVと入力します。
- [Description] フィールドに CICS Web Services Provider Resourcesと入力して、[Add] をクリックします。グループのリソースを作成および定義できる CICS Group MYCWSPRV ページが表示されます。
- リソースの作成
- Reverse プログラムには、TCP/IP サービス用のリソース、およびパイプラインをサポートするためのリソースが必要です。
- CICS Group MYCWSPRV ページで、[TCPIPSv] をクリックします。
- 次のフィールドに入力します。
[Name] |
CWSTCPIP |
[Description] |
My TCP/IP Service |
[Port No] |
5482 |
- [追加] をクリックします。Enterprise Server が [Add successful] を返します。
- [Apply] をクリックします。Enterprise Server が [Update successful] を返します。
- [Group List] をクリックして、CICS Group MYCWSPRV ページに戻ります。
- [Pipeline] をクリックします。
- 次のフィールドに入力します。
[Name] |
PROVPIPE |
|
[Description] |
My CICS Provider Pipeline |
|
[Resp Wait] |
DEFT |
アプリケーションがサービスからの応答を待機する秒数です。DEFT はデフォルト値を示し、HTTP の場合は 10 秒、MQ の場合は 60 秒です。 |
[Config file] |
$IDE_XML_LOC\basicsoap11provider.xml |
CWSPROV の IDE_XML_LOC 環境変数は、xml プロジェクト フォルダーを指します。1 |
[WebSvc Dir] |
$IDE_LOADLIB\ |
IDE_LOADLIB 環境変数は、loadlib プロジェクト フォルダーを指します。2 |
1 CWSPROV に対して定義された環境変数のリストを表示するには、Administration ホーム ページで、CWSPROV リージョンに対応する [Edit] ボタンをクリックします。リストは、[Server > Properties > General] ページの [Configuration Information] フィールドに表示されます。
2 IDE_LOADLIB 環境変数は、Enterprise Developer サーバー エクスプローラーからエンタープライズ サーバー リージョンを起動すると自動的に設定されます。
|
- [追加] をクリックします。Enterprise Server が [Add successful] を返します。
- [Apply] をクリックします。Enterprise Server が [Update successful] を返します。
- [Home] をクリックして、Administration ホーム ページに戻ります。
リージョンを停止して起動することで、新しいリソースをインストールできます。
- Enterprise Developer サーバー エクスプローラーで、[CWSPROV] を右クリックし、[Restart] を選択します。これにより、CWSPROV エンタープライズ サーバー リージョンが停止してから起動され、スタートアップ リストに新しく追加したリソースが自動的にインストールされて読み込まれます。
リソースの確認
CWSPROV の起動後、定義したリソースがインストールされてアクティブになっていることを確認します。
- ESMAC を起動します。
- ESMAC メニューで、[Resources] の下にあるドロップダウン リストから [Active] を選択します。
- ESMAC メニューで、[WebSvc] ボタンをクリックします。[Reverse] Web サービスが [ENABLED] としてマークされてリストに表示されます。
- [Reverse] Web サービスに対応する [Details] ボタンをクリックします。
[WSBIND] および [Endpoint] の値に注目してください。これらの値は、Web サービスを作成した際に入力した情報から取得されます。
- ESMAC メニューで、[Pipeline] をクリックします。次に、[PROVPIPE] に対応する [Details] ボタンをクリックします。パイプライン リソースは、応答の待機期間を設定し、SOAP 構成ファイルおよび Web サービス ディレクトリを識別します。
- ESMAC メニューで、[URIMAP] をクリックします。次に、[PIPELINE] および [/cwsDemo/reverseMe] に対応する [Details] ボタンをクリックします。
Enterprise Server によって、要求の処理に必要な情報を CICS に提供するための URIMAP が生成されます。生成される各 URIMAP の名前はポンド記号 (£) で始まります。
プロバイダー CICS Web サービスを実行するには、要求をエンタープライズ サーバー リージョンにルーティングするエンドポイント URL に SOAP 要求を送信します。エンドポイント URL には URI 値が含まれています。着信要求は、[Path] 値がエンドポイント URL の [URI] 値と一致するマップを識別するために、インストールされている URIMAP を読み取ります。正しい URIMAP が識別されると、CICS は、[Web Service] の名前および関連する [Pipeline] など、URIMAP で定義されているデータを使用して、要求を処理します。
Reverse Web サービス プロバイダーのテスト
すべてのリソースがアクティブな状態で Web サービス プロバイダーが実行されたので、Web サービスを実行するための SOAP 要求を送信できます。これは、SOAPui Eclipse プラグインなどの SOAP リクエスター ツールを使用して実行できます。
- 次を含む SOAP 要求を作成します。
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:cws="http://tempuri.org/reverse">
<soapenv:Header/>
<soapenv:Body>
<cws:reverseRequest>
<cws:InputStrings>
<cws:myString>dlroW olleH</cws:myString>
<cws:myString>esaelP eM esreveR</cws:myString>
</cws:InputStrings>
</cws:reverseRequest>
</soapenv:Body>
</soapenv:Envelope>
- SOAP 要求を次のエンドポイント URL に送信します。
http://localhost:5482/cwsDemo/reverseMe
次の SOAP 応答が返されます。
<SOAP-ENV:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:cws="http://tempuri.org/reverse" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<reverseResponse xmlns="http://tempuri.org/reverse">
<OutputStrings>
<reversedString>Hello World</reversedString>
<reversedString>Reverse Me Please</reversedString>
</OutputStrings>
</reverseResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>