>  > 2輪 Nプロジェクト ベンチュラ ベースセット BSY039B JAN:4560190792360 ブラック ヤマハ XTZ750A 1990年

2輪 Nプロジェクト ベンチュラ ベースセット BSY039B JAN:4560190792360 ブラック ヤマハ XTZ750A 1990年

2輪 Nプロジェクト ベンチュラ ベースセット BSY039B JAN:4560190792360 ブラック 05/8~ ヤマハ 501295-0002》 XTZ750A 1990年

<<   作成日時 : 2014/04/02 15:54  

トラックバック 0 / コメント 0

OSGiのバンドルは、他のバンドルに何らかのサービスを提供するものです。そのサービスは、サービス提供側のバンドルが、サービスを使う側のバンドルに、サービスを提供する目的のオブジェクト(サービスコンポーネントと呼ばれます)を渡すことで実現されます。これを「サービスを引き込む」とか、「注入する」とか言ったりします。

普通のOSGiの場合 【送料無料】 215/35R19 19インチ CRIMSON クリムソン RS CV FIN マルチピース 8J 8.00-19 DUNLOP ダンロップ ルマン V(ファイブ) サマータイヤ ホイール4本セット、サービス提供側のバンドルが、サービスを提供するためのオブジェクト(サービスコンポーネントオブジェクト)をOSGiのフレームワークに登録し、サービスを使う側のバンドルは、そのオブジェクトをOSGiのフレームワークから取得することで実現されます。( 【国産タイヤ・アルミホイール 新品 4本セット】◆マルカサービス RMP 028F◆245/35R19 19インチ275/30R19 19インチ (245/35-19 275/30-19)新品ヨコハマ アドバン デシベル 【バランス調整済み!】 パーツOSGiバンドルがサービスを提供する参照)

まぁ、サービス提供側と使う側のバンドルが1対1、またはそれに準じる単純な関係であれば、このようなやり方でもさして問題にならないのですが、多くのバンドルが、それぞれサービスを提供し、提供されるような、複雑に交錯する関係を持つような場合(ある程度の規模のソフトであれば、通常はそうなりますが・・・)であれば、

2輪 Nプロジェクト ベンチュラ ベースセット BSY039B JAN:4560190792360 ブラック ヤマハ XTZ750A 1990年

設定色:ブラック バイク 二輪 モーター サイクル オートバイ 2輪車 二輪車 モーターバイク モーターサイクル motorcycle motorbike autobicycle ナップスNプロジェクト エヌプロジェクト N-PROJECT YAMAHA ヤマハ発動機 ツーリングギア ヴェンチュラ NPROJECT

入数:1セット

土台となるLブラケットとグラブハンドルの基本的なセットです。各車種専用設計ですので、ボルトオンで装着可能です。
パックフレームまたはスポーツラックを使用しないときは、安全のため必ずグラブハンドルを装着してください。

※一部車種は車体側の加工が必要となります。

こちらの商品は、受注生産です。

商品の詳細な情報については、メーカーサイトでご確認ください。

、バンドルがサービスを提供するタイミングと、サービスを使う側がそれを引き込むタイミングが問題になってきます。つまり 、・・・当たり前のことですが・・・サービスを提供するコンポーネントが登録されるより前に、使う側でそれを引き込むことはできない、ということですね。

この問題を解決すべく、わりと最近になって登場したのが「OSGi宣言型サービス(Declaretive Service 略してDS)」です。そのDSを使って、前回(OSGiバンドルがサービスを提供する)と同じことをやってみよう スポーツ・アウトドア 防炎B02ボディカバー No.5 シルバー、という寸法ですが、その前に基本の基本ということで、DS版Hello Worldを作成してみます。OSGi宣言型サービスはバンドル間でサービスを提供する/されるものですが、このサンプルでは単にDSのフレームワーク上でバンドルが動いて標準出力にメッセージをプリントするだけのシンプルなものです。

まず、例によってバンドルを作成します。プロジェクト名はosgitrial101とします。ただし、今回はActivatorは作成しません。
MANIFEST.MFは以下のようになります。
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Osgitrial101
Bundle-SymbolicName: osgitrial101
Bundle-Version: 1.0.0.qualifier
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Service-Component: OSGI-INF/Hello.xml

前回までのOSGiの例にあったImport-Package: org.osgi.framework;version="1.7.0"は不要です。この宣言は作成するバンドルでorg.osgi.frameworkパッケージにあるクラスやインタフェースを使うために必要だったのですが、このHello Worldサンプルではそういうものは使わないので不要です。
代わりにService-Component: OSGI-INF/hello.xmlの一文を追加します。これは、DSコンポーネントを定義するファイル(コンポーネント定義、またはコンポーネントXML)のありかを示します。コンポーネント定義は通常OSGI-INFディレクトリの下に置くのが慣例となっています。なので、ここでもその慣例に従っています。

拡張子が示すように、コンポーネント定義はXML形式です。
Hello.xmlの内容は以下のとおりです。
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="Hello">
  <implementation class="osgitrial101.Hello"/>
</scr:component>

1行目はXMLの呪文です。エンコーディングはUTF-8でないといけないことになっています。
2行目も呪文と思っていいのですが、名前を定義しています。
3行目の<implementation>要素で、このバンドルの実装クラスを指定しています。バンドルが活性化されるときに 車種別専用フロアマット CALMAT(キャルマット) トヨタ マークX フィアット 500 20年3~ 右ハンドル車-LUXブラック、DSのフレームワークによってこのクラスのインスタンスが生成されます。なので、ここで指定した実装クラスにはpublicなデフォルトコンストラクタが必要です。

ということで ディクセル EXTRA Speed ブレーキパッド フロント メルセデス・ベンツ W212(ワゴン) E550 212273 4.7 V8 TURBO 2011年11月~、次にその実装クラスです。
package osgitrial101;
public class Hello {
    public void activate() {
        System.out.println("Hello DS.");
    }
    public void deactivate() {
        System.out.println("Goodbye DS");
    }
}

DSのフレームワークがこのクラスのインスタンスを生成できるようにするために、サービスコンポーネントの実装クラスには引数なしのデフォルトコンストラクタが必要です。上のHelloの例ではデフォルトコンストラクタを定義していませんが、コンパイラによって自動的に作成されます。これはJavaの基本ですね。ついでに言っておくと、引数付きコンストラクタを別途定義した場合には、明示的に引数なしのコンストラクタを定義しなければなりませんよ。
activate()、deactivateは、このクラスのインスタンスが活性化、非活性化したときに起動されるメソッドです。今回は、activate()メソッドの中でHello~を標準出力するようにしています。
すでにお気づきかもしれませんが、このHelloクラスは特別なインタフェースをインプリメントしたり、クラスを継承したりしていません。なので、activate()やdeactivate()はスーパークラスのメソッドのオーバーライドではなく、素のメソッドです。DSのフレームワークは、この名前のメソッドがあれば、リフレクションを使って、バンドルの活性化時、非活性化時にこれらを起動します。

次にDS版Hello Worldを動かすための実行構成です。
ターゲット・プラットフォームとして、以下のバンドルを選択します。org.eclipse.osgiとorg.eclipse.equinox.dsを選択してから[必須バンドルの追加]ボタンを押せば、これらのバンドルが選択されるはずです。

javax.servlet
org.eclipse.equinox.ds
org.eclipse.equinox.event
org.eclipse.equinox.util
org.eclipse.osgi
org.eclipse.osgi.services

実行すると、コンソールウィンドゥに
osgi> Hello DS.
のように出力されます。

今回のサンプルは [旧ブリッド]フェラーリ308GTB/308GTS用シートレール、あまりにも単純すぎて、バンドル間のサービスの生成と引き込みを簡単化する、というDSの本来の目的が、いかにして達成されているか、

2輪 Nプロジェクト ベンチュラ ベースセット BSY039B JAN:4560190792360 ブラック ヤマハ XTZ750A 1990年

、ほとんどわかりませんよね。そこの部分については次回ということで。

テーマ

関連テーマ 一覧


月別リンク

OSGi DS(宣言型サービス)版Hello World 景禎のTips/BIGLOBEウェブリブログ
文字サイズ: 大  中  小  閉じる {yahoojp} {cagesada.at.webry.info}
{yahoojp}jpprem01-zenjp40-wl-zd-27732