ページの先頭行へ戻る
Interstage Studio V12.0.0 ユーザーズガイド
FUJITSU Software

5.2.3 開発手順

以下に、実際にアプリケーションを開発する手順を説明します。

1) Webサービス用のプロジェクトの作成

2) Webサービスの作成

3) EARプロジェクトの作成

4) WSDL取得の準備

5) Webサービスクライアントの作成

6) アプリケーションの動作確認

7) 運用環境へのアプリケーションの配布

1) Webサービスプロジェクト作成

メニューバーから[ファイル] > [新規] > [プロジェクト]を選択すると、[新規プロジェクト]ウィザードが表示されます。

[新規プロジェクト]ウィザードから[Web] > [動的 Web プロジェクト]を選択して、[次へ]をクリックします。

以下の設定項目を確認、入力してください。以下の情報を設定後、[次へ]をクリックします。

設定項目

設定内容

プロジェクト名

WebServiceSample7

ターゲット・ランタイム

Interstage Application Server V12.0 (Java EE 7)

動的 Web モジュールバージョン

3.1

構成

Interstage Application Server V12.0 (Java EE 7) デフォルト構成

EARにプロジェクトを追加

チェックしない

Javaページが表示されますので、情報を確認後、[次へ]をクリックします。

設定項目

設定内容

ビルド・パス上のソース・フォルダー

src

デフォルト出力フォルダー

build\classes

[Webモジュール]ページが表示されます。

以下の設定項目を確認、入力してください。以下の情報を設定後、[完了]をクリックします。

設定項目

設定内容

コンテキスト・ルート

WebServiceSample7

コンテンツ・ディレクトリー

WebContent

web.xmlデプロイメント記述子の生成

チェックする

2) Webサービスの作成

2-1) データクラスの作成

国名と総人口の情報を保持し、そこから情報を取得するデータクラスを作成します。データクラスの作成は、作成したプロジェクトを選択して、右クリックでコンテキストメニューから[新規] > [クラス]を選択します。[新規Javaクラス]ウィザードが表示されます。

以下の設定項目を確認、入力してください。以下の情報を設定後、[完了]をクリックします。

設定項目

設定内容

ソース・フォルダー

WebServiceSample7/src

パッケージ

sample7.webservice

名前

CountryData

スーパークラスからのコンストラクター

チェックする

以下のソースファイルが生成されます。

ソースファイル

説明

CountryData.java

データクラス

国名と総人口を保持する処理を実装します。以下のの箇所をソースに追加してください。

データクラスの実装(CountryData.java)

package sample7.webservice;

public class CountryData {

    private String countryName;
    private int totalPopulation;

    public CountryData() {
        // TODO 自動生成されたコンストラクタスタブ
    }

    public CountryData(String name, int total) {
        setCountryName(name);
        setTotalPopulation(total);
    }
    
    public String getCountryName() {
        return countryName;
    }
    
    public void setCountryName(String countryName) {
        this.countryName = countryName;
    }
    
    public int getTotalPopulation() {
        return totalPopulation;
    }
    
    public void setTotalPopulation(int totalPopulation) {
        this.totalPopulation = totalPopulation;
    }

}

ポイント

フィールドを追加した後にクラスを選択している状態で、メニューから[ソース] > [getter および setter の生成]を選択することで、getter/setterの追加を行うことができます。

2-2) Webサービスのひな形作成

WebサービスはJavaクラスの作成から行います。 作成したプロジェクトを選択して、右クリックでコンテキストメニューから[新規] > [クラス]を選択します。特別なJavaクラスを作成する必要はなく、ソースフォルダ、パッケージ、名前を指定してクラスを作成します。

以下の設定項目を確認、入力してください。以下の情報を設定後、[完了]をクリックします。

設定項目

設定内容

ソース・フォルダー

WebServiceSample7/src

パッケージ

sample7.webservice

名前

PopulationRanking

スーパークラスからのコンストラクター

チェックしない

2-3) WebServiceアノテーション宣言

作成したJavaクラスにWebServiceアノテーションを以下のように定義します。の部分がWebServiceアノテーションの定義になります。

WebServiceアノテーションの定義

package sample7.webservice;

import javax.jws.WebService;

@WebService
public class PopulationRanking {
}

2-4) Webサービスの実装

Webサービスとして公開したい機能のメソッドを実装します。以下のの箇所をソースに追加してください。

Webサービスとして公開するメソッドの実装

package sample7.webservice;

import javax.jws.WebService;

@WebService
public class PopulationRanking {

    private CountryData[] countries;

    public PopulationRanking(){
        countries = new CountryData[]{
             new CountryData("中国",1373490000),
             new CountryData("インド",1292710000),
             new CountryData("アメリカ",321600000),
             new CountryData("インドネシア",255460000),
             new CountryData("ブラジル",204460000),
             new CountryData("パキスタン",189870000),
             new CountryData("ナイジェリア",178720000),
             new CountryData("バングラデシュ",159860000),
             new CountryData("ロシア",143460000),
             new CountryData("日本",126980000)
        };
    }

    public CountryData getCountryData(int rank){

        --rank;
        if (9 < rank || rank < 0 ){
            return null;
        }

        return countries[rank];
    }
}

3) EARプロジェクトの作成

メニューバーから[ファイル] > [新規] > [プロジェクト]を選択すると、[新規プロジェクト]ウィザードが表示されます。

新規プロジェクトウィザードから[Java EE] > [エンタープライズ・アプリケーション・プロジェクト]を選択して、[次へ]をクリックします。

以下の設定項目を確認、入力してください。情報を設定後、[次へ]をクリックします。

設定項目

設定内容

プロジェクト名

WebServiceEARSample7

ターゲット・ランタイム

Interstage Application Server V12.0 (Java EE 7)

EARバージョン

7.0

構成

Interstage Application Server V12.0 (Java EE 7) デフォルト構成

[エンタープライズ・アプリケーション]ページが表示されます。

以下の設定項目を確認、入力後、[完了]をクリックします。

設定項目

設定内容

Java EE モジュール依存関係

WebServiceSample7をチェックする

コンテンツ・ディレクトリー

EarContent

application.xmlデプロイメント記述子の生成

チェックしない

4) WSDL取得の準備

4-1) EARプロジェクトとサーバの関連付け

サーバビューでサーバを選択し、コンテキストメニューから[追加および除去]を選択します。

使用可能から作成したEARプロジェクトを選択し、[追加]をクリックします。構成済みにEARプロジェクトが追加されていることを確認してください。

以下の情報を設定後、[完了]をクリックします。

設定項目

設定内容

構成済み

WebServiceEARSample7

4-2) サーバ配備

サーバビューでサーバを選択し、コンテキストメニューから[開始]を選択します。

サーバが始動すると自動的にEARファイルが配備されます。

サーバビューで以下の情報を確認してください。

確認項目

確認内容

サーバの状態

始動済み

サーバの状況

同期済み

EARファイル(WebServiceEARSample7)の状況

同期済み

EARファイル配下のWARファイル(WebServiceSample7)の状況

同期済み

4-3) WSDLのURLの確認

WSDLのURLの確認にはInterstage Java EE 7管理コンソールを使用します。

サーバビューでサーバを選択し、コンテキストメニューから[管理コンソール]を選択して、Interstage Java EE 7管理コンソールを起動します。

Interstage Java EE 7管理コンソールの使用方法については、Interstage Java EE 7管理コンソールのヘルプを参照してください。

管理コンソールの左側にあるツリーから、[アプリケーション] > [WebServiceEARSample7]をクリックします。次に右の画面に表示される[エンドポイントの表示]をクリックします。

表示されたWSDLのURLを確認してください。このURLをクライアント作成時に利用します。

WSDLのURL

http://localhost/WebServiceSample7/PopulationRankingService?wsdl

5) Webサービスクライアントの作成

本来であればWebアプリケーションをクライアントとして作成するための手順が必要ですが、ここではサンプルをインポートしてWebサービスクライアントとして重要なポイントを確認していきます。Webアプリケーションの作成についての詳細な手順を知りたい場合は、Webアプリケーションの"5.2 入門"を参照してください。

サンプルのインポートは次の手順で行います。
メニューから[ファイル] > [インポート]を選択します。表示されたインポートウィザードで[一般] > [既存プロジェクトをワークスペースへ]を選択します。[アーカイブ・ファイルの選択]をチェックし、[参照]ボタンを押して、以下のファイルを選択します。

<ワークベンチのインストールフォルダ>\sample\WebServiceSample7.zip

[プロジェクト]から[WebServiceClientSample7]を選択し、[完了]をクリックします。
WebServiceClientSample7プロジェクトのインポート後に、WebServiceEARSample7プロジェクトを選択して、右クリックでコンテキストメニューから[プロパティー]を選択します。

プロパティダイアログボックスの[デプロイメント・アセンブリー]を選択し、[追加]ボタンを押します。

[プロジェクト]を選択して[次へ]をクリックし、WebServiceClientSample7を選択して[完了]をクリックします。

5-1) クライアントプロジェクト作成

Webサービスクライアントとして動的Webプロジェクトを作成します。サンプルのインポートで代替済みのため、詳細は省略します。設定項目は以下を参考にしてください。

設定項目

設定内容

プロジェクト名

WebServiceClientSample7

ターゲット・ランタイム

Interstage Application Server V12.0 (Java EE 7)

動的 Web モジュールバージョン

3.1

構成

Interstage Application Server V12.0 (Java EE 7) デフォルト構成

EARにプロジェクトを追加

チェックする

EARプロジェクト名

WebServiceEARSample7

5-2) WSDLからサービスエンドポイントインタフェースの作成

WSDLからWebサービスを呼び出すために必要なサービスエンドポイントインタフェースなどのファイルを作成する必要があります。インポートしたサンプルプロジェクトでは以下のように作成済みです。

ファイル名リストにある以下のファイルがソースフォルダ配下に作成されていることを確認してください。

ファイル名

備考

PopulationRanking.java

サービスエンドポイントインタフェース

PopulationRankingService.java

サービスインタフェース

CountryData.java

データ定義クラス

GetCountryData.java

データバインディングクラス

GetCountryDataResponse.java

データバインディングクラス

ObjectFactory.java

オブジェクト生成クラス

package-info.java

パッケージ情報クラス

ポイント

サービスエンドポイントインタフェースの作成手順

ijwsimportコマンドを使用してWSDLからサービスエンドポイントインタフェースを生成します。

  1. コマンドプロンプトを開き、作業フォルダを作成します。
    例:mkdir temp

  2. 作業フォルダに移動します。
    例:cd temp

  3. ソース出力先フォルダを作成します。
    例:mkdir src

  4. ijwsimportコマンドを使用して、作業フォルダにWebサービスクライアントに必要なソースを生成します。
    ijwsimport -p <パッケージ名> -s <ソース出力先フォルダ> -keep <WSDLのURL>
    例: ijwsimport -p stub -s src -keep http://localhost/WebServiceSample7/PopulationRankingService?wsdl

  5. Webサービスクライアントプロジェクトのソースフォルダ配下に、4.の<ソース出力先フォルダ>のソースファイルをパッケージフォルダごとコピーします。WSDLファイルは不要です。

  6. Webサービスクライアントプロジェクトを選択して、[F5]キーを押します。

  7. 作業フォルダを削除します。

上記5.および6.で追加したソースファイルでエラーが検出される場合には、引き続いて以下の手順でビルドパスの設定を行ってください。

  1. Webサービスクライアントプロジェクトを選択して、右クリックでコンテキストメニューから[プロパティー]を選択します。

  2. [Javaのビルド・パス] > [ライブラリー]タブ > [外部JARの追加]で以下に存在するJARファイルを追加します。
    <製品インストールフォルダ>\APS\F3FMisje7\glassfish\modules\endorsed
    <製品インストールフォルダ>\APS\F3FMisje7\glassfish\lib\endorsed

  3. 続けて[順序およびエクスポート]タブで、2.で追加したJARファイルを[JRE システム・ライブラリー]よりも上に移動して[OK]ボタンを押してください。

ijwsimportコマンドやWSDLのURLについては、"Interstage Application Server Java EE 7 設計・構築・運用ガイド"の"Webサービスアプリケーションの開発"の"配備とWSDLの取得・保管"を参照してください。

5-3) サーブレットクラスの作成

サーブレットクラスを作成します。インポートしたサンプルプロジェクトでは以下のような設定項目で作成済みです。

設定項目

設定内容

Java パッケージ

sample7.webservice

クラス名

ServletController

スーパークラス

javax.servlet.http.HttpServlet

設定項目

設定内容

名前

ServletController

URL マッピング

/ServletController

設定項目

設定内容

修飾子

public

どのメソッド・スタブを作成しますか?

スーパークラスからのコンストラクター
継承された抽象メソッド
doPost(doGetのチェックを外す)

5-4) 入出力画面の作成

入出力画面のJSPを作成します。インポートしたサンプルプロジェクトでは以下のようなファイルを作成済みです。

入力画面(default.jsp)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>世界総人口ランキング</title>
</head>
<body>
<h1>入力画面</h1>
<p>1~10の間で順位を入力してください。</p>
<p></p>
<form action="ServletController" method="post">
    順位:<br>
    <input name="rank" type="text" size="10">位<br>
    <p></p>
    <input type="submit" value="OK">
    <input type="reset" value="クリア">
</form>

</body>
</html>

出力画面(result.jsp)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>世界総人口ランキング</title>
</head>
<body>
<h1>出力画面</h1>
総人口ランキング${param.rank}位は「${applicationScope.ranking.countryName}」です。<br>
総人口は${applicationScope.ranking.totalPopulation}人です。
<br>
<hr>
<form action="ServletController" method="post">
    <input type="submit" value="入り口に戻る">
    <input type="hidden" name="mode" value="top">
</form>

</body>
</html>

エラー画面(error.jsp)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>世界総人口ランキング</title>
</head>
<body>
<h1>エラー画面</h1>
指定された範囲内の順位が入力されていないか、またはサーバエラーです。<br>
<br>
<hr>
<form action="ServletController" method="post">
    <input type="submit" value="入り口に戻る">
    <input type="hidden" name="mode" value="top">
</form>

</body>
</html>

5-5) Dependency Injectionの指定

Webサービスを呼び出すための実装をサーブレットクラスに行います。インポートしたサンプルプロジェクトのサーブレットソースには実装済みです。
サービスインタフェースのフィールドを作成して、以下のようにWebServiceRefアノテーションを設定し、Dependency Injectionの指定を行います。

WebServiceRefアノテーションの定義

@WebServiceRef(name="service/PopulationRanking")
private PopulationRankingService service;

ポイント

J2EE1.4までのlookupメソッドの代わりに、Java EEではDependency Injectionを利用することで、オブジェクトを取得して使用することができます。(オブジェクトは実行時に自動的にJava EEコンテナによってフィールドに設定されます。)

5-6) Webサービスの呼び出し処理の実装

Webサービスの呼び出しは、以下のようにサービスエンドポイントインタフェースにオブジェクトを取得し、インタフェース経由でメソッドを呼び出します。作成したサーブレットクラスに以下のようにWebサービスの呼び出し処理を定義します。インポートしたサンプルプロジェクトのサーブレットソースには実装済みです。

Webサービスの呼び出しメソッドの定義

PopulationRanking business = service.getPopulationRankingPort();
CountryData country = business.getCountryData(rank);

Webサービスの呼出しの実装を行ったサーブレットクラスは以下のようになります。(インポートしたプロジェクトのサーブレットソースは、この形式になっています。)

の部分が実際には追加、変更する箇所になります。

サーブレットクラス(ServletController.java)

package sample7.webservice;

import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.xml.ws.WebServiceRef;

import stub.CountryData;
import stub.PopulationRanking;
import stub.PopulationRankingService;

/**
 * Servlet implementation class ServletController
 */
@WebServlet("/ServletController")
public class ServletController extends HttpServlet {
    private static final long serialVersionUID = 1L;

    @WebServiceRef(name="service/PopulationRanking")
    private PopulationRankingService service;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public ServletController() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        request.setCharacterEncoding("UTF-8");
        ServletContext sc = getServletContext();

        // 呼び出すファイル種別取得
        String mode = request.getParameter("mode");
        if (mode != null && mode.equals("top")) {
            // 入力画面のHTMLファイル呼出し
            RequestDispatcher inRd = getServletContext().getRequestDispatcher("/default.jsp");
            inRd.forward(request, response);
            return;
        }

        int rank;

        // 入力チェック
        try{
            rank = Integer.parseInt(request.getParameter("rank"));
        } catch (NumberFormatException e){
            RequestDispatcher errRd = sc.getRequestDispatcher("/error.jsp");
            errRd.forward(request, response);
            return;
        }

        PopulationRanking business = service.getPopulationRankingPort();
        CountryData country = business.getCountryData(rank);

        //取得した値の確認
        if (country == null){
            RequestDispatcher errRd = sc.getRequestDispatcher("/error.jsp");
            errRd.forward(request, response);
            return;
        }

        sc.setAttribute("ranking", country);

        RequestDispatcher outRd = sc.getRequestDispatcher("/result.jsp");
        outRd.forward(request, response);
    }
}

6) アプリケーションの動作確認

6-1) プロジェクトとサーバの関連付け

クライアント作成の準備として実施しているため、実施する必要はありません。

6-2) ブレークポイントの設定

WebサービスクラスのgetCountryData()メソッドの先頭行にブレークポイントを設定します。ブレークポイントは、エディタの左側のルーラー部分をダブルクリックして、設定または解除します。

6-3) サーバの起動

サーバビューでサーバを選択し、コンテキストメニューから[デバッグ]を選択します。

ポイント

  • デバッガを使用せず単純にアプリケーションを起動したい場合には、コンテキストメニューから[開始]を選択します。

  • サーバビューに配備先となるサーバが登録されていない場合は、サーバを追加する必要があります。サーバを追加する方法については、"6.2.7 アプリケーションの動作確認"を参照してください。

サーバが始動する際に自動的にEARファイルが配備されます。

サーバビューで以下の情報を確認してください。

確認項目

確認内容

サーバの状態

デバッグ

サーバの状況

同期済み

EARファイル(WebServiceEARSample7)の状況

同期済み

EARファイル配下のWARファイル(WebServiceSample7)の状況

同期済み

EARファイル配下のWARファイル(WebServiceClientSample7)の状況

同期済み

6-4) アプリケーションの実行

サーバビューで、配備されているWebプロジェクト(WebServiceClientSample7)を選択して、コンテキストメニューから[Webブラウザ]を選択します。Webブラウザが起動されて、入力画面が開きます。

設定項目

設定内容(例)

入力画面のURL

http://localhost/WebServiceClientSample7/

[順位:]の入力フィールドに人口ランキングの順位を入力して、[OK]をクリックします。

注意

接続確認のURLに指定されるポート番号については、"6.2.7 アプリケーションの動作確認"のHTTPポート番号を参照してください。

ポイント

プロジェクトを選択し、コンテキストメニューから[実行] > [サーバーで実行]または[デバッグ] > [サーバーでデバッグ]を選択することで、サーバの追加、プロジェクトの追加、サーバの起動、クライアントの起動をまとめて行うことができます。
また、クライアントとして使用するWebブラウザは、メニュー [ウィンドウ] > [Web ブラウザ] から変更することができます。

6-5) アプリケーションのデバッグ

アプリケーションが動作し、ブレークポイントで中断されます。変数ビューの表示を確認します。メニューから[実行] > [ステップ・オーバー]を選択し、変数ビューでプログラムの状況を確認します。
デバッグについては、"6.2.7.1 デバッグする"を参照してください。

ポイント

変数ビューでは値の確認だけでなく、変更も行うことができます。

デバッガで中断している処理は、メニューから[実行] > [再開]を選択することで再開され、サーバ側での処理が終了し、Webブラウザに出力画面が表示されます。入力した順位の国名と総人口が表示されることを確認してください。

7) 運用環境へのアプリケーションの配布

このアプリケーションを運用環境に配布するには、EARファイルを作成する必要があります。作成したEARファイルは、サーバの配備機能を利用して、サーバに配備します。

7-1) アプリケーションエクスポート

EARファイルの作成は、エクスポートウィザードから行います。エクスポートウィザードを起動するには、[ファイル] > [エクスポート]を選択します。[エクスポート]ウィザードから[Java EE] > [EARファイル]を選択し、[次へ]をクリックします。

[EARエクスポート]ページが表示されます。

以下の設定項目を確認、入力してください。以下の情報を設定後、[完了]をクリックします。

設定項目

設定内容

EAR プロジェクト

エンタープライズアプリケーションプロジェクトを指定します。

宛先

EARファイルの作成先を指定します。

"Interstage Application Server V12.0 (Java EE 7)"の場合、[エクスポート]ウィザードの[特定のサーバー・ランタイムに最適化]の指定は、エクスポート結果に影響しません。

7-2) 運用環境への配布

運用環境のInterstage Java EE 7管理コンソールにログインし、ローカルにあるEARファイルを指定することにより、リモート環境から運用環境に配備を行うことができます。