corner imagecorner image
FeaturesPluginsDocs & SupportCommunityPartners

エンドツーエンドのバイナリ SOAP アタッチメント 3: Web サービスの作成

このチュートリアルの目標は、Web サービスを含む Web アプリケーションを作成することです。イメージを取得するために、前に作成した EJB モジュールに Web サービスを移譲する必要があります。したがって、EJB モジュールを Web アプリケーションのクラスパスに指定する必要があります。

チュートリアルの内容

このページの内容は NetBeans IDE 6.1 が対象です
  1. 概要
  2. EJB モジュールの作成
  3. => Web サービスの作成
  4. Web サービスのテスト
  5. バイナリデータを渡すためのスキーマと WSDL ファイルの変更
  6. Swing クライアントの作成
  7. Web サービスのログ作成および最適化

Web サービスの作成

次の手順では、この学習用の Web サービスを作成します。この Web サービスでは、前に作成した EJB モジュールを使用してバイナリデータを取得します。

Web サービスを作成するには、次の手順に従います。

  1. 「ファイル」>「新規プロジェクト」(Ctrl-Shift-N) を選択します。「新規プロジェクト」ウィザードが表示さます。「Web」カテゴリから「Web アプリケーション」を選択します。「次へ」をクリックします。「名前と場所」ページが開きます。
  2. 「プロジェクト名」フィールドに「FlowerService」と入力します。このプロジェクトの保存先を選択します。このエンドツーエンドアプリケーション用に作成するほかのプロジェクトと同じ場所を使用します。その他のオプションについては、デフォルトの設定を使用し、「次へ」をクリックします。「サーバーと設定」ページが開きます。
  3. アプリケーションサーバーと Java EE バージョンを選択します。これは、このエンドツーエンドアプリケーションのすべてのプロジェクトで同じである必要があります。「完了」をクリックします。IDE により新しい Web アプリケーションプロジェクトが作成されます。
  4. Web アプリケーションプロジェクトのクラスパスに EJB モジュールを指定することで、作成中の Web サービスが EJB モジュールにアクセスできるようにします。まず、Web アプリケーションの「ライブラリ」ノードを右クリックし、次に示すように「プロジェクトを追加」を選択します。


    「ライブラリ」ノードのコンテキストメニューに表示される「ライブラリを追加」

    次に、EJB モジュールを参照し、選択します。これで、EJB モジュール用の新しいノードが表示され、次に示すように Web アプリケーションの「ライブラリ」ノードに追加されます。


    「ライブラリ」ノードに表示される新しい FlowerAlbum の EJB モジュールのサブノード

  5. 「FlowerService」ノードを右クリックし、「新規」>「Web サービス」を選択します。または、「新規」>「その他」を選択し、「新規ファイル」ウィザードの「Web サービス」の下にある「Web サービス」を選択します。「新規 Web サービス」ウィザードが開きます。
  6. 「新規 Web サービス」ウィザードで、「Web サービス名」に「FlowerService」と入力し、「パッケージ名」に「flower.album」と入力します。「既存のセッション Bean から Web サービスを作成」を選択し、次に示すように EJB モジュールを参照して選択します。


    結果

  7. 「エンタープライズ Bean を参照」ダイアログで「了解」をクリックします。「新規 Web サービス」ウィザードに戻ります。「完了」をクリックします。次に示すように、IDE によって、EJB モジュールから取得したメソッドのスタブを含むアプリケーションに Web サービスのインフラストラクチャーが追加されます。


    新しい FlowerService の Java ソースビュー

  8. エディタの左上隅にある「デザイン」トグルボタンをクリックします。次に示すように、Web サービスのビジュアルデザイナが表示されます。


    新しい FlowerService の Web サービスデザイナの GUI ビュー

    Web サービスのビジュアルデザイナを使用すると、Web サービスの構造をひとめで把握することができます。さらに、「オペレーションを追加」などのボタンをクリックすることで、Web サービスに機能を追加できます。「サービス品質」セクションでは、Web サービスのセキュリティーなどの高度な機能を簡単に有効にすることができます。

  9. 「ソース」トグルボタンをクリックし、「ソース」ビューに戻ります。次のようにクラスを書き換えます。
    @WebService(serviceName = "FlowerService")
    
    public class FlowerService {
    
        @EJB
        private FlowerRemote ejbRef;
    
        @WebMethod(operationName = "getFlower")
        public Image getFlower(String name) throws IOException {
            byte[] bytes = ejbRef.getFlower(name);
            return getImage(bytes, false);
        }
    
        @WebMethod(operationName = "getThumbnails")
        public List<Image> getThumbnails() throws IOException {
            List<byte[]> flowers = ejbRef.allFlowers();
            List<Image> flowerList = new ArrayList<Image>(flowers.size());
            for (byte[] flower : flowers) {
                flowerList.add(getImage(flower, true));
            }
            return flowerList;
        }
    
        private Image getImage(byte[] bytes, boolean isThumbnail) throws IOException {
            ByteArrayInputStream bis = new ByteArrayInputStream(bytes);
            Iterator readers = ImageIO.getImageReadersByFormatName("jpeg");
            ImageReader reader = (ImageReader) readers.next();
            Object source = bis; // File or InputStream
            ImageInputStream iis = ImageIO.createImageInputStream(source);
            reader.setInput(iis, true);
            ImageReadParam param = reader.getDefaultReadParam();
            if (isThumbnail) {
                param.setSourceSubsampling(4, 4, 0, 0);
            }
            return reader.read(0, param);
        }
    
                }

これで Web サービスは完了です。EJB モジュールに委譲し、そのイメージを公開しました。

次の手順:

Web サービスのテスト


メーリングリストに登録することによって、NetBeans IDE Java EE 開発機能に関するご意見やご提案を送信したり、サポートを受けたり、最新の開発情報を入手したりできます。

Companion
Projects:
MySQL Database Server   GlassFish Community: an Open Source Application Server   Open Solaris  Open JDK: an Open SourceJDK   Mobile & Embedded Community     Sponsored by 
Sponsored by Sun Microsystems