2012-08-07 11 views

答えて

10

OSGiシェルを使用するか、アプリケーションからプログラムで対話的に使用するかどうかによって異なります。

対話的

あなたはEquinox consoleを使用することができます。 「サービス」を参照してください。デプロイしたサービスのみを表示するには、LDAPフィルタを使用する必要があります。ここでは例です:

(objectClass=my.package.name.*) 

はまた、あなたがちょうど(あなたがそれを知っていると仮定すると、それを見つけるのは簡単です)バンドルIDによって制約することができますように簡単かもしれない@Neilバートレットの回答を参照してください。

プログラムにより

ServiceTrackerのアプローチを使用してください。 Neil also wrote all about thisので、あまりにも彼にあなたupvotesを与えることを確認してください:)

+0

eclipse osgiサービスが実行されているようです。私が導入した私のosgiアプリケーションからのサービスを見たいと思います。これを行う方法はありますか? – user840930

+0

もう一度、フィルタを使用してそれらをぼかす必要があります。また、いくつかのコンソール(私はEquinoxコンソールについてはわかりません)では、ソースバンドルでフィルタリングすることができます... Neilの2番目のコードサンプルがこの例です。 –

11

ゴーゴーシェル型から:

inspect cap service 

すべてのバンドルで登録されているすべてのサービスを表示すること。あなたが特定のバンドルのためのサービスを表示したい場合は次のように入力します。あなたが断然

1

に興味がある、と私ははるかに意味、最高の<id>は、バンドルの数値のバンドルIDです

inspect cap service <id> 

をway をご覧ください。Apache Felix Webconsoleをサービスとしています。XRayをインストールしてください。このバンドルについて私のfirstsecond blogを読んでみてください。

0

あなただけ既に登録されているが、開始されていない特定のサービスを開始し、それを動的に開始したいと思い探している場合は、使用してバンドルを得ることができる。そして、

Bundle bundle = Platform.getBundle("com.example.com.class"); 

//バンドルを開始

bundle.start(); 

//によると、サービス参照

ServiceReference<IExampleService> serviceReference = b.getBundleContext().getServiceReference(IExampleService.class); 
0

をチェック[API docs] [1] getContext().getAllServiceReferences(clazz, filter)メソッドを呼び出すと、指定されたクラスの下に登録され、指定されたフィルタ式に一致するすべてのサービスのリストを取得できます。両方のパラメータにnullを渡すと、すべてのサービスが取得されます。

関連する問題