2012-11-27 18 views
7

私の設定は次のとおりです。OSGi + Logback + slf4j - Eclipse実行コンフィギュレーション

私たちはOSGiアプリケーションを開発しており、ロギングを含めたいと考えています。私はslf4j + logbackを使うことに決めました。

EclipseをIDEとTychoとして使用しており、マニフェストエディタなどのEclipse IDEを利用しています。

だから私は次のことを試してみました:

は、以下のManifest.mfと新しいプラグイン作成:私は実行するために移動したときに今

Manifest-Version: 1.0 
Bundle-ManifestVersion: 2 
Bundle-Name: Createcommand 
Bundle-SymbolicName: de.hswt.oms.ws.wsr.createcommand 
Bundle-Version: 1.0.0.qualifier 
Bundle-RequiredExecutionEnvironment: JavaSE-1.7 
Import-Package: de.hswt.oms.ws.command.wsr, 
de.hswt.oms.ws.ds.core.data.impl, 
org.slf4j 
Service-Component: OSGI-INF/component.xml 

を - >実行構成 - >のOSGiフレームワークと私を選択バンドルして "Add Required Plugins"をクリックすると、100以上のバンドルが選択され、多くのエラーと例外が発生します。

  • logback-古典-1.0.7
  • logback-コア-1.0.7
  • COM:

    は、だから私は、次の3つのjarファイルが含まれる既存のジャーからの新しいプラグインを思い付きました。 springsource.slf4j.api-1.6.1(これはいい考えですが、ちょっと...)

新しい実行コンフィギュレーションを手動で作成する場合は、「必要なバンドルを追加」をクリックしないと期待されていますが、私がクリックすると "add requir私がOSGiアプリケーションでログバックとslf4jを有効にして使用するにはどうすればよいですか?(例えば、いくつかのJettyのものがあります)

日食の中でそれを正しく構成する?

詳細が必要な場合はお気軽にお問い合わせください。

答えて

8

AFAIK現在の公式Logback/SLF4J jarsのバンドルマニフェストヘッダーにはいくつかの問題があります。ただし、次の3つのjar/bundleしか必要ありません。基本機能のために他のものは必要ありません。 Eclipseので

  • SLF4JのAPI
  • Logbackコア
  • Logbackクラシック

我々はプロジェクト間で再利用のために軌道にバンドルを置きます。我々は有益であると考えるマニフェストヘッダにいくつかの変更を適用する。たとえば、元のSLF4J API jarの循環依存性を避けるために、実際のSLF4Jバインディングをフラグメントとして配信します。ここで

はバンドルへのダウンロードリンクは以下のとおりです。

あなたはまたしたいことがあります。

"必要なプラグインを追加しますが、" スマートではないことに注意してください十分な。プラグインが多すぎたり少なすぎたりする可能性があります。サービスAPIが1つのバンドルで提供されることもありますが、実際のサービス実装は第2のバンドルで提供されることがあります。そのバンドルは選択できません。

0

Eclipse Equinoxで使用したい場合は、Eclipse-BuddyPolicyを試すことができます。これにより、1つのプラグインが別のプラグインからすべてのクラスを明示的にインポートせずに読み込むことができます。 これにより、問題が解決する場合があります。ログを使用して

とバンドルへ

のEclipse-RegisterBuddy依存:COM

のEclipse-BuddyPolicy:jarファイルをバンドルからあなたのマニフェストに

追加その他。プラグイン

参照http://help.eclipse.org/juno/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Freference%2Fmisc%2Fbundle_manifest.html

+2

バディポリシーはOSGiではありません!そして、それは基本的にあなたをJar地獄に戻します... –

2

[オプションのインポートの解決]のようなチェックボックスがあります。これはデフォルトではオンになっていますが、ほとんどすべてのことを追加したいと思うように、あなたが描いている動作になります。

オフにすると役立ちます。また、PDEは必要のないフラグメントをたくさん追加する傾向があります。

私はまれに実行時に「正しい」バンドルを追加してEclipseを信頼します。私はちょうど 'validate'を使用して手動で必要なものを追加し、もう一度チェックします。数分かかるかもしれませんが、PDEに残したときに何がうまくいかなかったかを把握するには数時間かかることがあります。

関連する問題