SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

japan.internet.com翻訳記事

Eclipse RCPとSpringによる実用的なシッククライアントの構築

シッククライアントのGUI構築の省力化

アプリケーションにSpring Remotingを追加する

 前回の記事で構築したStockTradeServerプロジェクトに要求を送るために、EclipseリッチクライアントにSpringを追加します。

 まず、Eclipseプラグイン/RCPアプリケーションを開発しているときにサードパーティライブラリを追加する場合は、別のプラグインを使う方法をお勧めします。こうすれば、プロジェクトを作成するたびにサードパーティのjarを追加する必要がなく、プラグイン/RCPプロジェクトとサードパーティライブラリのプロジェクトとの依存関係を作成するだけで済みます。最も、これは言うほど簡単なことではありません。Eclipseのクラスローダーに慣れていない場合は、こちらを参照してください。要するに、プラグインの依存関係の中でクラスが互いを検出できるようにするために、2つの追加手順を実行する必要があります。

  1. Eclipseで新しいプラグインプロジェクトを作成します。この新しいプロジェクトの名前を「SpringClient」として、次の値を設定します。
  2. ID = SpringClient
    Class = springClient.SpringClientPlugin
    
    プラグインプロパティを入力し終えたら、[Finish]をクリックします。SpringClientプラグインプロジェクトの主な目的はSpringのライブラリとSpring関連のサービスクラスを保持することなので、テンプレートは不要です。
  3. spring-framework-1.2.8ディストリビューションを解凍すると、次のjarが入っています。これらのjarをすべて「SpringClient」ディレクトリのルートにコピーします。
    • spring-aop.jar ―― 「dist」フォルダ
    • spring-beans.jar ―― 「dist」フォルダ
    • spring-context.jar ―― 「dist」フォルダ
    • spring-core.jar ―― 「dist」フォルダ
    • spring-remoting.jar ―― 「dist」フォルダ
    • commons-logging.jar ―― 「lib\jakarta-commons」フォルダ
    • log4j-1.2.13.jar ―― 「lib\log4j」フォルダ
  4. Eclipseのパッケージエクスプローラで、SpringClientを右クリックしてプロジェクトプロパティを開きます。[Java Build Path]を選択し、[Libraries]タブをクリックし、[Add JARs]ボタンで先ほど追加したjarをすべて追加します。これらのライブラリをエクスポートすることも確認します。[Order and Export]タブをクリックし、すべてのライブラリのチェックボックスをオンにします(図9を参照)。こうしておけば、SpringClientとのプロジェクト依存関係を作成したときに、Springのjarとログのjarも確実に利用できるようになります。最後に[OK]をクリックします。
  5. 図9 サードパーティライブラリをエクスポートする
    図9 サードパーティライブラリをエクスポートする
  6. 次に、SpringClientのマニフェストに変更を加える必要があります。パッケージエクスプローラで、[SpringClient]-[META-INF]をクリックし、「MANIFEST.MF」を開きます。[Runtime]タブをクリックし、[Classpath]エリアで[Add]をクリックします。Springのjarとログのjarをすべて選択し、[OK]をクリックします。次に、[Exported Packages]セクションで[Add]をクリックします。エクスポート対象のパッケージをすべて選択し、[OK]をクリックします(図10を参照)。
  7. 図10 プラグインクラスパスにサードパーティライブラリを追加してパッケージをエクスポートする
    図10 プラグインクラスパスにサードパーティライブラリを追加してパッケージをエクスポートする
    前にも述べたとおり、Eclipseのクラスローダーはたびたび問題を起こすことがあります。これを修正するため、[MANIFEST.MF]タブをクリックして次の行を追加します。
    Eclipse-BuddyPolicy: registered
    
  8. 次に、Springの構成ファイルを追加します。パッケージエクスプローラで、「src」ディレクトリに移動し、「applicationContext.xml」という新しいファイルを作成して、次の行を追加します。
  9. 「src」ディレクトリの下にも「beanRefFactory.xml」という新しいファイルを作成し、次の行を追加します。
    おや、と思った場合は正解です。これらのファイルはstocktradeserverプロジェクトのユニットテストで使用したものと同じSpringの構成ファイルで、名前を「applicationContext.xml」に変更しただけです。
  10. 簡潔にするため、stocktradeserverプロジェクトからSpringClientの「src」ディレクトリにクラスをコピーします。SpringClientの「src」ディレクトリの下にパッケージstephenlum.services.stockとstephenlum.services.stock.dtoを作成します。
  11. この記事のダウンロードサンプルまたは前回の記事を参照し、stephenlum.services.stockの下にクラスStockService.javaをコピーします。次に、stephenlum.services.stock.dtoの下にクラスStockDTO.javaをコピーします(図11を参照)。
    図11 実行後のパッケージエクスプローラ画面
    図11 実行後のパッケージエクスプローラ画面
  12. クラスSpringClientPluginに、Springのアプリケーションコンテキストを読み込むコードを追加します。このコードはコンストラクタに追加します。新しいSpringClientPluginクラスは次のようになります。
  13. package springClient;
    
    import org.eclipse.jface.resource.ImageDescriptor;
    import org.eclipse.ui.plugin.AbstractUIPlugin;
    import org.osgi.framework.BundleContext;
    import org.springframework.beans.factory.BeanFactory;
    import org.springframework.beans.factory.access.BeanFactoryLocator;
    import org.springframework.beans.factory.access.BeanFactoryReference;
    import org.springframework.beans.factory.access.SingletonBeanFactoryLocator;
    
    /**
     * The main plugin class to be used in the desktop.
     */
    public class SpringClientPlugin extends AbstractUIPlugin {
        private BeanFactory beanFactory;
    
        //The shared instance.
        private static SpringClientPlugin plugin;
    
        /**
         * The constructor.
         */
        public SpringClientPlugin() {
            plugin = this;
            BeanFactoryLocator beanFactoryLocator =
    SingletonBeanFactoryLocator.getInstance();
            BeanFactoryReference beanFactoryReference =
     beanFactoryLocator.useBeanFactory("ctx");
            beanFactory = beanFactoryReference.getFactory();
        }
    
        /**
         * This method is called upon plug-in activation
         */
        public void start(BundleContext context) throws Exception {
            super.start(context);
        }
    
        /**
         * This method is called when the plug-in is stopped
         */
        public void stop(BundleContext context) throws Exception {
            super.stop(context);
            plugin = null;
        }
    
        /**
         * Returns the shared instance.
         */
        public static SpringClientPlugin getDefault() {
            return plugin;
        }
    
        /**
         * Returns an image descriptor for the image file at the given
         * plug-in relative path.
         *
         * @param path the path
         * @return the image descriptor
         */
        public static ImageDescriptor getImageDescriptor(String path) {
            return AbstractUIPlugin.
                imageDescriptorFromPlugin("SpringClient", path);
        }
    
        public BeanFactory getBeanFactory() {
            return beanFactory;
        }
    }
    
  14. 最後に、プロジェクトEclipseTradeClientが新しいプラグインプロジェクトSpringClientに依存するように依存関係を追加します。プロジェクトEclipseTradeClientで、「plugin.xml」を開き、[Dependencies]タブをクリックします。[Required Plug-ins]セクションで、[Add]をクリックし、SpringClient (1.0.0)を選択して、[OK]をクリックします(図12を参照)。
  15. 図12 必須プラグインとしてSpringClientを追加する
    図12 必須プラグインとしてSpringClientを追加する
    次に、Eclipseのバディポリシーに関してEclipseTradeClientマニフェストファイルにコードを追加する必要があります。ファイル「plugin.xml」で、[MANIFEST.MF]タブをクリックし、次のエントリを追加します。
    Eclipse-RegisterBuddy: SpringClient
    

次のページ
新しいWatchListViewを作成する

この記事は参考になりましたか?

japan.internet.com翻訳記事連載記事一覧

もっと読む

この記事の著者

japan.internet.com(ジャパンインターネットコム)

japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.comEarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

Stephen Lum(Stephen Lum)

ロンドンの投資銀行の上級開発者。Javaのプログラミング経験は7年に及ぶ。SunのJavaプログラマ認定資格とOracleの開発者認定資格のほか、CPAの資格を持つ。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/528 2006/08/24 00:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー